Sfoglia il codice sorgente

调整项目结构,一个类只做一件事(单一职责原则)

sh4wmoo 3 anni fa
parent
commit
e1f9f7f8b3

+ 3 - 5
src/main/java/com/dk/mnls_mp/controller/mnls/IBOSSOrderController.java

@@ -3,9 +3,7 @@ package com.dk.mnls_mp.controller.mnls;
 
 import com.dk.mnls_mp.infrastructure.base.UserRightCheck;
 import com.dk.mnls_mp.model.command.PurchaseOrderCreateCommand;
-import com.dk.mnls_mp.model.query.IbossDataQuery;
-import com.dk.mnls_mp.service.mnls.IBOSSDataService;
-import com.dk.mnls_mp.service.mnls.IBOSSOrderService;
+import com.dk.mnls_mp.service.mnls.SyncIBOSSOrderService;
 import com.dongke.base.exceptionHandler.ResponseResultVO;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +27,7 @@ import javax.validation.Valid;
 public class IBOSSOrderController {
 
     @Autowired
-    IBOSSOrderService IBOSSOrderService;
+    SyncIBOSSOrderService SyncIBOSSOrderService;
 
 
     /**
@@ -41,6 +39,6 @@ public class IBOSSOrderController {
     @PostMapping({"/create_purchase_order"})
     @UserRightCheck(code = "009002")
     public ResponseResultVO createPurchaseOrder(@Valid @RequestBody PurchaseOrderCreateCommand command) {
-        return IBOSSOrderService.createPurchaseOrder(command);
+        return SyncIBOSSOrderService.createPurchaseOrder(command);
     }
 }

+ 8 - 14
src/main/java/com/dk/mnls_mp/infrastructure/web/Scheduler.java

@@ -10,11 +10,10 @@ 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.basic.SynchFacService;
-import com.dk.mnls_mp.service.iboss.PullIbossDataService;
+import com.dk.mnls_mp.service.mnls.PullIBOSSDataService;
 import com.dk.mnls_mp.service.mnls.PullFacGoodsCodeService;
+import com.dk.mnls_mp.service.mnls.SyncIBOSSGoodsCode;
 import com.dk.mnls_mp.service.pullDetail.PullOrderDetailService;
-import com.dk.mnls_mp.service.synchCode.SynchCodeService;
 import com.dongke.base.exceptionHandler.ResponseResultVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,32 +30,27 @@ import java.util.Map;
 @Slf4j
 @Component
 public class Scheduler {
+
     @Autowired
     PullOrderDetailService pullOrderDetailService;
-
     @Autowired
     PullFacGoodsCodeService pullFacGoodsCodeService;
-
     @Autowired
     CustomerMapper customerMapper;
-
     @Autowired
     CodeFacRecordMapper codeFacRecordMapper;
-
     @Autowired
-    PullIbossDataService pullIbossDataService;
-
+    PullIBOSSDataService pullIBOSSDataService;
     @Autowired
     CodeRecordMapper codeRecordMapper;
-
     @Autowired
     SynchStatusMapper synchStatusMapper;
-
     @Autowired
     IBOSSGoodsCodeConvert IBOSSGoodsCodeConvert;
-
     @Autowired
     IBOSSGoodsCodeMapper IBOSSGoodsCodeMapper;
+    @Autowired
+    SyncIBOSSGoodsCode syncIBOSSGoodsCode;
 
     /**
      * @desc   : 00:00:01 定时调用拉取产品编码方法。
@@ -100,7 +94,7 @@ public class Scheduler {
                 //先插入同步履历明细
                 synchStatusMapper.insertDetail(new SynchStatus().setSynchid(syncId).setCustomerid(it.getCustomerid()).setStatus(0));
                 //调用同步接口
-                pullOrderDetailService.syncCode(it,syncId,list);
+                syncIBOSSGoodsCode.syncCode(it,syncId,list);
             }
         }else{
             log.info("无新编码需要同步");
@@ -115,7 +109,7 @@ public class Scheduler {
      */
     @Scheduled(cron = "30 0 0 * * ?")
     public void pullIBOSSData() {
-        pullIbossDataService.pullIbossData(Constant.PullDataType.INVENTORY,null);
+        pullIBOSSDataService.pullIbossData(Constant.PullDataType.INVENTORY,null);
     }
 
 

+ 4 - 4
src/main/java/com/dk/mnls_mp/service/basic/AsyncService.java

@@ -1,7 +1,7 @@
 package com.dk.mnls_mp.service.basic;
 
 import com.dk.mnls_mp.constant.Constant;
-import com.dk.mnls_mp.service.iboss.PullIbossDataService;
+import com.dk.mnls_mp.service.mnls.PullIBOSSDataService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -20,17 +20,17 @@ import java.util.Map;
 @Slf4j
 public class AsyncService {
     @Autowired
-    PullIbossDataService pullIbossDataService;
+    PullIBOSSDataService pullIBOSSDataService;
 
     public void AsyncPullIbossData(Constant.PullDataType type) {
         Map<String, Object> hashMap = new HashMap<>();
         hashMap.put("flag", false);
-        pullIbossDataService.pullIbossData(type, hashMap);
+        pullIBOSSDataService.pullIbossData(type, hashMap);
     }
 
     @Async("pullIbossData")
     public void Manualpulling(Constant.PullDataType type, Map<String, Object> map) {
-        pullIbossDataService.pullIbossData(type, map);
+        pullIBOSSDataService.pullIbossData(type, map);
     }
 
 }

+ 0 - 58
src/main/java/com/dk/mnls_mp/service/iboss/PullIbossDataService.java

@@ -1,58 +0,0 @@
-package com.dk.mnls_mp.service.iboss;
-
-import com.dk.mnls_mp.constant.Constant;
-import com.dk.mnls_mp.mapper.basic.CustomerMapper;
-import com.dk.mnls_mp.mapper.basic.PullOrderDetailMapper;
-import com.dk.mnls_mp.model.pojo.basic.Customer;
-import com.dk.mnls_mp.model.pojo.basic.PullOrderDetail;
-import com.dk.mnls_mp.service.pullDetail.PullOrderDetailService;
-import com.dongke.base.exceptionHandler.ResponseResultVO;
-import com.dongke.base.util.DateHelper;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-
-/**
- * @author : sh4wmoo
- * @date : 2021-5-12 13:09
- * @desc : 多线程拉取iBOSS数据service类
- */
-@Service
-@Slf4j
-public class PullIbossDataService {
-
-    @Autowired
-    private PullOrderDetailService pullOrderDetailService;
-    @Autowired
-    private PullOrderDetailMapper pullOrderDetailMapper;
-    @Autowired
-    private CustomerMapper customerMapper;
-
-    /**
-     * @author : sh4wmoo
-     * @date : 2021-5-8 11:19
-     * @desc : 拉取iBOSS数据通用方法
-     */
-    public void pullIbossData(Constant.PullDataType type, Map<String, Object> map) {
-        Date startTime = new Date();
-        log.info("拉取iBOSS:{}数据 开始,开始时间:{},{}毫秒(ms)", type.getName(), DateHelper.formatDate(startTime), startTime.getTime());
-
-        PullOrderDetail pullOrderDetail = new PullOrderDetail();
-        List<Customer> customers = new ArrayList<>();
-
-        //插入履历总单
-        pullOrderDetail.setPullTime(new Date());
-        //返回履历总单id
-        pullOrderDetailMapper.insertDate(pullOrderDetail);
-        //没有时间,不关联履历
-        customers = customerMapper.selectAllCusForPullDetail();
-        //循环调用
-        for (Customer it : customers) {
-            ResponseResultVO r = pullOrderDetailService.callWebService(it, pullOrderDetail, type);
-        }
-        Date endTime = new Date();
-        log.info("拉取iBOSS:{}数据 结束,结束时间:{},{},耗时{}毫秒(ms)", type.getName(), DateHelper.formatDate(endTime), endTime.getTime(), endTime.getTime() - startTime.getTime());
-    }
-}

+ 5 - 0
src/main/java/com/dk/mnls_mp/service/mnls/IBOSSGoodsCodeService.java

@@ -8,6 +8,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+/**
+ * @desc   : iBOSS商品编码基类
+ * @author : 张潇木
+ * @date   : 2022/10/10 16:46
+ */
 @Service
 @Transactional
 public class IBOSSGoodsCodeService extends MPBaseService<IBOSSGoodsCode> {

+ 165 - 0
src/main/java/com/dk/mnls_mp/service/mnls/PullIBOSSDataService.java

@@ -0,0 +1,165 @@
+package com.dk.mnls_mp.service.mnls;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.dk.mnls_mp.constant.Constant;
+import com.dk.mnls_mp.infrastructure.base.ResponseCodeEnum;
+import com.dk.mnls_mp.infrastructure.config.Config;
+import com.dk.mnls_mp.infrastructure.convert.IBOSSGoodsCodeConvert;
+import com.dk.mnls_mp.infrastructure.util.HttpHelper;
+import com.dk.mnls_mp.infrastructure.util.XmlUtil;
+import com.dk.mnls_mp.mapper.basic.*;
+import com.dk.mnls_mp.model.dto.IBOSSDTO;
+import com.dk.mnls_mp.model.pojo.basic.Customer;
+import com.dk.mnls_mp.model.pojo.basic.PullOrderDetail;
+import com.dk.mnls_mp.model.pojo.basic.WCFinfo;
+import com.dk.mnls_mp.model.pojo.mnls.IBOSSData;
+import com.dk.mnls_mp.service.mnls.IBOSSDataService;
+import com.dongke.base.exceptionHandler.ResponseResultUtil;
+import com.dongke.base.exceptionHandler.ResponseResultVO;
+import com.dongke.base.util.DateHelper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+
+/**
+ * @author : sh4wmoo
+ * @date : 2021-5-12 13:09
+ * @desc : 多线程拉取iBOSS数据service类
+ */
+@Service
+@Slf4j
+public class PullIBOSSDataService {
+
+    @Autowired
+    Config config;
+    @Autowired
+    PullOrderDetailMapper pullOrderDetailMapper;
+    @Autowired
+    CustomerMapper customerMapper;
+    @Autowired
+    CodeFacRecordMapper pullFacCodeRecordMapper;
+    @Autowired
+    IBOSSGoodsCodeConvert convert;
+    @Autowired
+    CodeFacRecordMapper codeFacRecordMapper;
+    @Autowired
+    WCFinfoMapper wcFinfoMapper;
+    @Autowired
+    IBOSSDataService ibossDataService;
+
+    @Autowired
+    SynchStatusMapper synchStatusMapper;
+
+    /**
+     * @author : sh4wmoo
+     * @date : 2021-5-8 11:19
+     * @desc : 拉取iBOSS数据通用方法
+     */
+    public void pullIbossData(Constant.PullDataType type, Map<String, Object> map) {
+        Date startTime = new Date();
+        log.info("拉取iBOSS:{}数据 开始,开始时间:{},{}毫秒(ms)", type.getName(), DateHelper.formatDate(startTime), startTime.getTime());
+
+        PullOrderDetail pullOrderDetail = new PullOrderDetail();
+        List<Customer> customers = new ArrayList<>();
+
+        //插入履历总单
+        pullOrderDetail.setPullTime(new Date());
+        //返回履历总单id
+        pullOrderDetailMapper.insertDate(pullOrderDetail);
+        //没有时间,不关联履历
+        customers = customerMapper.selectAllCusForPullDetail();
+        //循环调用
+        for (Customer it : customers) {
+            ResponseResultVO r = this.callWebService(it, pullOrderDetail, type);
+        }
+        Date endTime = new Date();
+        log.info("拉取iBOSS:{}数据 结束,结束时间:{},{},耗时{}毫秒(ms)", type.getName(), DateHelper.formatDate(endTime), endTime.getTime(), endTime.getTime() - startTime.getTime());
+    }
+
+    /**
+     * @author : sh4wmoo
+     * @date : 2021-5-8 13:44
+     * @desc : 调用webservice服务通用方法
+     */
+    @Async("pullIbossData")
+    public ResponseResultVO callWebService(Customer customer, PullOrderDetail pull, Constant.PullDataType type) {
+        //定义iBOSS接口返回值实体
+        IBOSSDTO IBOSSDTO=new IBOSSDTO();
+        //定义履历成功状态
+        Integer status=0;
+        //此处用try捕获异常,保证多线程之间不会受事务影响
+        try {
+            //查询客户webservice信息
+            WCFinfo wcFinfo = wcFinfoMapper.selectById(customer.getWcfid());
+            if (wcFinfo == null) {
+                return ResponseResultUtil.error(ResponseCodeEnum.SELECT_BY_ID_NULL.getCode(), ResponseCodeEnum.SELECT_BY_ID_NULL.getMessage());
+            }
+
+            //拼接url 区别于恒洁中台 直接调用iBOSS的webservice接口
+            String url = "http://"+wcFinfo.getWcfip() + ":" + wcFinfo.getWcfport() + config.getIBOSSWebserviceInterfacePostfix() +type.getFunctionName();
+
+            //整理参数
+            Map<String, Object> param = new HashMap<>();
+            param.put("AccountCode", customer.getDongkeaccountcode());
+            param.put("PageNum","0");
+            param.put("PageSize","0");
+
+            log.info("=*=*=*=*=*=*=*=*=" + "参数:" + param + "=*=*=*=*=*=*=*=*=");
+
+            //调用接口
+            Date startTime = new Date();
+            ResponseResultVO resultVO = HttpHelper.callIBOSSWebservice(url, param,null);
+            Date endTime = new Date();
+            log.info("经销商id=>{},接口响应时间=>{}ms", customer.getCustomerid(), endTime.getTime() - startTime.getTime());
+
+            //成功后插入数据
+            if (ResponseCodeEnum.SUCCESS.getCode()==resultVO.getCode()) {
+                //XML转map
+                Map<String, Object> resJson = XmlUtil.xmlToJson(resultVO.getData().toString());
+                //map转DTO
+                IBOSSDTO = JSON.parseObject(resJson.get("string").toString(), IBOSSDTO.class);
+
+                //创建insert pojo
+                IBOSSData IBOSSData=new IBOSSData();
+                JSONArray dataArray = JSONArray.parseArray(IBOSSDTO.getResult().toString());
+                IBOSSData.setData(dataArray);
+                IBOSSData.setCount(dataArray.size());
+                IBOSSData.setDataType((long)type.getId());
+                IBOSSData.setCustomerId((long)customer.getCustomerid());
+                //减一天日期
+                IBOSSData.setCreateDate(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDateTime.now().minusDays(1)));
+                ibossDataService.insert(IBOSSData);
+                //修改状态为成功
+                status=1;
+            }else{
+                log.error("调用iBOSS接口异常,经销商id=>{},返回值=>{}",customer.getCustomerid(),resultVO);
+            }
+
+            //记录履历
+            this.recordPullDetail(IBOSSDTO,pull,(long)customer.getCustomerid(),type,status);
+            return ResponseResultUtil.success();
+        } catch (Exception e) {
+            log.error("callWebService失败,经销商id=>{},异常信息=>{}"+customer.getCustomerid(), e);
+            return ResponseResultUtil.error(666,"callWebService失败");
+        }
+    }
+
+    /**
+     * @desc   : 记录抓取数据履历
+     * @author : 张潇木
+     * @date   : 2022-9-20 14:33
+     */
+    private void recordPullDetail(IBOSSDTO IBOSSDTO, PullOrderDetail pull, Long customerId, Constant.PullDataType type, Integer status) {
+        PullOrderDetail pod =new PullOrderDetail()
+                .setCustomerId(customerId).setStatus(status).setType(type.getId()).setPullId(pull.getPullId()).setPullTime(new Date())
+                .setPullQuantity(0==IBOSSDTO.getStatus()?JSONArray.parseArray(IBOSSDTO.getResult().toString()).size():null)
+                .setMessage(IBOSSDTO.getMessage());
+        pullOrderDetailMapper.insertDetail(pod);
+    }
+}

+ 96 - 0
src/main/java/com/dk/mnls_mp/service/mnls/SyncIBOSSGoodsCode.java

@@ -0,0 +1,96 @@
+package com.dk.mnls_mp.service.mnls;
+
+import com.alibaba.fastjson.JSON;
+import com.dk.mnls_mp.infrastructure.base.ResponseCodeEnum;
+import com.dk.mnls_mp.infrastructure.config.Config;
+import com.dk.mnls_mp.infrastructure.util.HttpHelper;
+import com.dk.mnls_mp.infrastructure.util.XmlUtil;
+import com.dk.mnls_mp.mapper.basic.SynchStatusMapper;
+import com.dk.mnls_mp.mapper.basic.WCFinfoMapper;
+import com.dk.mnls_mp.model.dto.IBOSSDTO;
+import com.dk.mnls_mp.model.pojo.basic.Customer;
+import com.dk.mnls_mp.model.pojo.basic.WCFinfo;
+import com.dk.mnls_mp.model.vo.IBOSSGoodsCodeVO;
+import com.dongke.base.exceptionHandler.BaseBusinessException;
+import com.dongke.base.exceptionHandler.ResponseResultUtil;
+import com.dongke.base.exceptionHandler.ResponseResultVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @desc   : 向iBOSS同步商品编码业务类
+ * @author : 张潇木
+ * @date   : 2022/10/10 16:45
+ */
+@Slf4j
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class SyncIBOSSGoodsCode {
+
+    @Autowired
+    private WCFinfoMapper wcFinfoMapper;
+    @Autowired
+    private SynchStatusMapper synchStatusMapper;
+    @Autowired
+    private Config config;
+
+    /**
+     * @desc   : 向iBOSS同步商品编码
+     * @author : 张潇木
+     * @date   : 2022/10/10 16:48
+     */
+    public ResponseResultVO syncCode(Customer customer, int syncId, List<IBOSSGoodsCodeVO> goodsCodeList) {
+        //此处用try捕获异常,保证同步各个经销商之间不会因为一个经销商异常 而导致全部异常
+        try {
+            //查询客户webservice信息
+            WCFinfo wcFinfo = wcFinfoMapper.selectById(customer.getWcfid());
+            if (wcFinfo == null) {
+                throw new BaseBusinessException(666,"同步编码失败,没有找到此客户的webService信息,客户信息=>"+customer);
+            }
+
+            //拼接url 区别于恒洁中台 直接调用iBOSS的webservice接口
+            String url = "http://"+wcFinfo.getWcfip() + ":" + wcFinfo.getWcfport() + config.getIBOSSWebserviceInterfacePostfix() +config.getSyncGoodsCodeUrl();
+
+            //整理参数
+            Map<String, Object> param = new HashMap<>();
+            param.put("accountCode", customer.getDongkeaccountcode());
+            param.put("userCode",customer.getUniqueCode());
+            param.put("goodsCode",goodsCodeList);
+
+            log.info("=*=*=*=*=*=*=*=*=" + "参数:" + param + "=*=*=*=*=*=*=*=*=");
+            //调用接口
+            ResponseResultVO resultVO = HttpHelper.callIBOSSWebservice(url, param,null);
+
+            //成功后插入数据
+            if (ResponseCodeEnum.SUCCESS.getCode()==resultVO.getCode()) {
+                //XML转map
+                Map<String, Object> resJson = XmlUtil.xmlToJson(resultVO.getData().toString());
+                //map转DTO
+                IBOSSDTO IBOSSDTO = JSON.parseObject(resJson.get("string").toString(), IBOSSDTO.class);
+                if(0==IBOSSDTO.getStatus()){
+                    //成功更新状态
+                    synchStatusMapper.updateByID(new HashMap(){{put("SynchID",syncId);put("Status",1);}});
+                    log.info("同步商品编码成功,经销商id=>{}",customer.getCustomerid());
+                    return ResponseResultUtil.success(200,"同步商品编码成功,经销商id=>"+customer.getCustomerid());
+                }else{
+                    //失败记录信息
+                    synchStatusMapper.updateByID(new HashMap(){{put("SynchID",syncId);put("Message",IBOSSDTO.getMessage());}});
+                    log.info("同步iBOSS商品编码失败,iBOSS接口状态码不等于0,经销商id=>{},接口返回值=>{}",customer.getCustomerid(),IBOSSDTO);
+                    return ResponseResultUtil.error(666,"同步iBOSS商品编码失败,iBOSS接口状态码不等于0,经销商id=>"+customer.getCustomerid());
+                }
+            }
+            log.info("同步iBOSS商品编码失败,http状态码不等于200,经销商id=>{},接口返回值=>{}",customer.getCustomerid(),resultVO);
+            return ResponseResultUtil.error(666,"同步iBOSS商品编码失败,http状态码不等于200,经销商id=>"+customer.getCustomerid());
+        } catch (Exception e) {
+            log.error("同步iBOSS商品编码异常,经销商id=>{},异常信息=>{}"+customer.getCustomerid(), e);
+            return ResponseResultUtil.error(666,"同步iBOSS商品编码异常,经销商id=>"+customer.getCustomerid());
+        }
+    }
+
+}

+ 1 - 1
src/main/java/com/dk/mnls_mp/service/mnls/IBOSSOrderService.java → src/main/java/com/dk/mnls_mp/service/mnls/SyncIBOSSOrderService.java

@@ -29,7 +29,7 @@ import java.util.Map;
 @Slf4j
 @Service
 @Transactional(rollbackFor = Exception.class)
-public class IBOSSOrderService{
+public class SyncIBOSSOrderService {
 
 	@Autowired
 	private CustomerMapper customerMapper;

+ 0 - 141
src/main/java/com/dk/mnls_mp/service/pullDetail/PullOrderDetailService.java

@@ -53,19 +53,8 @@ public class PullOrderDetailService {
     SqlSession sqlSession;
 
     @Autowired
-    private WCFinfoMapper wcFinfoMapper;
-
-    @Autowired
     private PullOrderDetailMapper pullOrderDetailMapper;
 
-    @Autowired
-    private IBOSSDataService ibossDataService;
-
-    @Autowired
-    private SynchStatusMapper synchStatusMapper;
-
-    @Autowired
-    private Config config;
 
     public ResponseResultVO selectDate() {
         return ResponseResultUtil.success(pullOrderDetailMapper.selectDate());
@@ -128,136 +117,6 @@ public class PullOrderDetailService {
         return ResponseResultUtil.success(data);
     }
 
-    /**
-     * @author : sh4wmoo
-     * @date : 2021-5-8 13:44
-     * @desc : 调用webservice服务通用方法
-     */
-    @Async("pullIbossData")
-    public ResponseResultVO callWebService(Customer customer, PullOrderDetail pull, Constant.PullDataType type) {
-        //定义iBOSS接口返回值实体
-        IBOSSDTO IBOSSDTO=new IBOSSDTO();
-        //定义履历成功状态
-        Integer status=0;
-        //此处用try捕获异常,保证多线程之间不会受事务影响
-        try {
-            //查询客户webservice信息
-            WCFinfo wcFinfo = wcFinfoMapper.selectById(customer.getWcfid());
-            if (wcFinfo == null) {
-                return ResponseResultUtil.error(ResponseCodeEnum.SELECT_BY_ID_NULL.getCode(), ResponseCodeEnum.SELECT_BY_ID_NULL.getMessage());
-            }
-
-            //拼接url 区别于恒洁中台 直接调用iBOSS的webservice接口
-            String url = "http://"+wcFinfo.getWcfip() + ":" + wcFinfo.getWcfport() + config.getIBOSSWebserviceInterfacePostfix() +type.getFunctionName();
-
-            //整理参数
-            Map<String, Object> param = new HashMap<>();
-            param.put("AccountCode", customer.getDongkeaccountcode());
-            param.put("PageNum","0");
-            param.put("PageSize","0");
-
-            log.info("=*=*=*=*=*=*=*=*=" + "参数:" + param + "=*=*=*=*=*=*=*=*=");
-
-            //调用接口
-            Date startTime = new Date();
-            ResponseResultVO resultVO = HttpHelper.callIBOSSWebservice(url, param,null);
-            Date endTime = new Date();
-            log.info("经销商id=>{},接口响应时间=>{}ms", customer.getCustomerid(), endTime.getTime() - startTime.getTime());
-
-            //成功后插入数据
-            if (ResponseCodeEnum.SUCCESS.getCode()==resultVO.getCode()) {
-                //XML转map
-                Map<String, Object> resJson = XmlUtil.xmlToJson(resultVO.getData().toString());
-                //map转DTO
-                IBOSSDTO = JSON.parseObject(resJson.get("string").toString(), IBOSSDTO.class);
-
-                //创建insert pojo
-                IBOSSData IBOSSData=new IBOSSData();
-                JSONArray dataArray = JSONArray.parseArray(IBOSSDTO.getResult().toString());
-                IBOSSData.setData(dataArray);
-                IBOSSData.setCount(dataArray.size());
-                IBOSSData.setDataType((long)type.getId());
-                IBOSSData.setCustomerId((long)customer.getCustomerid());
-                //减一天日期
-                IBOSSData.setCreateDate(DateTimeFormatter.ofPattern("yyyy-MM-dd").format(LocalDateTime.now().minusDays(1)));
-                ibossDataService.insert(IBOSSData);
-                //修改状态为成功
-                status=1;
-            }else{
-                log.error("调用iBOSS接口异常,经销商id=>{},返回值=>{}",customer.getCustomerid(),resultVO);
-            }
-
-            //记录履历
-            this.recordPullDetail(IBOSSDTO,pull,(long)customer.getCustomerid(),type,status);
-            return ResponseResultUtil.success();
-        } catch (Exception e) {
-            log.error("callWebService失败,经销商id=>{},异常信息=>{}"+customer.getCustomerid(), e);
-            return ResponseResultUtil.error(666,"callWebService失败");
-        }
-    }
-
-    public ResponseResultVO syncCode(Customer customer,int syncId,List<IBOSSGoodsCodeVO> goodsCodelist) {
-        //此处用try捕获异常,保证同步各个经销商之间不会因为一个经销商异常 而导致全部异常
-        try {
-            //查询客户webservice信息
-            WCFinfo wcFinfo = wcFinfoMapper.selectById(customer.getWcfid());
-            if (wcFinfo == null) {
-                throw new BaseBusinessException(666,"同步编码失败,没有找到此客户的webService信息,客户信息=>"+customer);
-            }
-
-            //拼接url 区别于恒洁中台 直接调用iBOSS的webservice接口
-            String url = "http://"+wcFinfo.getWcfip() + ":" + wcFinfo.getWcfport() + config.getIBOSSWebserviceInterfacePostfix() +config.getSyncGoodsCodeUrl();
-
-            //整理参数
-            Map<String, Object> param = new HashMap<>();
-            param.put("accountCode", customer.getDongkeaccountcode());
-            param.put("userCode",customer.getUniqueCode());
-            param.put("goodsCode",goodsCodelist);
-
-            log.info("=*=*=*=*=*=*=*=*=" + "参数:" + param + "=*=*=*=*=*=*=*=*=");
-            //调用接口
-            ResponseResultVO resultVO = HttpHelper.callIBOSSWebservice(url, param,null);
-
-            //成功后插入数据
-            if (ResponseCodeEnum.SUCCESS.getCode()==resultVO.getCode()) {
-                //XML转map
-                Map<String, Object> resJson = XmlUtil.xmlToJson(resultVO.getData().toString());
-                //map转DTO
-                IBOSSDTO IBOSSDTO = JSON.parseObject(resJson.get("string").toString(), IBOSSDTO.class);
-                if(0==IBOSSDTO.getStatus()){
-                    //成功更新状态
-                    synchStatusMapper.updateByID(new HashMap(){{put("SynchID",syncId);put("Status",1);}});
-                    log.info("同步商品编码成功,经销商id=>{}",customer.getCustomerid());
-                    return ResponseResultUtil.success(200,"同步商品编码成功,经销商id=>"+customer.getCustomerid());
-                }else{
-                    //失败记录信息
-                    synchStatusMapper.updateByID(new HashMap(){{put("SynchID",syncId);put("Message",IBOSSDTO.getMessage());}});
-                    log.info("同步iBOSS商品编码失败,iBOSS接口状态码不等于0,经销商id=>{},接口返回值=>{}",customer.getCustomerid(),IBOSSDTO);
-                    return ResponseResultUtil.error(666,"同步iBOSS商品编码失败,iBOSS接口状态码不等于0,经销商id=>"+customer.getCustomerid());
-                }
-            }
-            log.info("同步iBOSS商品编码失败,http状态码不等于200,经销商id=>{},接口返回值=>{}",customer.getCustomerid(),resultVO);
-            return ResponseResultUtil.error(666,"同步iBOSS商品编码失败,http状态码不等于200,经销商id=>"+customer.getCustomerid());
-        } catch (Exception e) {
-            log.error("同步iBOSS商品编码异常,经销商id=>{},异常信息=>{}"+customer.getCustomerid(), e);
-            return ResponseResultUtil.error(666,"同步iBOSS商品编码异常,经销商id=>"+customer.getCustomerid());
-        }
-    }
-
-
-    /**
-     * @desc   : 记录抓取数据履历
-     * @author : 张潇木
-     * @date   : 2022-9-20 14:33
-     */
-    private void recordPullDetail(IBOSSDTO IBOSSDTO,PullOrderDetail pull, Long customerId, Constant.PullDataType type,Integer status) {
-        PullOrderDetail pod =new PullOrderDetail()
-                .setCustomerId(customerId).setStatus(status).setType(type.getId()).setPullId(pull.getPullId()).setPullTime(new Date())
-                .setPullQuantity(0==IBOSSDTO.getStatus()?JSONArray.parseArray(IBOSSDTO.getResult().toString()).size():null)
-                .setMessage(IBOSSDTO.getMessage());
-        pullOrderDetailMapper.insertDetail(pod);
-    }
-
 
     /**
      * @author : sh4wmoo

+ 9 - 14
src/main/java/com/dk/mnls_mp/test/ApiTest.java

@@ -12,8 +12,9 @@ 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.iboss.PullIbossDataService;
+import com.dk.mnls_mp.service.mnls.PullIBOSSDataService;
 import com.dk.mnls_mp.service.mnls.PullFacGoodsCodeService;
+import com.dk.mnls_mp.service.mnls.SyncIBOSSGoodsCode;
 import com.dk.mnls_mp.service.pullDetail.PullOrderDetailService;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
@@ -39,45 +40,39 @@ import java.util.Map;
 public class ApiTest {
 
     @Autowired
-    PullIbossDataService pullIbossDataService;
-
+    PullIBOSSDataService pullIBOSSDataService;
     @Autowired
     PullOrderDetailService pullOrderDetailService;
-
     @Autowired
     PullFacGoodsCodeService pullFacGoodsCodeService;
-
     @Autowired
     CustomerMapper customerMapper;
-
     @Autowired
     CodeFacRecordMapper codeFacRecordMapper;
-
     @Autowired
     CodeRecordMapper codeRecordMapper;
-
     @Autowired
     SynchStatusMapper synchStatusMapper;
-
     @Autowired
     IBOSSGoodsCodeConvert IBOSSGoodsCodeConvert;
-
     @Autowired
     IBOSSGoodsCodeMapper IBOSSGoodsCodeMapper;
+    @Autowired
+    SyncIBOSSGoodsCode syncIBOSSGoodsCode;
 
     @Test
     public void callWebService() {
         Customer customer=customerMapper.selectById(212);
-        pullOrderDetailService.callWebService(customer, null,Constant.PullDataType.INVENTORY);
+        pullIBOSSDataService.callWebService(customer, null,Constant.PullDataType.INVENTORY);
     }
     /**
-     * @desc   : 拉iBOSS库存信息
+     * @desc   : 拉iBOSS库存信息
      * @author : 张潇木
      * @date   : 2022/9/26 15:06
      */
     @Test
     public void pullIbossData() {
-        pullIbossDataService.pullIbossData(Constant.PullDataType.INVENTORY,null);
+        pullIBOSSDataService.pullIbossData(Constant.PullDataType.INVENTORY,null);
     }
 
     @Test
@@ -99,7 +94,7 @@ public class ApiTest {
                 //先插入同步履历明细
                 synchStatusMapper.insertDetail(new SynchStatus().setSynchid(syncId).setCustomerid(it.getCustomerid()).setStatus(0));
                 //调用同步接口
-                pullOrderDetailService.syncCode(it,syncId,list);
+                syncIBOSSGoodsCode.syncCode(it,syncId,list);
             }
         }else{
             log.info("无新编码需要同步");