定时获取发货单、商品调整

This commit is contained in:
mzr 2024-04-16 17:18:47 +08:00
parent f278fd8aef
commit f9d7fa8890
4 changed files with 152 additions and 10 deletions

View File

@ -269,14 +269,15 @@ public class InvoiceController extends BaseController {
@ApiOperation(value = "生成发货单PDF")
@PostMapping(value = "/generateInvPdf")
public Map<String, Object> 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<String, Object> params = new HashMap<>();
// params.put("invoiceDate", "2021-11");
params.put("invoiceDate", invoiceDate);
params.put("invoiceId", invoiceId);
List<InvoiceInfo> orderList = invoiceService.findAll(params, ".pageList");
String path = ReadXmlutils.xmlForMap("", "invOrderPath");
int totalNum = 0;

View File

@ -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<String, Object> findClassOne() {
Map<String, Object> result = new HashMap<>();
Map<String, Object> 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", "操作成功");

View File

@ -46,7 +46,7 @@
and goodsTypeId LIKE '%' + #{typeId} + '%'
</if>
<if test="updateDate !=null and updateDate !=''">
and updateDate > #{updateDate}
and (updateDate > #{updateDate} or createTime > #{updateDate})
</if>
<if test="keywords !=null and keywords !=''">
and

View File

@ -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<Map> orderList, List<Map> goodsList, String companyId) {
try {
if (orderList.size() > 0) {
String invConfigId = UserConfig.getInvConfigId();
Map<String, Object> params = new HashMap<>();
params.put("companyId", companyId);
//获取业务员集合
List<Map> servicerList = orderUeightService.findListOracle(params, ".pageServicer");
for (Map map : orderList) {
String staffId = map.get("staffId") + "";
String clientId = map.get("clientId") + "";
Map<String, Object> 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<Map> 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<Map> goodsList1 = goodsList.stream().filter(goodsMap -> orderId.equals(goodsMap.get("invoiceId") + "")).collect(Collectors.toList());
if (goodsList1.size() <= 0) {
logger.info("orderId:{}", orderId);
continue;
}
Map<String, Object> 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<String, Object> 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<String, Object> 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();
}
}
}