diff --git a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/enums/NodeEnums.java b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/enums/NodeEnums.java index 824c67e4d..c3dcb8805 100644 --- a/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/enums/NodeEnums.java +++ b/blade-service-api/logpm-factory-data-api/src/main/java/com/logpm/factorydata/enums/NodeEnums.java @@ -20,6 +20,7 @@ public enum NodeEnums implements Serializable { TRANSFER_WAREHOUSE_UNLOADING(50, "中转仓卸车确认"), TRANSFER_WAREHOUSE_DEPART(60, "中转仓发车"), END_WAREHOUSE_UNLOADING(70, "末端仓卸车确认"), + TRIPARTITE_TRANSFER_DEPART(75, "三方中转发车"), SORTING_TRAYS(80, "分拣打托"), PUTAWAY(90, "上架"), STOCKING_OPERATION(100, "备货作业"), diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/controller/OrderController.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/controller/OrderController.java index 46cbcea69..8a1d9ddd7 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/controller/OrderController.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/controller/OrderController.java @@ -1,13 +1,17 @@ package com.logpm.factorydata.zbom.controller; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.logpm.factorydata.feign.IFactoryDataClient; import com.logpm.factorydata.vo.SendMsg; import com.logpm.factorydata.zbom.constants.ZbomConstants; import com.logpm.factorydata.zbom.entity.ZbFactoryOrderLogEntity; +import com.logpm.factorydata.zbom.entity.ZbReceiptEntity; import com.logpm.factorydata.zbom.service.IFactoryOrderLogService; +import com.logpm.factorydata.zbom.service.IReceiptService; import com.logpm.factorydata.zbom.vo.ZBReceiptDTO; import com.logpm.factorydata.zbom.vo.ZbResp; import io.swagger.annotations.Api; @@ -38,6 +42,7 @@ public class OrderController { private final IFactoryDataClient factoryDataClient; private final IFactoryOrderLogService orderLogService; + private final IReceiptService receiptService; @ResponseBody @@ -53,6 +58,10 @@ public class OrderController { } String corpId = request.getHeader("corpId"); zbReceiptDTO.setCorpId(corpId); + // 已经推送过的数据不再接收 + if (CollUtil.isNotEmpty(receiptService.list(Wrappers.lambdaQuery().eq(ZbReceiptEntity::getTaskCode, zbReceiptDTO.getTaskCode())))) { + return ZbResp.fail("该入库单号已推送过,无需重复推送"); + } // 记录日志 ZbFactoryOrderLogEntity logEntity = ZbFactoryOrderLogEntity.builder().content(JSONUtil.toJsonStr(zbReceiptDTO)).build(); orderLogService.save(logEntity); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbFactoryNodePushEntity.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbFactoryNodePushEntity.java new file mode 100644 index 000000000..316c0000a --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbFactoryNodePushEntity.java @@ -0,0 +1,79 @@ +package com.logpm.factorydata.zbom.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 节点数据推送志邦成功数据 + * + * @Author zqb + * @Date 2024/3/26 + **/ +@Builder +@Data +@TableName("zb_factory_node_push") +@ApiModel(value = "节点数据推送志邦成功数据", description = "节点数据推送志邦成功数据") +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +public class ZbFactoryNodePushEntity extends BaseEntity { + + /** + * 预留1 + */ + @ApiModelProperty(name = "预留1", notes = "") + private String reserve1; + /** + * 预留2 + */ + @ApiModelProperty(name = "预留2", notes = "") + private String reserve2; + /** + * 预留3 + */ + @ApiModelProperty(name = "预留3", notes = "") + private String reserve3; + /** + * 预留4 + */ + @ApiModelProperty(name = "预留4", notes = "") + private String reserve4; + /** + * 预留5 + */ + @ApiModelProperty(name = "预留5", notes = "") + private String reserve5; + /** + * 发车单号 + */ + @ApiModelProperty(name = "发车单号", notes = "") + private String departCode; + /** + * 加盟商单号 + */ + @ApiModelProperty(name = "加盟商单号", notes = "") + private String platformOrderCode; + /** + * 节点 + */ + @ApiModelProperty(name = "节点", notes = "") + private String node; + /** + * 内容 + */ + @ApiModelProperty(name = "内容", notes = "") + private String content; + /** + * 返回值 + */ + @ApiModelProperty(name = "返回值", notes = "") + private String resultContent; + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbReceiptEntity.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbReceiptEntity.java index d703371eb..7b6553bea 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbReceiptEntity.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/entity/ZbReceiptEntity.java @@ -8,6 +8,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import javax.validation.constraints.NotEmpty; + /** * 志邦入库单; @@ -28,6 +30,7 @@ public class ZbReceiptEntity extends BaseEntity { /** * 入库单号 */ + @NotEmpty(message = "入库单号不能为空") @ApiModelProperty(name = "入库单号", notes = "") private String taskCode; /** diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java index 20b96c0fb..d094b5d79 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/enums/ZbomNodeMappingEnums.java @@ -27,9 +27,13 @@ public enum ZbomNodeMappingEnums { */ INTRANSIT(ZbomNodeEnums.INTRANSIT, NodeEnums.TRANSFER_WAREHOUSE_DEPART, 1), /** - * 送货抵达 -- 末端仓卸货确认 + * 在途 -- 末端仓卸货确认 */ - DELIVERY_ARRIVAL(ZbomNodeEnums.DELIVERY_ARRIVAL, NodeEnums.END_WAREHOUSE_UNLOADING, 1), + DELIVERY_ARRIVAL(ZbomNodeEnums.INTRANSIT, NodeEnums.END_WAREHOUSE_UNLOADING, 1), + /** + * 在途 -- 三方中转发车 + */ + INTRANSIT_TRIPARTITE_TRANSFER_DEPART(ZbomNodeEnums.INTRANSIT, NodeEnums.TRIPARTITE_TRANSFER_DEPART, 1), /** * 全部签收 -- 文员复核 */ diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodePushMapper.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodePushMapper.java new file mode 100644 index 000000000..8687a9890 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodePushMapper.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.factorydata.zbom.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.factorydata.zbom.entity.ZbFactoryNodePushEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 节点数据推送成功 Mapper + * + * @author zqb + * @since 2024-03-26 + */ +@Mapper +public interface FactoryNodePushMapper extends BaseMapper { + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodePushMapper.xml b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodePushMapper.xml new file mode 100644 index 000000000..a8993d54f --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodePushMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.java index e964c7579..c7c795dcb 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.java @@ -18,6 +18,7 @@ package com.logpm.factorydata.zbom.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.logpm.factorydata.zbom.entity.ZbOrderPackageEntity; +import com.logpm.factorydata.zbom.vo.NoSignNumberDTO; import com.logpm.factorydata.zbom.vo.NodeConfirmParamDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -34,4 +35,8 @@ import java.util.List; public interface OrderPackageMapper extends BaseMapper { List findOrderCodebypackageCodes(@Param("packageList") List packageCodeList); + + void updateSignForStatus(@Param("packageCodeList") List packageCodeList); + + List findNoSignNumber(@Param("packageCodeList") List packageCodeList); } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.xml b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.xml index 293259568..773af4648 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.xml +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/OrderPackageMapper.xml @@ -1,6 +1,20 @@ + + update zb_order_package t set t.sign_status = 1 where exists( + select 1 from ( + + + select #{item} pid + + + union all + select #{item} pid + + + ) packageCodeIds where packageCodeIds.pid = t.package_code) + + diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomFactoryOrderListener.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomFactoryOrderListener.java index 08b8f8e6a..d64d2c466 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomFactoryOrderListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomFactoryOrderListener.java @@ -10,6 +10,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.logpm.factorydata.base.feign.IFactoryDataBaseClient; import com.logpm.factorydata.base.vo.FactoryWarehouseBindVO; import com.logpm.factorydata.feign.IFactoryDataClient; @@ -34,7 +35,6 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.HttpConstants; import org.springblade.common.constant.TenantNum; import org.springblade.common.constant.factorydata.FactoryDataConstants; -import org.springblade.core.log.exception.ServiceException; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; @@ -83,18 +83,24 @@ public class ZbomFactoryOrderListener { @Transactional(rollbackFor = Exception.class) public void factoryOrder(String msg) { if (StrUtil.isEmpty(msg)) { - throw new ServiceException("消息不能为空"); + log.error("消息内容为空"); + return; } ZBReceiptDTO zbReceiptDTO = JSONUtil.toBean(msg, ZBReceiptDTO.class); if (ObjectUtil.isEmpty(zbReceiptDTO)) { - throw new ServiceException("消息内容不能为空"); + log.error("消息内容为空"); + return; } // 幂等控制,同一个入库单号只能入一次 -// String taskCode = zbReceiptDTO.getTaskCode(); -// ZbReceiptEntity one = receiptService.getOne(Wrappers.lambdaQuery().eq(ZbReceiptEntity::getTaskCode, taskCode)); -// if (ObjectUtil.isEmpty(one)) { -// throw new ServiceException("入库单号在系统中已存在,请检查。"); -// } + String taskCode = zbReceiptDTO.getTaskCode(); + if (StrUtil.isEmpty(taskCode)) { + log.error("入库单号为空"); + return; + } + if (CollUtil.isNotEmpty(receiptService.list(Wrappers.lambdaQuery().eq(ZbReceiptEntity::getTaskCode, taskCode)))) { + log.error("入库单号已推送过了"); + return; + } ZbReceiptEntity zbReceiptEntity = new ZbReceiptEntity(); BeanUtil.copyProperties(zbReceiptDTO, zbReceiptEntity); // 保存订单数据 @@ -219,7 +225,7 @@ public class ZbomFactoryOrderListener { // advanceDetailEntity.setIncomingWarehouseName(""); // 根据志邦的一流单标识赋值 advanceEntity.setLegacyStatus("0"); - if(ObjectUtil.equal(orderPackageDTO.getLegacyFlag(),"Y")){ + if (ObjectUtil.equal(orderPackageDTO.getLegacyFlag(), "Y")) { advanceEntity.setLegacyStatus("1"); } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java index d971a47a7..1cca7706b 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java @@ -1,21 +1,24 @@ package com.logpm.factorydata.zbom.mq; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.logpm.factorydata.enums.NodeEnums; -import com.logpm.factorydata.enums.SignForStatusEnums; import com.logpm.factorydata.zbom.constants.ZbomConstants; +import com.logpm.factorydata.zbom.entity.ZbFactoryNodePushEntity; import com.logpm.factorydata.zbom.entity.ZbFactoryNodePushFailEntity; import com.logpm.factorydata.zbom.enums.NodeNeedEnums; import com.logpm.factorydata.zbom.enums.ZbomNodeMappingEnums; import com.logpm.factorydata.zbom.pros.ZbFactoryProperties; import com.logpm.factorydata.zbom.service.IFactoryNodePushFailService; +import com.logpm.factorydata.zbom.service.IFactoryNodePushService; import com.logpm.factorydata.zbom.service.IOrderPackageService; import com.logpm.factorydata.zbom.util.ZbomUtil; +import com.logpm.factorydata.zbom.vo.NoSignNumberDTO; import com.logpm.factorydata.zbom.vo.NodeConfirmParamDTO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -28,7 +31,9 @@ import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 监听业务系统推送给志邦的节点数据 @@ -44,6 +49,7 @@ public class ZbomNodeDataPushListener { private final ZbFactoryProperties zbProperties; private final IOrderPackageService orderPackageService; private final IFactoryNodePushFailService nodePushFailService; + private final IFactoryNodePushService nodePushService; @RabbitListener(bindings = @QueueBinding( value = @Queue(name = FactoryDataConstants.Mq.Queues.ZBOM_NODE_DATA_PUSH), @@ -57,8 +63,22 @@ public class ZbomNodeDataPushListener { if (!checkMsg(msg)) { return; } + JSONObject msgEntries = JSONUtil.parseObj(msg); + // 业务数据 + List content = msgEntries.getBeanList("content", JSONObject.class); + List packageCodeList = null; + if (CollUtil.isNotEmpty(content)) { + // 查询这次操作的所有包件和运单号 + packageCodeList = new ArrayList<>(); + for (JSONObject obj : content) { + String packageCode = obj.getStr("packageCode"); + if (StrUtil.isNotBlank(packageCode)) { + packageCodeList.add(packageCode); + } + } + } // 构建参数对象 - List nodeConfirmParams = initParam(msg); + List nodeConfirmParams = initParam(msgEntries, packageCodeList); try { // 推送给志邦 if (CollUtil.isNotEmpty(nodeConfirmParams)) { @@ -78,10 +98,23 @@ public class ZbomNodeDataPushListener { // 推送失败 nodePushFailService.save(build); } + if (ObjectUtil.equal(code, "0")) { + ZbFactoryNodePushEntity pushEntity = ZbFactoryNodePushEntity.builder() + .departCode(nodeConfirmParam.getDepartCode()) + .platformOrderCode(nodeConfirmParam.getPlatformOrderCode()) + .content(body) + .resultContent(result) + .build(); + // 推送成功 + nodePushService.save(pushEntity); + // 修改订单包件表的签收状态 + orderPackageService.updateSignForStatus(packageCodeList); + } } } } } + } catch (Exception e) { // 处理推送不成功的异常情况 log.error("zb节点推送数据异常:{}", e); @@ -90,51 +123,47 @@ public class ZbomNodeDataPushListener { } - private List initParam(String msg) { - JSONObject entries = JSONUtil.parseObj(msg); + private List initParam(JSONObject entries, List packageCodeList) { // 处理节点信息 String node = entries.getStr("node"); NodeEnums nodeEnums = EnumUtil.fromString(NodeEnums.class, node); - // 业务数据 - List content = entries.getBeanList("content", JSONObject.class); - if (CollUtil.isNotEmpty(content)) { - // 查询这次操作的所有包件和运单号 - List packageCodeList = new ArrayList<>(); - for (JSONObject obj : content) { - String packageCode = obj.getStr("packageCode"); - if (StrUtil.isNotBlank(packageCode)) { - packageCodeList.add(packageCode); + if (CollUtil.isNotEmpty(packageCodeList)) { + // 根据运单号和自编码分组查询出对应的数量 + List orders = orderPackageService.findOrderCodebypackageCodes(packageCodeList); + // 根据运单号和自编码分组查询出未签收的数量 + List noSignNumberDTOS = orderPackageService.findNoSignNumber(packageCodeList); + Map noSignNumberMap = new HashMap<>(); + if (CollUtil.isNotEmpty(noSignNumberDTOS)) { + for (NoSignNumberDTO noSignNumberDTO : noSignNumberDTOS) { + noSignNumberMap.put(noSignNumberDTO.getDepartCode() + noSignNumberDTO.getPlatformOrderCode(), noSignNumberDTO.getNum()); } } - if (CollUtil.isNotEmpty(packageCodeList)) { - // 根据运单号和自编码分组查询出对应的数量 - List orders = orderPackageService.findOrderCodebypackageCodes(packageCodeList); - if (CollUtil.isNotEmpty(orders)) { - for (NodeConfirmParamDTO order : orders) { - order.setOperator(entries.getStr("operator")); - order.setOperatorTime(entries.getStr("operatorTime")); - order.setAddress(entries.getStr("address")); - String signForStatus = entries.getStr("signForStatus"); - // 如果是签收节点,需要判断是否为全部签收和部分签收 - if (EnumUtil.equals(NodeEnums.CLERK_REVIEW, node)) { - // 部分签收 - order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_SECTION_STATUS).getCode()); - // 判断是否全部签收完成 - if (StrUtil.isNotBlank(signForStatus)) { - SignForStatusEnums signFornEnum = EnumUtil.fromString(SignForStatusEnums.class, signForStatus); - if (EnumUtil.equals(SignForStatusEnums.SIGN_FOR_ALL, EnumUtil.toString(signFornEnum))) { - // 全部签收 - order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_ALL_STATUS).getCode()); - } + if (CollUtil.isNotEmpty(orders)) { + for (NodeConfirmParamDTO order : orders) { + order.setOperator(entries.getStr("operator")); + order.setOperatorTime(entries.getStr("operatorTime")); + order.setAddress(entries.getStr("address")); + // 如果是签收节点,需要判断是否为全部签收和部分签收 + if (EnumUtil.equals(NodeEnums.CLERK_REVIEW, node)) { + Integer signNumber = Convert.toInt(order.getRejectQty()); + // 查询当前未签收的数量与当前签收数量比较,如果未签收数较大,则是部分签收 + String key = order.getDepartCode() + order.getPlatformOrderCode(); + // 部分签收 + order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_SECTION_STATUS).getCode()); + if (noSignNumberMap.containsKey(key)) { + Integer noSignNum = noSignNumberMap.get(key); + if (noSignNum <= signNumber) { + // 全部签收 + order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_ALL_STATUS).getCode()); } - } else { - order.setRejectQty(""); - order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums).getCode()); } + } else { + order.setRejectQty(""); + order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums).getCode()); } } - return orders; } + return orders; } return null; } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IFactoryNodePushService.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IFactoryNodePushService.java new file mode 100644 index 000000000..053f114d0 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IFactoryNodePushService.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.factorydata.zbom.service; + +import com.logpm.factorydata.zbom.entity.ZbFactoryNodePushEntity; +import org.springblade.core.mp.base.BaseService; + +/** + * 节点数据推送成功数据 服务类 + * + * @author pref + * @since 2023-08-21 + */ +public interface IFactoryNodePushService extends BaseService { + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IOrderPackageService.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IOrderPackageService.java index e9512725c..821ee7f5e 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IOrderPackageService.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IOrderPackageService.java @@ -17,6 +17,7 @@ package com.logpm.factorydata.zbom.service; import com.logpm.factorydata.zbom.entity.ZbOrderPackageEntity; +import com.logpm.factorydata.zbom.vo.NoSignNumberDTO; import com.logpm.factorydata.zbom.vo.NodeConfirmParamDTO; import org.springblade.core.mp.base.BaseService; @@ -32,4 +33,7 @@ public interface IOrderPackageService extends BaseService List findOrderCodebypackageCodes(List packageCodeList); + void updateSignForStatus(List packageCodeList); + + List findNoSignNumber(List packageCodeList); } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/FactoryNodePushServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/FactoryNodePushServiceImpl.java new file mode 100644 index 000000000..574c7f16d --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/FactoryNodePushServiceImpl.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.factorydata.zbom.service.impl; + +import com.logpm.factorydata.zbom.entity.ZbFactoryNodePushEntity; +import com.logpm.factorydata.zbom.mapper.FactoryNodePushMapper; +import com.logpm.factorydata.zbom.service.IFactoryNodePushService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 节点数据推送成功 服务实现类 + * + * @author pref + * @since 2023-08-21 + */ +@Slf4j +@Service +@AllArgsConstructor +public class FactoryNodePushServiceImpl extends BaseServiceImpl implements IFactoryNodePushService { + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/OrderPackageServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/OrderPackageServiceImpl.java index 27b61d3a9..bfced1adc 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/OrderPackageServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/OrderPackageServiceImpl.java @@ -19,6 +19,7 @@ package com.logpm.factorydata.zbom.service.impl; import com.logpm.factorydata.zbom.entity.ZbOrderPackageEntity; import com.logpm.factorydata.zbom.mapper.OrderPackageMapper; import com.logpm.factorydata.zbom.service.IOrderPackageService; +import com.logpm.factorydata.zbom.vo.NoSignNumberDTO; import com.logpm.factorydata.zbom.vo.NodeConfirmParamDTO; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.stereotype.Service; @@ -39,4 +40,14 @@ public class OrderPackageServiceImpl extends BaseServiceImpl orders = this.baseMapper.findOrderCodebypackageCodes(packageCodeList); return orders; } + + @Override + public void updateSignForStatus(List packageCodeList) { + this.baseMapper.updateSignForStatus(packageCodeList); + } + + @Override + public List findNoSignNumber(List packageCodeList) { + return this.baseMapper.findNoSignNumber(packageCodeList); + } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/vo/NoSignNumberDTO.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/vo/NoSignNumberDTO.java new file mode 100644 index 000000000..c0676dcca --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/vo/NoSignNumberDTO.java @@ -0,0 +1,28 @@ +package com.logpm.factorydata.zbom.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 未签收数量dto + * + * @author zhaoqiaobo + * @create 2024-03-21 15:04 + */ +@Data +public class NoSignNumberDTO implements Serializable { + + /** + * 发运单号 + */ + private String departCode; + /** + * 加盟商单号 + */ + private String platformOrderCode; + /** + * 数量 + */ + private Integer num; +}