diff --git a/crm-admin/src/main/java/com/yb/lb/webapp/invoice/InvoiceController.java b/crm-admin/src/main/java/com/yb/lb/webapp/invoice/InvoiceController.java index 742d967..c045bb2 100644 --- a/crm-admin/src/main/java/com/yb/lb/webapp/invoice/InvoiceController.java +++ b/crm-admin/src/main/java/com/yb/lb/webapp/invoice/InvoiceController.java @@ -269,14 +269,15 @@ public class InvoiceController extends BaseController { @ApiOperation(value = "生成发货单PDF") @PostMapping(value = "/generateInvPdf") public Map generateInvPdf( - @ApiParam(required = true, value = "单据日期") @RequestParam(required = true) String invoiceDate, + @ApiParam(required = false, value = "单据日期") @RequestParam(required = false) String invoiceDate, + @ApiParam(required = false, value = "主键") @RequestParam(required = false) String invoiceId, HttpServletRequest request) { StopWatch stopWatch = new StopWatch(); // 开始时间 stopWatch.start(); Map params = new HashMap<>(); - // params.put("invoiceDate", "2021-11"); params.put("invoiceDate", invoiceDate); + params.put("invoiceId", invoiceId); List orderList = invoiceService.findAll(params, ".pageList"); String path = ReadXmlutils.xmlForMap("", "invOrderPath"); int totalNum = 0; diff --git a/crm-admin/src/main/java/com/yb/lb/webapp/ueight/job/OrderU8Controller.java b/crm-admin/src/main/java/com/yb/lb/webapp/ueight/job/OrderU8Controller.java index dcdb773..4c2e0a4 100644 --- a/crm-admin/src/main/java/com/yb/lb/webapp/ueight/job/OrderU8Controller.java +++ b/crm-admin/src/main/java/com/yb/lb/webapp/ueight/job/OrderU8Controller.java @@ -3,7 +3,7 @@ package com.yb.lb.webapp.ueight.job; import com.yb.lb.common.utils.ErrorUtils; import com.yb.lb.common.utils.FINALCMD; import com.yb.lb.webapp.message.service.MessageService; -import com.yb.lb.webapp.u8.thread.U8OrderThread; +import com.yb.lb.webapp.u8.ueight.service.OrderCronService; import com.yb.lb.webapp.u8.ueight.service.OrderUeightService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,8 +13,6 @@ import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; @Component("orderU8Controller") public class OrderU8Controller { @@ -25,21 +23,24 @@ public class OrderU8Controller { OrderUeightService orderService; @Autowired MessageService messageService; + @Autowired + OrderCronService orderCronService; public Map findClassOne() { Map result = new HashMap<>(); Map params = new HashMap<>(); try { - ExecutorService pool = Executors.newFixedThreadPool(2); + // ExecutorService pool = Executors.newFixedThreadPool(2); String[] companyIds = {FINALCMD.KESAI, FINALCMD.DEHAO}; for (String companyId : companyIds) { List list = orderService.findList(".pageOrder", null, companyId); List list1 = orderService.findList(".pageDetail", null, companyId); - U8OrderThread thread = new U8OrderThread(list, list1, orderService, messageService, companyId); + orderCronService.syncU8Orders(list, list1, companyId); + // U8OrderThread thread = new U8OrderThread(list, list1, orderService, messageService, companyId); //提交线程池 执行 - pool.submit(thread); + // pool.submit(thread); } - pool.shutdown();//关闭线程池 + // pool.shutdown();//关闭线程池 result.put("data", true); result.put("code", ErrorUtils.SUCCESS); result.put("msg", "操作成功"); diff --git a/crm-common/src/main/resources/mapper/mapper_sqlserver/goods/GoodsUeightMapper.xml b/crm-common/src/main/resources/mapper/mapper_sqlserver/goods/GoodsUeightMapper.xml index 3814e50..1438c18 100644 --- a/crm-common/src/main/resources/mapper/mapper_sqlserver/goods/GoodsUeightMapper.xml +++ b/crm-common/src/main/resources/mapper/mapper_sqlserver/goods/GoodsUeightMapper.xml @@ -46,7 +46,7 @@ and goodsTypeId LIKE '%' + #{typeId} + '%' - and updateDate > #{updateDate} + and (updateDate > #{updateDate} or createTime > #{updateDate}) and diff --git a/crm-webapp/src/main/java/com/yb/lb/webapp/u8/ueight/service/OrderCronService.java b/crm-webapp/src/main/java/com/yb/lb/webapp/u8/ueight/service/OrderCronService.java new file mode 100644 index 0000000..866bc58 --- /dev/null +++ b/crm-webapp/src/main/java/com/yb/lb/webapp/u8/ueight/service/OrderCronService.java @@ -0,0 +1,140 @@ +package com.yb.lb.webapp.u8.ueight.service; + +import com.yb.lb.common.config.UserConfig; +import com.yb.lb.common.utils.*; +import com.yb.lb.webapp.message.entity.MessageConfig; +import com.yb.lb.webapp.message.service.MessageService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 定时同步U8订单数据到CRM系统 + * + * @author mzr + * @date 2024-04-16 + */ +@Service +public class OrderCronService { + private static final Logger logger = LoggerFactory.getLogger(OrderCronService.class); + + @Autowired + OrderUeightService orderUeightService; + @Autowired + MessageService messageService; + + /** + * 获取U8的销售出库单 + * + * @author mzr + * @date 2023/08/02 + **/ + public void syncU8Orders(List orderList, List goodsList, String companyId) { + try { + if (orderList.size() > 0) { + String invConfigId = UserConfig.getInvConfigId(); + Map params = new HashMap<>(); + params.put("companyId", companyId); + //获取业务员集合 + List servicerList = orderUeightService.findListOracle(params, ".pageServicer"); + for (Map map : orderList) { + String staffId = map.get("staffId") + ""; + String clientId = map.get("clientId") + ""; + + Map tMap = new HashMap<>(); + tMap.put("clientId", clientId); + tMap.put("companyId", companyId); + Map clientInfoMap = orderUeightService.oneById(tMap, ".findByNo"); + if (clientInfoMap != null) { + map.put("clientId", clientInfoMap.get("id") + ""); + map.put("phone", clientInfoMap.get("phone") != null ? clientInfoMap.get("phone") + "" : ""); + map.put("region", clientInfoMap.get("region") != null ? clientInfoMap.get("region") + "" : ""); + map.put("regionName", clientInfoMap.get("regionName") != null ? clientInfoMap.get("regionName") + "" : ""); + map.put("ancestors", clientInfoMap.get("ancestors") != null ? clientInfoMap.get("ancestors") + "" : ""); + } else { + map.put("phone", ""); + map.put("region", ""); + map.put("regionName", ""); + map.put("ancestors", ""); + } + + // 匹配业务员 + List list = servicerList.stream().filter(staffMap -> staffId.equals(staffMap.get("staffNo"))).collect(Collectors.toList()); + Map staffMap = null; + if (list.size() > 0) { + staffMap = list.get(0); + map.put("staffId", staffMap.get("staffId") + ""); + } + + String orderId = map.get("id") + ""; + List goodsList1 = goodsList.stream().filter(goodsMap -> orderId.equals(goodsMap.get("invoiceId") + "")).collect(Collectors.toList()); + if (goodsList1.size() <= 0) { + logger.info("orderId:{}", orderId); + continue; + } + Map info = new HashMap<>(); + info.put("id", orderId); + info.put("cDefine8", "1"); + // 新增发货单 + map.put("companyId", companyId); + String invoiceNo = map.get("invoiceNo") + ""; + String saleOrderNo = map.get("saleOrderNo") + ""; + String clientName = map.get("clientName") + ""; + String companyUrl = "2".equals(companyId) ? "/dehao/" : "/kesai/"; + String pdfFileName = clientName + invoiceNo + "-" + saleOrderNo + ".pdf"; + map.put("invUrl", "/invOrder" + companyUrl + pdfFileName); + if (orderUeightService.addOrder1(map)) { + String createTime = StringUtil.isNotEmpty(map.get("createTime")) ? map.get("createTime") + "" : DateUtil.getTime(); + // 新增发货单的商品详情 + for (Map goodsMap1 : goodsList1) { + goodsMap1.put("companyId", companyId); + goodsMap1.put("createTime", createTime); + } + if (orderUeightService.addOrderDetail(goodsList1)) { + // 回写U8销售出库单的状态 + if (FINALCMD.KESAI.equals(companyId)) { + orderUeightService.update(".updateOrderInfo", info); + } else if (FINALCMD.DEHAO.equals(companyId)) { + orderUeightService.updateInfo1(".updateOrderInfo", info); + } + // 调用积木报表生成pdf文件 + String fileUrl = ReadXmlutils.xmlForMap("", "invOrderPath") + companyUrl + pdfFileName; + MyFileUtils.exportPdf(invConfigId, orderId, fileUrl, "2"); + // 单据同步成功之后再发送消息 + if (staffMap != null && !staffMap.isEmpty()) { + //给业务员发送消息 + Map msgMap = new HashMap<>(); + msgMap.put("userId", map.get("staffId") + ""); + msgMap.put("newsId", map.get("id")); + msgMap.put("type", MessageConfig.TYPE_6); + msgMap.put("messageContent", "您分管的客户," + map.get("clientName") + "的货物已经" + map.get("invoiceDate") + "发货,发货单编码为" + map.get("invoiceNo") + ",请您随时关注物流状况"); + messageService.add(msgMap); + } + if (clientInfoMap != null && !clientInfoMap.isEmpty()) { + //给客户发送消息 + Map msgMap = new HashMap<>(); + msgMap.put("userId", map.get("clientId") + ""); + msgMap.put("newsId", map.get("id")); + msgMap.put("type", MessageConfig.TYPE_6); + msgMap.put("messageContent", "您的货物已经" + map.get("invoiceDate") + "发货,发货单编码为" + map.get("invoiceNo") + ",请您随时关注物流状况,如果收到货后尽快扫描入库"); + messageService.add(msgMap); + } + } + } + + } + } + } catch (Exception e) { + logger.error("获取U8销售出库单异常:{}", e.getMessage()); + Logs.writeLogs("获取U8销售出库单异常:" + DateUtil.getSdfTimess() + "---" + e.getMessage()); + e.printStackTrace(); + } + } + +}