Quellcode durchsuchen

增加手动同步商品编码功能

sh4wmoo vor 3 Jahren
Ursprung
Commit
73d63344e3

+ 81 - 1
src/main/java/com/dk/mnls_mp/controller/mnls/IBOSSGoodsCodeController.java

@@ -1,10 +1,35 @@
 package com.dk.mnls_mp.controller.mnls;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dk.mnls_mp.infrastructure.convert.IBOSSGoodsCodeConvert;
+import com.dk.mnls_mp.mapper.basic.CodeRecordMapper;
+import com.dk.mnls_mp.mapper.basic.CustomerMapper;
+import com.dk.mnls_mp.mapper.basic.SynchStatusMapper;
+import com.dk.mnls_mp.mapper.mnls.IBOSSGoodsCodeMapper;
+import com.dk.mnls_mp.model.pojo.basic.Customer;
+import com.dk.mnls_mp.model.pojo.basic.SynchStatus;
+import com.dk.mnls_mp.model.pojo.mnls.IBOSSGoodsCode;
+import com.dk.mnls_mp.model.vo.IBOSSGoodsCodeVO;
+import com.dk.mnls_mp.service.mnls.SyncIBOSSGoodsCode;
+import com.dongke.base.exceptionHandler.ResponseCodeEnum;
+import com.dongke.base.exceptionHandler.ResponseResultUtil;
+import com.dongke.base.exceptionHandler.ResponseResultVO;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * iBOSS商品编码表 前端控制器
@@ -13,8 +38,63 @@ import org.springframework.web.bind.annotation.RestController;
  * @author 张潇木
  * @since 2022-09-23
  */
+@CrossOrigin(
+        origins = {"*"},
+        allowCredentials = "true"
+)
+@Slf4j
 @RestController
-@RequestMapping("/iboss-goods-code")
+@RequestMapping("/iboss_goods_code")
 public class IBOSSGoodsCodeController {
 
+    @Autowired
+    CustomerMapper customerMapper;
+
+    @Autowired
+    CodeRecordMapper codeRecordMapper;
+
+    @Autowired
+    IBOSSGoodsCodeConvert IBOSSGoodsCodeConvert;
+
+    @Autowired
+    IBOSSGoodsCodeMapper IBOSSGoodsCodeMapper;
+
+    @Autowired
+    SynchStatusMapper synchStatusMapper;
+
+    @Autowired
+    SyncIBOSSGoodsCode syncIBOSSGoodsCode;
+
+    @ApiOperation(value = "手动同步商品编码", notes = "手动同步商品编码")
+    @PostMapping({"/sync_goods_code_by_hand"})
+    public ResponseResultVO syncGoodsCodeByHand(){
+        //查询同步客户
+        List<Customer> customers = customerMapper.selectAllCus();
+        //定义插入履历参数
+        Map syncRecord=new HashMap(4){{put("CreateTime", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now()));}};
+        //插入同步履历
+        codeRecordMapper.insertResult(syncRecord);
+        //获取同步总表id
+        int syncId = Integer.valueOf(syncRecord.get("syncId").toString());
+        //获取需要同步的编码
+        //todo 同步的是当天的新编码,可优化为从上一次同步成功开始查
+        List<IBOSSGoodsCodeVO> list = IBOSSGoodsCodeConvert.goodsCodePO2IBOSSVO(IBOSSGoodsCodeMapper.selectList(new QueryWrapper<IBOSSGoodsCode>().lambda().gt(IBOSSGoodsCode::getCreateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDateTime.now()))));
+        //记录日志
+        log.info("需要同步的经销商数量=>{},经销商信息=>{}",customers.size(),customers);
+        log.info("需要同步的新编码数量=>{},编码明细=>{}",list.size(),list);
+        //有新编码需要同步,再调用接口同步
+        if(list.size()>0){
+            //todo 每个经销商每天的同步状态可能有失败的,此处可以优化为根据每个经销商的不同的同步情况,来同步不同的编码。
+            //循环同步所有经销商
+            for (Customer it : customers) {
+                //先插入同步履历明细
+                synchStatusMapper.insertDetail(new SynchStatus().setSynchid(syncId).setCustomerid(it.getCustomerid()).setStatus(0));
+                //调用同步接口
+                syncIBOSSGoodsCode.syncCode(it,syncId,list);
+            }
+            return ResponseResultUtil.success();
+        }else{
+            return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(),"无新编码需要同步");
+        }
+    }
 }