|
@@ -19,12 +19,16 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.img.ImgUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
-import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.http.HttpException;
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fhs.trans.service.impl.TransService;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -34,8 +38,11 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.api.SaBaseLoginUserApi;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
+import vip.xiaonuo.biz.core.sign.utils.MD5;
|
|
|
import vip.xiaonuo.biz.modular.bizappointmentrecord.entity.BizAppointmentRecord;
|
|
|
+import vip.xiaonuo.biz.modular.bizappointmentrecord.mapper.BizAppointmentRecordMapper;
|
|
|
import vip.xiaonuo.biz.modular.bizappointmentrecord.param.BizAppointmentExportResult;
|
|
|
+import vip.xiaonuo.biz.modular.bizappointmentrecord.service.BizAppointmentRecordService;
|
|
|
import vip.xiaonuo.biz.modular.bizconfig.entity.BizConfig;
|
|
|
import vip.xiaonuo.biz.modular.bizconfig.service.BizConfigService;
|
|
|
import vip.xiaonuo.biz.modular.bizorderconfig.entity.BizOrderConfig;
|
|
@@ -48,6 +55,8 @@ import vip.xiaonuo.biz.modular.bizorder.param.*;
|
|
|
import vip.xiaonuo.biz.modular.goodsConf.entity.BizGoodsConf;
|
|
|
import vip.xiaonuo.biz.modular.goodsConf.service.BizGoodsConfService;
|
|
|
import vip.xiaonuo.biz.modular.record.entity.BizRecord;
|
|
|
+import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
|
+import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
|
|
import vip.xiaonuo.biz.modular.utils.CommonExportUtil;
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
|
import vip.xiaonuo.common.page.CommonPageRequest;
|
|
@@ -59,7 +68,9 @@ import java.io.*;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.net.URL;
|
|
|
import java.net.URLConnection;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -90,6 +101,12 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
|
|
|
@Resource
|
|
|
private BizSaleOrderService bizSaleOrderService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private BizAppointmentRecordMapper bizAppointmentRecordMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BizUserService bizUserService;
|
|
|
+
|
|
|
@Resource(name = "loginUserApi")
|
|
|
private SaBaseLoginUserApi loginUserApi;
|
|
|
|
|
@@ -361,9 +378,12 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
|
|
|
orderConfigService.save(bizOrderConfig);
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
public void endOrder(BizOrderEditParam bizOrderEditParam) {
|
|
|
BizOrder bizOrder = this.queryEntity(bizOrderEditParam.getId());
|
|
|
+ //判断当前是否包运订单
|
|
|
+ checkEndParam(bizOrder);
|
|
|
if(bizOrder.getNetWeight().compareTo(BigDecimal.ZERO) != 0){
|
|
|
BigDecimal orderBalance = bizOrder.getOrderWeight().subtract(bizOrder.getNetWeight());
|
|
|
BigDecimal result = orderBalance.divide(bizOrder.getOrderWeight(),2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
|
|
@@ -377,6 +397,9 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
|
|
|
bizSaleOrder.setSaleStatus("3");
|
|
|
bizSaleOrderService.updateById(bizSaleOrder);
|
|
|
}
|
|
|
+
|
|
|
+ //上传订单给erp
|
|
|
+ sendOrderForErp(bizOrder);
|
|
|
}else{
|
|
|
bizOrder.setOrderStatus("5");
|
|
|
}
|
|
@@ -387,6 +410,92 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
|
|
|
this.updateById(bizOrder);
|
|
|
}
|
|
|
|
|
|
+ public void sendOrderForErp(BizOrder bizOrder){
|
|
|
+ String code = null;
|
|
|
+ String msg = null;
|
|
|
+ BigDecimal weight=new BigDecimal(0);
|
|
|
+ try {
|
|
|
+ String appId = "0ol2749zps9xhid1";
|
|
|
+ String appSecret = "e4w9ylwk7grdsdzpbcq8kcedg7ailh1c";
|
|
|
+ String nonce = "21459479202627653";
|
|
|
+ long timestamp = System.currentTimeMillis() / 1000;
|
|
|
+ String sign = getSign(appId, appSecret, nonce, timestamp + "");
|
|
|
+ Map<String,String> map = new HashMap<>();
|
|
|
+ map.put("appId",appId);
|
|
|
+ map.put("appSecret",appSecret);
|
|
|
+ map.put("nonce",nonce);
|
|
|
+ map.put("timestamp",timestamp+"");
|
|
|
+ map.put("signature",sign);
|
|
|
+
|
|
|
+
|
|
|
+ //根据订单查询销售订单信息
|
|
|
+ BizSaleOrder bizSaleOrder = bizSaleOrderService.queryEntity(bizOrder.getSaleOrderInfo());
|
|
|
+ Map<String,Object> paramMap = Maps.newHashMap();
|
|
|
+ paramMap.put("cCode",bizOrder.getId());
|
|
|
+ BizUser bizUser = bizUserService.queryEntity(bizOrder.getCreateUser());
|
|
|
+ paramMap.put("cMaker",bizUser.getName());
|
|
|
+ JSONObject object = new JSONObject();
|
|
|
+ object.put("iorderdid",bizSaleOrder.getRelationId());
|
|
|
+ object.put("cInvCode",bizSaleOrder.getSaleGoodsCode());
|
|
|
+ if(StringUtils.equals(bizOrder.getOrderType(),"1")){
|
|
|
+ //包运订单
|
|
|
+ weight = bizOrder.getShippingWeight();
|
|
|
+ //object.put("iQuantity",bizOrder.getShippingWeight());
|
|
|
+ }else{
|
|
|
+ //自提订单
|
|
|
+ weight = bizOrder.getNetWeight();
|
|
|
+ //object.put("iQuantity",bizOrder.getNetWeight());
|
|
|
+ }
|
|
|
+ weight = weight.divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP);
|
|
|
+ object.put("iQuantity",weight);
|
|
|
+ JSONArray array = new JSONArray();
|
|
|
+ array.add(object);
|
|
|
+ paramMap.put("details",array);
|
|
|
+
|
|
|
+ String result = HttpUtil.createPost("https://1072el542wi61.vicp.fun/api/erp/u8data/savesalefh")
|
|
|
+ .addHeaders(map).body(JSONObject.toJSONString(paramMap)).execute().body();
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ code = jsonObject.getString("code");
|
|
|
+ msg = jsonObject.getString("msg");
|
|
|
+ } catch (HttpException e) {
|
|
|
+ //throw new RuntimeException(e);
|
|
|
+ code = "1";
|
|
|
+ msg = "erp网络异常!";
|
|
|
+ }
|
|
|
+ log.info("订单结束上传erp,code:"+code+",msg:"+msg+",重量:"+weight);
|
|
|
+ if(!StringUtils.equals(code,"0")){
|
|
|
+ throw new CommonException(msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getSign(String appId,String appSecret,String nonce,String timestamp){
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
+ buffer.append("appId=").append(appId).append("&");
|
|
|
+ buffer.append("appSecret=").append(appSecret).append("&");
|
|
|
+ buffer.append("nonce=").append(nonce).append("&");
|
|
|
+ buffer.append("timestamp=").append(timestamp).append("&");
|
|
|
+ String sign = MD5.md5(buffer.toString());
|
|
|
+ return sign;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void checkEndParam(BizOrder bizOrder){
|
|
|
+ if(ObjectUtil.isNotNull(bizOrder)){
|
|
|
+ //判断当前是否是包运订单 1:包运订单 2:自提订单
|
|
|
+ if(StringUtils.equals(bizOrder.getOrderType(),"1")){
|
|
|
+ //查询订单所有预约信息
|
|
|
+ QueryWrapper<BizAppointmentRecord> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("bar.order_id",bizOrder.getId());
|
|
|
+ queryWrapper.eq("bar.delete_flag","NOT_DELETE");
|
|
|
+ queryWrapper.isNull("br.unload_weight");
|
|
|
+ List<BizAppointmentRecord> recordList = bizAppointmentRecordMapper.getRecordList(queryWrapper);
|
|
|
+ if(recordList.size()>0){
|
|
|
+ throw new CommonException("该订单下还有未完成回签的预约记录,不可以结束!");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void auditOrder(BizOrderEditParam bizOrderEditParam) {
|
|
|
BizOrder bizOrder = this.queryEntity(bizOrderEditParam.getId());
|
|
@@ -407,6 +516,9 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
|
|
|
bizSaleOrder.setSaleStatus("3");
|
|
|
bizSaleOrderService.updateById(bizSaleOrder);
|
|
|
}
|
|
|
+
|
|
|
+ //上传订单给erp
|
|
|
+ sendOrderForErp(bizOrder);
|
|
|
}
|
|
|
updateWrapper.eq("id",bizOrder.getId()).
|
|
|
set("order_status",status).
|