diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java b/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java index c44e9ee4f..a66a4d9af 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/OldSystemDataPushConfig.java @@ -60,6 +60,12 @@ public class OldSystemDataPushConfig { // 阳春仓 warehourseIds.add("150"); + //宜昌 + warehourseIds.add("45"); + + // 大竹 + warehourseIds.add("37"); + } diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java b/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java new file mode 100644 index 000000000..22fc1b5b1 --- /dev/null +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java @@ -0,0 +1,54 @@ +package org.springblade.common.constant; + +import lombok.Getter; + +import java.io.Serializable; + +/** + * 作业节点枚举 + * + * @author zhaoqiaobo + * @create 2024-03-20 15:19 + */ +@Getter +public enum WorkNodeEnums implements Serializable { + + INITIAL_DATA_ENTRY(10, "数据入库"), + INITIAL_WAREHOUSE_ENTRY(20, "始发仓入库"), + BILLING(30, "开单"), + INITIAL_WAREHOUSE_LOADING(40, "始发仓装车"), + CANCEL_INITIAL_WAREHOUSE_LOADING(50, "始发仓取消装车"), + INITIAL_WAREHOUSE_DEPART(60, "始发仓发车"), + CANCEL_INITIAL_WAREHOUSE_DEPART(70, "始发仓取消发车"), + NET_ARRIVE_CAR(80,"网点到车"), + CANCEL_NET_ARRIVE_CAR(90,"网点取消到车"), + UNLOAD_INCOMING_WAREHOUSE(100,"卸车入库"), + TRANSFER_WAREHOUSE_UNLOADING(110, "网点卸车确认"), + TRANSFER_WAREHOUSE_DEPART(120, "网点发车"), + CANEL_TRANSFER_WAREHOUSE_DEPART(130, "网点取消发车"), + FINAL_NET_ARRIVE_CAR(140,"终点到车"), + CANCEL_FINAL_NET_ARRIVE_CAR(150,"终点取消到车"), + SIGN_DIRECT_SHIPPER(160,"直发商家签收"), + END_WAREHOUSE_UNLOADING(170, "末端仓卸车确认"), + TRIPARTITE_TRANSFER_DEPART(180, "三方中转发车"), + CANCEL_TRIPARTITE_TRANSFER_DEPART(190, "三方中转取消发车"), + ARRICE_TRIPARTITE_TRANSFER_DEPART(200, "三方中转到达"), + sign_TRIPARTITE_TRANSFER_DEPART(210, "三方中转签收"), + SORTING_TRAYS(220, "分拣打托"), + UN_SORTING_TRAYS(230, "包件解托"), + PUTAWAY(240, "上架"), + DELIST(250, "下架"), + STOCKING_OPERATION(260, "备货作业"), + DISTRIBUTION_LOADING(270, "配送装车"), + DISTRIBUTION_SIGN_FOR(280, "配送签收"), + CLERK_REVIEW(290, "文员复核"); + + private Integer code; + private String value; + + WorkNodeEnums(Integer code, String value) { + this.code = code; + this.value = value; + } + +} diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java b/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java index 2074e29ef..beb805bb9 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/factorydata/FactoryDataConstants.java @@ -9,6 +9,9 @@ package org.springblade.common.constant.factorydata; public abstract class FactoryDataConstants { public interface Mq { + + String DELAYED = "true"; + /** * 定义交换机 */ @@ -18,6 +21,7 @@ public abstract class FactoryDataConstants { * 作业节点数据推送 */ String NODE_DATA_PUSH = "factory.data.exchange.topic.nodeDataPush"; + String NODE_DATA_PUSH_DELAYED = "factory.data.exchange.topic.nodeDataPushDelayed"; /** * 工厂订单数据 */ diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataOpenIncomingSettingEntity.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataOpenIncomingSettingEntity.java new file mode 100644 index 000000000..71a5d5d44 --- /dev/null +++ b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/entity/BasicdataOpenIncomingSettingEntity.java @@ -0,0 +1,46 @@ +package com.logpm.basicdata.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.tenant.mp.TenantEntity; + +@Data +@TableName("logpm_basicdata_open_incoming") +@ApiModel(value = "BasicdataOpenIncomingSetting对象", description = "开单及入库设置表") +@EqualsAndHashCode(callSuper = true) +public class BasicdataOpenIncomingSettingEntity extends TenantEntity { + + /** + * 预留1 + */ + @ApiModelProperty(value = "预留1") + private String reserve1; + /** + * 预留2 + */ + @ApiModelProperty(value = "预留2") + private String reserve2; + /** + * 预留3 + */ + @ApiModelProperty(value = "预留3") + private String reserve3; + /** + * 预留4 + */ + @ApiModelProperty(value = "预留4") + private String reserve4; + /** + * 预留5 + */ + @ApiModelProperty(value = "预留5") + private String reserve5; + + + private Long warehouseId; + private String brand; + +} diff --git a/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/BasicdataOpenIncomingSettingVO.java b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/BasicdataOpenIncomingSettingVO.java new file mode 100644 index 000000000..2017a0eab --- /dev/null +++ b/blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/BasicdataOpenIncomingSettingVO.java @@ -0,0 +1,11 @@ +package com.logpm.basicdata.vo; + +import com.logpm.basicdata.entity.BasicdataOpenIncomingSettingEntity; +import lombok.Data; + +@Data +public class BasicdataOpenIncomingSettingVO extends BasicdataOpenIncomingSettingEntity { + + private String warehouseName; + +} diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionBillOrderPackVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionBillOrderPackVO.java index 3019e240e..722eaba65 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionBillOrderPackVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionBillOrderPackVO.java @@ -29,6 +29,7 @@ public class DistributionBillOrderPackVO { private String sendWarehouseName; //客户车次号 private String orderCode; //始发仓 private String stockupStatusName; //备货状态名称 + private String orderStatusName; //包件状态 private String stockupConsignee; //提货人员 private String stockupPickUpPlate; //提货车牌 private String stockupConditions; //提货状态 diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionSignforStockArticleVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionSignforStockArticleVO.java index 5436f071d..80cc63016 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionSignforStockArticleVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionSignforStockArticleVO.java @@ -206,6 +206,13 @@ public class DistributionSignforStockArticleVO implements Serializable { @ApiModelProperty(value = "创建时间") private Date createTime; + /** + * 签收扫描时间 + */ + @ApiModelProperty(value = "签收扫描时间") + private Date scanSigningTime; + + /** * 创建时间 */ 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 c3dcb8805..7966ac629 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 @@ -13,21 +13,35 @@ import java.io.Serializable; @Getter public enum NodeEnums implements Serializable { - INITIAL_WAREHOUSE_ENTRY(10, "始发仓入库"), - BILLING(20, "开单"), - INITIAL_WAREHOUSE_LOADING(30, "始发仓装车"), - INITIAL_WAREHOUSE_DEPART(40, "始发仓发车"), - TRANSFER_WAREHOUSE_UNLOADING(50, "中转仓卸车确认"), - TRANSFER_WAREHOUSE_DEPART(60, "中转仓发车"), - END_WAREHOUSE_UNLOADING(70, "末端仓卸车确认"), - TRIPARTITE_TRANSFER_DEPART(75, "三方中转发车"), - SORTING_TRAYS(80, "分拣打托"), - PUTAWAY(90, "上架"), - STOCKING_OPERATION(100, "备货作业"), - DELIST(110, "下架"), - DISTRIBUTION_LOADING(120, "配送装车"), - DISTRIBUTION_SIGN_FOR(130, "配送签收"), - CLERK_REVIEW(140, "文员复核"); + INITIAL_DATA_ENTRY(10, "数据入库"), + INITIAL_WAREHOUSE_ENTRY(20, "始发仓入库"), + BILLING(30, "开单"), + INITIAL_WAREHOUSE_LOADING(40, "始发仓装车"), + CANCEL_INITIAL_WAREHOUSE_LOADING(50, "始发仓取消装车"), + INITIAL_WAREHOUSE_DEPART(60, "始发仓发车"), + CANCEL_INITIAL_WAREHOUSE_DEPART(70, "始发仓取消发车"), + NET_ARRIVE_CAR(80,"网点到车"), + CANCEL_NET_ARRIVE_CAR(90,"网点取消到车"), + UNLOAD_INCOMING_WAREHOUSE(100,"卸车入库"), + TRANSFER_WAREHOUSE_UNLOADING(110, "网点卸车确认"), + TRANSFER_WAREHOUSE_DEPART(120, "网点发车"), + CANEL_TRANSFER_WAREHOUSE_DEPART(130, "网点取消发车"), + FINAL_NET_ARRIVE_CAR(140,"终点到车"), + CANCEL_FINAL_NET_ARRIVE_CAR(150,"终点取消到车"), + SIGN_DIRECT_SHIPPER(160,"直发商家签收"), + END_WAREHOUSE_UNLOADING(170, "末端仓卸车确认"), + TRIPARTITE_TRANSFER_DEPART(180, "三方中转发车"), + CANCEL_TRIPARTITE_TRANSFER_DEPART(190, "三方中转取消发车"), + ARRICE_TRIPARTITE_TRANSFER_DEPART(200, "三方中转到达"), + sign_TRIPARTITE_TRANSFER_DEPART(210, "三方中转签收"), + SORTING_TRAYS(220, "分拣打托"), + UN_SORTING_TRAYS(230, "包件解托"), + PUTAWAY(240, "上架"), + DELIST(250, "下架"), + STOCKING_OPERATION(260, "备货作业"), + DISTRIBUTION_LOADING(270, "配送装车"), + DISTRIBUTION_SIGN_FOR(280, "配送签收"), + CLERK_REVIEW(290, "文员复核"); private Integer code; private String value; diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataFactoryCategoryController.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataFactoryCategoryController.java index 364ac363b..faf44a5e6 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataFactoryCategoryController.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataFactoryCategoryController.java @@ -28,7 +28,7 @@ public class BasicdataFactoryCategoryController extends BladeController { @ResponseBody @PostMapping("/pageList") @ApiOperationSupport(order = 1) - @ApiOperation(value = "提货单列表", notes = "传入basicdataFactoryCategoryDTO") + @ApiOperation(value = "工厂物料列表", notes = "传入basicdataFactoryCategoryDTO") public R pageList(@RequestBody BasicdataFactoryCategoryDTO basicdataFactoryCategoryDTO) { String method = "############pageList: "; log.info(method+"请求参数{}",basicdataFactoryCategoryDTO); @@ -40,8 +40,8 @@ public class BasicdataFactoryCategoryController extends BladeController { log.error(e.message,e); return R.fail(e.code,e.message); }catch (Exception e){ - log.error("############sendOrders: 系统异常",e); - return R.fail(500,"############sendOrders: 系统异常"); + log.error(method+"系统异常",e); + return R.fail(500,method+"系统异常"); } } @@ -49,7 +49,7 @@ public class BasicdataFactoryCategoryController extends BladeController { @ResponseBody @PostMapping("/save") @ApiOperationSupport(order = 1) - @ApiOperation(value = "提货单列表", notes = "传入basicdataFactoryCategoryDTO") + @ApiOperation(value = "新增工厂物料", notes = "传入basicdataFactoryCategoryDTO") public R save(@RequestBody BasicdataFactoryCategoryDTO basicdataFactoryCategoryDTO) { String method = "############save: "; log.info(method+"请求参数{}",basicdataFactoryCategoryDTO); @@ -59,8 +59,28 @@ public class BasicdataFactoryCategoryController extends BladeController { log.error(e.message,e); return R.fail(e.code,e.message); }catch (Exception e){ - log.error("############sendOrders: 系统异常",e); - return R.fail(500,"############sendOrders: 系统异常"); + log.error(method+"系统异常",e); + return R.fail(500,method+"系统异常"); + } + } + + @ResponseBody + @PostMapping("/remove") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "移除工厂物料", notes = "传入basicdataFactoryCategoryDTO") + public R remove(@RequestBody BasicdataFactoryCategoryDTO basicdataFactoryCategoryDTO) { + String method = "############remove: "; + log.info(method+"请求参数{}",basicdataFactoryCategoryDTO); + Long factoryCategoryId = basicdataFactoryCategoryDTO.getId(); + + try{ + return R.status(basicdataFactoryCategoryService.removeById(factoryCategoryId)); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,method+"系统异常"); } } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataOpenIncomingController.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataOpenIncomingController.java new file mode 100644 index 000000000..066ae57a6 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataOpenIncomingController.java @@ -0,0 +1,109 @@ +package com.logpm.basicdata.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.logpm.basicdata.dto.BasicdataOpenIncomingDTO; +import com.logpm.basicdata.service.IBasicdataOpenIncomingSettingService; +import com.logpm.basicdata.vo.BasicdataOpenIncomingSettingVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.exception.CustomerException; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.StringUtil; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +@Slf4j +@RestController +@AllArgsConstructor +@RequestMapping("/openIncoming") +@Api(value = "开单及入库", tags = "开单及入库配置接口") +public class BasicdataOpenIncomingController { + + private final IBasicdataOpenIncomingSettingService basicdataOpenIncomingSettingService; + + @ResponseBody + @PostMapping("/pageList") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "开单及入库配置表", notes = "传入basicdataOpenIncomingDTO") + public R pageList(@RequestBody BasicdataOpenIncomingDTO basicdataOpenIncomingDTO) { + String method = "############pageList: "; + log.info(method+"请求参数{}",basicdataOpenIncomingDTO); + try{ + + IPage pages = basicdataOpenIncomingSettingService.pageList(basicdataOpenIncomingDTO); + return R.data(pages); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,method+"系统异常"); + } + } + + + @ResponseBody + @PostMapping("/addEntity") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "新增开单及入库配置", notes = "传入basicdataOpenIncomingDTO") + public R addEntity(@RequestBody BasicdataOpenIncomingDTO basicdataOpenIncomingDTO) { + String method = "############addEntity: "; + log.info(method+"请求参数{}",basicdataOpenIncomingDTO); + try{ + String brand = basicdataOpenIncomingDTO.getBrand(); + Long warehouseId = basicdataOpenIncomingDTO.getWarehouseId(); + if(StringUtil.isBlank(brand)){ + log.warn(method+"品牌不能为空"); + return R.fail(405,"品牌不能为空"); + } + if(Objects.isNull(warehouseId)){ + log.warn(method+"仓库不能为空"); + return R.fail(405,"仓库不能为空"); + } + + return basicdataOpenIncomingSettingService.addEntity(basicdataOpenIncomingDTO); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,method+"系统异常"); + } + } + + + @ResponseBody + @PostMapping("/remove") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "移除开单及入库配置", notes = "传入basicdataOpenIncomingDTO") + public R remove(@RequestBody BasicdataOpenIncomingDTO basicdataOpenIncomingDTO) { + String method = "############addEntity: "; + log.info(method+"请求参数{}",basicdataOpenIncomingDTO); + try{ + String brand = basicdataOpenIncomingDTO.getBrand(); + Long warehouseId = basicdataOpenIncomingDTO.getWarehouseId(); + if(StringUtil.isBlank(brand)){ + log.warn(method+"品牌不能为空"); + return R.fail(405,"品牌不能为空"); + } + if(Objects.isNull(warehouseId)){ + log.warn(method+"仓库不能为空"); + return R.fail(405,"仓库不能为空"); + } + + return basicdataOpenIncomingSettingService.addEntity(basicdataOpenIncomingDTO); + }catch (CustomerException e){ + log.error(e.message,e); + return R.fail(e.code,e.message); + }catch (Exception e){ + log.error(method+"系统异常",e); + return R.fail(500,method+"系统异常"); + } + } + + +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/dto/BasicdataOpenIncomingDTO.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/dto/BasicdataOpenIncomingDTO.java new file mode 100644 index 000000000..453186a30 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/dto/BasicdataOpenIncomingDTO.java @@ -0,0 +1,12 @@ +package com.logpm.basicdata.dto; + +import com.logpm.basicdata.entity.BasicdataOpenIncomingSettingEntity; +import lombok.Data; + +@Data +public class BasicdataOpenIncomingDTO extends BasicdataOpenIncomingSettingEntity { + + private Integer pageSize; + private Integer pageNum; + +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataOpenIncomingSettingMapper.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataOpenIncomingSettingMapper.java new file mode 100644 index 000000000..4d6acfe13 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataOpenIncomingSettingMapper.java @@ -0,0 +1,17 @@ +package com.logpm.basicdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.logpm.basicdata.dto.BasicdataOpenIncomingDTO; +import com.logpm.basicdata.entity.BasicdataOpenIncomingSettingEntity; +import com.logpm.basicdata.vo.BasicdataOpenIncomingSettingVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface BasicdataOpenIncomingSettingMapper extends BaseMapper { + + IPage pageList(IPage page, @Param("param") BasicdataOpenIncomingDTO basicdataOpenIncomingDTO); + + BasicdataOpenIncomingSettingEntity findEntityByParam(@Param("param") BasicdataOpenIncomingDTO basicdataOpenIncomingDTO); +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataOpenIncomingSettingMapper.xml b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataOpenIncomingSettingMapper.xml new file mode 100644 index 000000000..b71de652a --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataOpenIncomingSettingMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataOpenIncomingSettingService.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataOpenIncomingSettingService.java new file mode 100644 index 000000000..c89c27fe4 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/IBasicdataOpenIncomingSettingService.java @@ -0,0 +1,15 @@ +package com.logpm.basicdata.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.logpm.basicdata.dto.BasicdataOpenIncomingDTO; +import com.logpm.basicdata.entity.BasicdataOpenIncomingSettingEntity; +import com.logpm.basicdata.vo.BasicdataOpenIncomingSettingVO; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; + +public interface IBasicdataOpenIncomingSettingService extends BaseService { + IPage pageList(BasicdataOpenIncomingDTO basicdataOpenIncomingDTO); + + R addEntity(BasicdataOpenIncomingDTO basicdataOpenIncomingDTO); + +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataOpenIncomingSettingServiceImpl.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataOpenIncomingSettingServiceImpl.java new file mode 100644 index 000000000..7066fd147 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataOpenIncomingSettingServiceImpl.java @@ -0,0 +1,47 @@ +package com.logpm.basicdata.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.logpm.basicdata.dto.BasicdataOpenIncomingDTO; +import com.logpm.basicdata.entity.BasicdataOpenIncomingSettingEntity; +import com.logpm.basicdata.mapper.BasicdataOpenIncomingSettingMapper; +import com.logpm.basicdata.service.IBasicdataOpenIncomingSettingService; +import com.logpm.basicdata.vo.BasicdataOpenIncomingSettingVO; +import lombok.AllArgsConstructor; +import lombok.extern.log4j.Log4j2; +import org.springblade.common.exception.CustomerException; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +@Service +@AllArgsConstructor +@Log4j2 +public class BasicdataOpenIncomingSettingServiceImpl extends BaseServiceImpl implements IBasicdataOpenIncomingSettingService { + @Override + public IPage pageList(BasicdataOpenIncomingDTO basicdataOpenIncomingDTO) { + IPage page = new Page<>(); + page.setCurrent(basicdataOpenIncomingDTO.getPageNum()); + page.setSize(basicdataOpenIncomingDTO.getPageSize()); + + IPage pageList = baseMapper.pageList(page,basicdataOpenIncomingDTO); + + return pageList; + } + + @Override + public R addEntity(BasicdataOpenIncomingDTO basicdataOpenIncomingDTO) { + + BasicdataOpenIncomingSettingEntity basicdataOpenIncomingSettingEntity = baseMapper.findEntityByParam(basicdataOpenIncomingDTO); + if(!Objects.isNull(basicdataOpenIncomingSettingEntity)){ + log.warn("############addEntity: 配置已存在"); + return R.fail(405,"配置已存在"); + } + + save(basicdataOpenIncomingDTO); + + return R.success("新增成功"); + } +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSignforController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSignforController.java index ae24ab647..cd961fcbf 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSignforController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionSignforController.java @@ -464,7 +464,10 @@ public class DistributionSignforController extends BladeController { @ApiOperationSupport(order = 7) @ApiOperation(value = "PC下载签收图片", notes = "传入ids") public void handlePicture(@RequestParam String ids,HttpServletResponse res) { - distributionSignforService.handlePicture(ids,res); + if(StringUtils.isNotBlank(ids)){ + distributionSignforService.handlePicture(ids,res); + } + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionStockArticleOweDTO.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionStockArticleOweDTO.java index 344e2c74b..04d40efaf 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionStockArticleOweDTO.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistributionStockArticleOweDTO.java @@ -1,9 +1,11 @@ package com.logpm.distribution.dto; import com.logpm.distribution.entity.DistributionStockArticleEntity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Date; import java.util.List; /** @@ -35,5 +37,43 @@ public class DistributionStockArticleOweDTO extends DistributionStockArticleEnti private String startDate; private String entDate; private String signinTime; + /** + * 入库时间起始 + */ + @ApiModelProperty(value = "复核时间起始") + private Date signingTimeStart; + + /** + * 入库时间结束 + */ + @ApiModelProperty(value = "复核时间结束") + private Date signingTimeEnd; + /** + * 入库时间起始 + */ + @ApiModelProperty(value = "签收扫描时间区间起始") + private Date scanSigningTimeStart; + /** + * 扫描时间 + */ + @ApiModelProperty(value = "扫描时间") + private Date scanSigningTime; + + /** + * 入库时间结束 + */ + @ApiModelProperty(value = "签收扫描时间区间结束") + private Date scanSigningTimeEnd; + /** + * 入库时间起始 + */ + @ApiModelProperty(value = "入库时间起始") + private Date warehouseEntryTimeStart; + + /** + * 入库时间结束 + */ + @ApiModelProperty(value = "入库时间结束") + private Date warehouseEntryTimeEnd; private List warehouseIdList; } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml index 292475ccd..6a7c6b6b1 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml @@ -1161,7 +1161,8 @@ GROUP_CONCAT(DISTINCT IFNULL( m.driverName,'')) AS driverName, GROUP_CONCAT(DISTINCT IFNULL( m.vehicleName,'')) AS vehicleName, GROUP_CONCAT(DISTINCT IFNULL( m.examine_user_name,'')) AS examineUserNames, - k.earliestWarehouseEntryTime AS earliestWarehouseEntryTime + k.earliestWarehouseEntryTime AS earliestWarehouseEntryTime, + j.scanSigningTime AS scanSigningTime FROM logpm_distribution_stock_article AS ldsa LEFT JOIN ( @@ -1191,7 +1192,7 @@ CONCAT( lds.examine_user_name ) AS examine_user_name, CONCAT( lddl.driver_name ) AS driverName, CONCAT( lddl.vehicle_name ) AS vehicleName, - lds.signing_time + MAX(lds.signing_time) AS signing_time FROM logpm_distribution_reservation_stockarticle AS ldrs LEFT JOIN logpm_distribution_reservation ldr ON ldrs.reservation_id = ldr.id @@ -1200,8 +1201,10 @@ LEFT JOIN logpm_distribution_signfor As lds ON lds.reservation_id = ldr.id LEFT JOIN logpm_distribution_delivery_list AS lddl ON lds.delivery_id = lddl.id + GROUP BY ldr.id ) AS m ON ldsa.id = m.stock_article_id AND t.reservation_id = m.reservation_id - LEFT JOIN ( SELECT stock_article_id, min( create_time ) AS earliestWarehouseEntryTime FROM logpm_distribution_parcel_list) AS k ON k.stock_article_id = ldsa.id + LEFT JOIN ( SELECT stock_article_id, min( create_time ) AS earliestWarehouseEntryTime FROM logpm_distribution_parcel_list GROUP BY stock_article_id) AS k ON k.stock_article_id = ldsa.id + LEFT JOIN ( SELECT order_id, max( signing_time ) AS scanSigningTime FROM logpm_distribution_loadscan WHERE scan_status != 1 AND signfor_state = 2 GROUP BY order_id ) AS j ON j.order_id = ldsa.id ldsa.order_status in ('70','80') @@ -1246,19 +1249,19 @@ AND ldsa.warehouse_id IN - + #{item} AND ldsa.order_code in - + #{item} AND ldsa.waybill_number in - + #{item} @@ -1277,10 +1280,27 @@ and DATE(k.earliestWarehouseEntryTime) = #{param.earliestWarehouseEntryTime} - - - - + and DATE(j.scanSigningTime) = + #{param.scanSigningTime} + + and DATE(k.earliestWarehouseEntryTime) > + #{param.warehouseEntryTimeStart} + + and DATE(k.earliestWarehouseEntryTime) < + #{param.warehouseEntryTimeEnd} + + and DATE(m.signing_time) > + #{param.signingTimeStart} + + and DATE(m.signing_time) < + #{param.signingTimeEnd} + + and DATE(j.scanSigningTime) > + #{param.scanSigningTimeStart} + + and DATE(j.scanSigningTime) < + #{param.scanSigningTimeEnd} + GROUP BY ldsa.id diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml index 9e51b1592..b5dbcefa0 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml @@ -174,6 +174,13 @@ when lds.id is null then '未备货' else '已备货' end as stockupStatusName, + CASE ldpl.order_package_status + WHEN '70' THEN '已签收' + WHEN '20' THEN '已入库' + WHEN '60' THEN '已出库' + ELSE + '未签收' + END orderStatusName, lds.create_time stockupCreateTime, ldbl.consignee stockupConsignee, ldbl.pick_up_plate stockupPickUpPlate, diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java index eca0751ee..2d97c9579 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java @@ -1539,7 +1539,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { @Transactional(rollbackFor = Exception.class) @Async public void sendReviewFactory(Long signingId, String warehouseName, Long warehouseId) { - String brands = "梦天,欧派";//可追加 ,志邦 + String brands = "梦天,欧派,志邦";//可追加 log.info(">>>>>>>>>>> 签收推送 对象 {}", "signingId:=" + signingId + "warehouseName:=" + warehouseName + "warehouseId:=" + warehouseId); //查询签收信息 DistributionSignforEntity distributionSignforEntity = distributionSignforMapper.selectById(signingId); @@ -1657,7 +1657,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService { NodePushMsg msg = new NodePushMsg(); msg.setNode(NodeEnums.CLERK_REVIEW); msg.setBrand(BrandEnums.ZB); - msg.setOperator(AuthUtil.getUser().getNickName()); + msg.setOperator(distributionSignforEntity.getDeliveryDriverName()); msg.setOperatorTime(new Date()); msg.setContent(contents); log.info("推送工厂数据:{}", JSONUtil.toJsonStr(msg)); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionClientMessageServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionClientMessageServiceImpl.java index b6d683dda..f9255258b 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionClientMessageServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionClientMessageServiceImpl.java @@ -78,18 +78,6 @@ public class DistributionClientMessageServiceImpl extends BaseServiceImpl list = distributionStockArticleService.list(Wrappers.query().lambda() -// .eq(DistributionStockArticleEntity::getId, s) -// ); -// DistributionStockArticleEntity distributionStockArticleEntity = list.get(0); -// distributionStockArticleEntity.setCustomerName(distributionClientMessage.getName()); -// distributionStockArticleEntity.setCustomerTelephone(distributionClientMessage.getPhone()); -// distributionStockArticleEntity.setCustomerAddress(distributionClientMessage.getAddress()); -// distributionStockArticleService.updateById(distributionStockArticleEntity); -// DistributionClientMessageEntity distributionClientMessageEntity = new DistributionClientMessageEntity(); -// BeanUtils.copyProperties(distributionClientMessage,distributionClientMessageEntity); -// distributionClientMessageEntity.setStockArticleId(s); -// this.save(distributionClientMessageEntity); DistributionStockArticleEntity oldStockArticle = distributionStockArticleService.getById(Long.parseLong(s)); DistributionStockArticleEntity newStockArticle = new DistributionStockArticleEntity(); BeanUtil.copy(oldStockArticle,newStockArticle); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java index ddf8adf9c..0d3bbf87d 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java @@ -115,7 +115,10 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl parcelListVOS = DistributionParcelListWrapper.build().listVO(parcelListEntityList); parcelListVOS.forEach(p -> { //查询扫描表, - DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.query().lambda().eq(DistributionLoadscanEntity::getPackageId, p.getId()).eq(DistributionLoadscanEntity::getOrderPackageCode, p.getOrderPackageCode())); + DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.query().lambda() + .eq(DistributionLoadscanEntity::getPackageId, p.getId()) + .eq(DistributionLoadscanEntity::getOrderPackageCode, p.getOrderPackageCode()) + ); if (Func.isNotEmpty(loadscanEntity)) { try { p.setLoadingTime(loadscanEntity.getScanTime()); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index 07a9af669..5a249cb7b 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -559,7 +559,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); DistributionDeliverySelfEntity distributionDeliverySelfEntity = new DistributionDeliverySelfEntity(); if ("1".equals(distributionDeliveryListEntity.getKind())) { if (!Objects.isNull(distrilbutionloadingscanDTO.getLoadingId())) { @@ -655,6 +655,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:"); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + } //查询已装车件数 // String str = getLoadingMsg(distrilbutionloadingscanDTO); @@ -1956,6 +1974,10 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); //根据传递进来的库存品条码进行库存品的校验 //获取之前的 @@ -1990,6 +2013,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:"); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + } String msg = getLoadingMsg(distrilbutionloadingscanDTO); return Resp.scanSuccess("扫描成功", msg); } @@ -5332,6 +5371,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); List parcelListEntities = distributionParcelListService.list(Wrappers.query().lambda() .eq(DistributionParcelListEntity::getOrderPackageCode, distrilbutionloadingscanDTO.getBarcode()) .eq(DistributionParcelListEntity::getWarehouseId, myCurrentWarehouse.getId()) @@ -5464,7 +5504,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImplquery().lambda().eq(DistributionSignforEntity::getReservationId, reservationEntity.getId()).eq(DistributionSignforEntity::getDeliveryId, distrilbutionloadingscanDTO.getDeliveryId())); if (Func.isNotEmpty(signforEntity)) { //标识该客户存在异常装车包件,为了后续的异常装车审核 @@ -5485,6 +5525,21 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds,60L); + } + } return Resp.scanSuccess("操作成功", "异常" + abnormalTotal + "件"); } @@ -5578,7 +5633,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); if (Func.isNotEmpty(distrilbutionloadingscanDTO.getReservationId())) { //查询该订单是否属于当前配送任务 List reservationStockarticleEntityList = distributionReservationMapper.selectStockArticleByReservationId(distrilbutionloadingscanDTO.getReservationId()); @@ -5699,6 +5754,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl 0) { str.append("异常").append(abnormalLoadingNum.get() + "件"); } + if (!packageLockIds.isEmpty()){ + List a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:"); + if (Func.isNotEmpty(a)){ + boolean aaa = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (aaa){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds ,60L); + } + } return Resp.scanSuccess("装车成功", str.toString()); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java index 734e97833..15ffbd2cf 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java @@ -1532,6 +1532,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl distributionParcelListEntities = distributionParcelListService.list(Wrappers.query().lambda().eq(DistributionParcelListEntity::getStockArticleId, distributionStockArticleDTO.getId()) .ne(DistributionParcelListEntity::getOrderPackageLoadingStatus, OrderPackageLoadingStatusConstant.yizhuangche.getValue()) .ne(DistributionParcelListEntity::getOrderPackageReservationStatus, OrderPackageReservationStatusConstant.yiyueyue.getValue()) + .eq(DistributionParcelListEntity::getConditions, 1) .notIn(DistributionParcelListEntity::getOrderPackageStatus, new String[]{OrderPackageStatusConstant.yichuku.getValue(), OrderPackageStatusConstant.yiqianshou.getValue()})); distributionParcelListEntities.forEach(dp -> { if (!dp.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())) { diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java index 415ed3bd2..5b90d2152 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java @@ -77,6 +77,7 @@ import org.springblade.common.utils.CommonUtil; import org.springblade.common.utils.FileUtil; import org.springblade.common.utils.GaoDeApiUtil; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; @@ -208,6 +209,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl selectDistributionSignforPage(IPage page, DistributionSignforVO distributionSignfor) { @@ -2059,7 +2063,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); try { nickName = AuthUtil.getNickName(); @@ -2073,6 +2081,9 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl().lambda() @@ -2194,6 +2205,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" + packageLockIds); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" + packageLockIds,packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" + packageLockIds,packageLockIds,60L); + } + } @@ -2302,8 +2329,13 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl p.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())); + boolean flag = parcelListEntities.stream().anyMatch(p -> OrderPackageStatusConstant.yiqianshou.getValue().equals(p.getOrderPackageStatus())); if (flag) { log.error("########缺失参数,barcodes:{}", distrilbutionloadingscanDTO.getBarcodes()); return R.fail("存在已签收包件!!"); @@ -2318,6 +2350,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl orderpackages = new ArrayList<>(); + List packageLockIds = new ArrayList<>(); for (String orderPackageCode : orderPackageCodes) { List collect = parcelListEntityList.stream().filter(p -> p.getOrderPackageCode().equals(orderPackageCode)).collect(Collectors.toList()); if (Func.isNotEmpty(collect) && collect.size() == 1) { @@ -2342,6 +2375,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl().lambda() @@ -2410,6 +2443,8 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:"); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + } //维护客户 distributionReservationService.maintenanceReservationInfo(distrilbutionloadingscanDTO.getReservationId()); //维护配送任务 @@ -2603,6 +2654,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl distributionSignPrintList = new ArrayList<>(); distributionSignfor.getMap().forEach((k, v) -> { - v.stream().forEach(i -> { + v.forEach(i -> { DistributionSignPrintEntity distributionSignPrint = new DistributionSignPrintEntity(); BeanUtils.copyProperties(i, distributionSignPrint); distributionSignPrint.setId(null); @@ -2653,6 +2705,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); if (Func.isNotEmpty(parcelListEntityList) && parcelListEntityList.size() == 1) { DistributionParcelListEntity parcelListEntity = parcelListEntityList.get(0); if (parcelListEntity.getOrderPackageStatus().equals(OrderPackageStatusConstant.yiqianshou.getValue())) { @@ -2669,7 +2726,6 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl().lambda() @@ -2823,6 +2879,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds,10L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,10L); + } + } return Resp.scanSuccess("操作成功", s); } @@ -3077,12 +3149,21 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl detailEntities = distributionReservationMapper.selectInventoryListByReservation(distrilbutionloadingscanDTO.getReservationId()); if (Func.isEmpty(detailEntities)) { return Resp.scanFail("此码无效", "此码无效"); } + DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListMapper.selectById(distrilbutionloadingscanDTO.getDeliveryId()); + if (Func.isEmpty(deliveryListEntity)){ + return R.fail(403,"配送错误"); + } + List packageLockIds = new ArrayList<>(); + boolean isHaveCode = detailEntities.stream().anyMatch(inven -> Func.isNotEmpty(inven.getStockPackageCode())); if (isHaveCode) { @@ -3106,6 +3187,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl().lambda() @@ -3172,6 +3253,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + } return Resp.scanSuccess("签收成功", str); } @@ -4220,6 +4317,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); //查询数据 DistributionSignforEntity distributionSignforEntity = baseMapper.selectOne(new QueryWrapper().lambda() .eq(DistributionSignforEntity::getDeliveryId, distributionSignfor.getDeliveryId()) @@ -4286,6 +4384,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl>>>>>>>>>>>>>:{}",loadingInventoryNum); log.info(method+"签收包件数>>>>>>>>>>>>>>:{}",signingPackageNum); log.info(method+"签收库存品数>>>>>>>>>>>>>>:{}",signingPackageNum); - + if (!packageLockIds.isEmpty()){ + List a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + distributionDeliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,60L); + } + } LambdaUpdateWrapper set = new UpdateWrapper().lambda() .eq(DistributionSignforEntity::getId, distributionSignforEntity.getId()) .set(StringUtils.isNotBlank(distributionSignfor.getDeliverySignPictures()), DistributionSignforEntity::getDeliverySignPictures, distributionSignfor.getDeliverySignPictures()) @@ -5154,6 +5279,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl packageLockIds = new ArrayList<>(); //这里装车的数据需要进行补录 DistributionDeliveryListEntity deliveryListEntity = distributionDeliveryListMapper.selectById(distrilbutionloadingscanDTO.getDeliveryId()); DistributionDeliverySelfEntity distributionDeliverySelfEntity = new DistributionDeliverySelfDTO(); @@ -5336,11 +5462,27 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl a = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ); + if (Func.isNotEmpty(a)){ + boolean flag = a.stream().anyMatch(any -> packageLockIds.contains(any)); + if (flag){ + //正在操作,请稍后重试 + throw new RuntimeException("该包件正在被操作,请稍后再试!!!"); + }else { + packageLockIds.addAll(a); + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:" ,packageLockIds,10L); + } + }else { + bladeRedis.setEx("warehouseId:" + myCurrentWarehouse.getId() + "trainNumber:" + deliveryListEntity.getTrainNumber() + "orderPackageCode:",packageLockIds,10L); + } + } String str = checkSignNum(distrilbutionloadingscanDTO); return Resp.scanSuccess("签收成功", str); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java index 39df06f51..76b174978 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java @@ -1370,6 +1370,7 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("order_code", orderCode) .eq("warehouse_id", warehouseId) + .eq("conditions", 1) .eq("is_deleted", 0); List list = distributionParcelListService.list(queryWrapper); Integer incomingNum = 0; @@ -1549,6 +1550,7 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl parcelListEntities = distributionParcelListService.list(Wrappers.query().lambda() .eq(DistributionParcelListEntity::getOrderCode, s) + .eq(DistributionParcelListEntity::getConditions, 1) .eq(DistributionParcelListEntity::getStockArticleId, stockArticleEntity.getId()) .eq(DistributionParcelListEntity::getWarehouseId, warehouseId) ); @@ -1989,7 +1991,7 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl myWarehouseList = warehouseClient.getMyWatchWarehouse(); + List myWarehouseList = warehouseClient.getMyWarehouseList(); List collect = myWarehouseList.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList()); if (collect.size() > 1) { diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java index 48af8336e..a33d41b3f 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java @@ -372,7 +372,8 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl { + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodeOrderMapper.xml b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodeOrderMapper.xml new file mode 100644 index 000000000..ae2853be0 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mapper/FactoryNodeOrderMapper.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 c7c795dcb..ce8ee4e53 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 @@ -19,7 +19,8 @@ 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 com.logpm.factorydata.zbom.vo.OrderPackageDTO; +import com.logpm.factorydata.zbom.vo.OrderPackageSignDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -34,9 +35,12 @@ import java.util.List; @Mapper public interface OrderPackageMapper extends BaseMapper { - List findOrderCodebypackageCodes(@Param("packageList") List packageCodeList); + List findOrderCodebypackageCodes(@Param("packageList") List packageCodeList); void updateSignForStatus(@Param("packageCodeList") List packageCodeList); List findNoSignNumber(@Param("packageCodeList") List packageCodeList); + + List findByPackageCodes(@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 444abdfcf..0a1bf8f63 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 @@ -16,9 +16,10 @@ ) packageCodeIds where packageCodeIds.pid = t.package_code) - select re.depart_code, t.platform_order_code, + group_concat(t.package_code) packageCode, count(*) signQty from zb_order_package t left join zb_receipt re on re.id = t.receipt_id @@ -61,5 +62,20 @@ and t.sign_status = 0 group by re.depart_code, t.platform_order_code + 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 bb29aef4b..66cc4efeb 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 @@ -2,27 +2,38 @@ package com.logpm.factorydata.zbom.mq; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; 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.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.logpm.factorydata.enums.BrandEnums; import com.logpm.factorydata.enums.NodeEnums; +import com.logpm.factorydata.feign.IFactoryDataClient; +import com.logpm.factorydata.vo.NodePushMsg; +import com.logpm.factorydata.vo.SendMsg; import com.logpm.factorydata.zbom.constants.ZbomConstants; +import com.logpm.factorydata.zbom.entity.ZbFactoryNodeOrderEntity; 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.ZbomNodeEnums; import com.logpm.factorydata.zbom.enums.ZbomNodeMappingEnums; import com.logpm.factorydata.zbom.pros.ZbFactoryProperties; +import com.logpm.factorydata.zbom.service.IFactoryNodeOrderService; 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 com.logpm.factorydata.zbom.vo.OrderPackageSignDTO; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springblade.common.constant.factorydata.FactoryDataConstants; +import org.springblade.common.utils.HutoolConfigUtil; import org.springframework.amqp.core.ExchangeTypes; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.Queue; @@ -50,9 +61,29 @@ public class ZbomNodeDataPushListener { private final IOrderPackageService orderPackageService; private final IFactoryNodePushFailService nodePushFailService; private final IFactoryNodePushService nodePushService; + private final IFactoryNodeOrderService nodeOrderService; + private final IFactoryDataClient factoryDataClient; + /** + * 该方法用于监听来自ZBOM节点数据推送的延迟消息。 + * 通过@RabbitListener注解绑定到特定的队列和交换器,以接收特定类型的消息。 + * 接收到消息后,会立即调用nodeDataPush方法处理该消息。 + * + * @param msg 接收到的消息内容,类型为String。 + */ @RabbitListener(bindings = @QueueBinding( - value = @Queue(name = FactoryDataConstants.Mq.Queues.ZBOM_NODE_DATA_PUSH), + value = @Queue(name = FactoryDataConstants.Mq.Queues.ZBOM_NODE_DATA_PUSH, durable = "true"), + exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH_DELAYED, type = ExchangeTypes.TOPIC + , delayed = FactoryDataConstants.Mq.DELAYED), + key = FactoryDataConstants.Mq.RoutingKeys.ZBOM_NODE_DATA_PUSH + )) + public void nodeDataPushDelayed(String msg) { + // 直接调用nodeDataPush方法处理接收到的消息 + nodeDataPush(msg); + } + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = FactoryDataConstants.Mq.Queues.ZBOM_NODE_DATA_PUSH, durable = "true"), exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC), key = FactoryDataConstants.Mq.RoutingKeys.ZBOM_NODE_DATA_PUSH )) @@ -63,9 +94,9 @@ public class ZbomNodeDataPushListener { if (!checkMsg(msg)) { return; } - JSONObject msgEntries = JSONUtil.parseObj(msg); + JSONObject entries = JSONUtil.parseObj(msg); // 业务数据 - List content = msgEntries.getBeanList("content", JSONObject.class); + List content = entries.getBeanList("content", JSONObject.class); List packageCodeList = null; if (CollUtil.isNotEmpty(content)) { // 查询这次操作的所有包件和运单号 @@ -77,64 +108,12 @@ public class ZbomNodeDataPushListener { } } } - - // 构建参数对象 - List nodeConfirmParams = initParam(msgEntries, packageCodeList); - try { - // 推送给志邦 - if (CollUtil.isNotEmpty(nodeConfirmParams)) { - for (NodeConfirmParamDTO nodeConfirmParam : nodeConfirmParams) { - String body = JSONUtil.toJsonStr(nodeConfirmParam); - String result = ZbomUtil.pushZbomSystem(zbProperties, body, ZbomConstants.Method.ROUTE_NODE_CONFIRM); - log.info("zb节点推送数据:参数{},返回值{}。", body, result); - if (StrUtil.isNotBlank(result)) { - ZbFactoryNodePushFailEntity build = ZbFactoryNodePushFailEntity.builder().content(body).resultContent(result).build(); - if (!StrUtil.contains(result, "code")) { - // 推送失败 - nodePushFailService.save(build); - } else { - JSONObject entries = JSONUtil.parseObj(result); - String code = entries.getStr("code"); - if (ObjectUtil.equal(code, "1")) { - // 推送失败 - 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); - String node = msgEntries.getStr("node"); - NodeEnums nodeEnums = EnumUtil.fromString(NodeEnums.class, node); - if (ObjectUtil.equal(nodeEnums, NodeEnums.CLERK_REVIEW)) { - // 修改订单包件表的签收状态 - orderPackageService.updateSignForStatus(packageCodeList); - } - } - } - } - } - } - - } catch (Exception e) { - // 处理推送不成功的异常情况 - log.error("zb节点推送数据异常:{}", e); - e.printStackTrace(); - } - - } - - private List initParam(JSONObject entries, List packageCodeList) { // 处理节点信息 String node = entries.getStr("node"); NodeEnums nodeEnums = EnumUtil.fromString(NodeEnums.class, node); if (CollUtil.isNotEmpty(packageCodeList)) { // 根据运单号和自编码分组查询出对应的数量 - List orders = orderPackageService.findOrderCodebypackageCodes(packageCodeList); + List orders = orderPackageService.findOrderCodebypackageCodes(packageCodeList); // 根据运单号和自编码分组查询出未签收的数量 List noSignNumberDTOS = orderPackageService.findNoSignNumber(packageCodeList); log.info("未签收数据:{}", JSONUtil.toJsonStr(noSignNumberDTOS)); @@ -145,39 +124,211 @@ public class ZbomNodeDataPushListener { } } if (CollUtil.isNotEmpty(orders)) { - for (NodeConfirmParamDTO order : orders) { + for (OrderPackageSignDTO order : orders) { + Boolean flag = Boolean.TRUE; + NodeConfirmParamDTO paramDTO = new NodeConfirmParamDTO(); + paramDTO.setDepartCode(order.getDepartCode()); + paramDTO.setPlatformOrderCode(order.getPlatformOrderCode()); + paramDTO.setSignQty(order.getSignQty()); order.setOperator(entries.getStr("operator")); + paramDTO.setOperator(entries.getStr("operator")); order.setOperatorTime(entries.getStr("operatorTime")); + paramDTO.setOperatorTime(entries.getStr("operatorTime")); order.setAddress(entries.getStr("address")); + paramDTO.setAddress(entries.getStr("address")); // 如果是签收节点,需要判断是否为全部签收和部分签收 if (EnumUtil.equals(NodeEnums.CLERK_REVIEW, node)) { - log.info("key:{},签收数量:{}", order.getDepartCode() + "_" + order.getPlatformOrderCode(), order.getSignQty()); - Integer signNumber = Convert.toInt(order.getSignQty()); + ZbFactoryNodeOrderEntity nodeOrder = nodeOrderService.getOne(Wrappers.lambdaQuery() + .eq(ZbFactoryNodeOrderEntity::getPlatformOrderCode, paramDTO.getPlatformOrderCode()) + .eq(ZbFactoryNodeOrderEntity::getDepartCode, paramDTO.getDepartCode()) + ); + if (ObjectUtil.isNotEmpty(nodeOrder)) { + flag = Boolean.FALSE; + } + log.info("key:{},签收数量:{}", paramDTO.getDepartCode() + "_" + paramDTO.getPlatformOrderCode(), paramDTO.getSignQty()); + Integer signNumber = Convert.toInt(paramDTO.getSignQty()); // 查询当前未签收的数量与当前签收数量比较,如果未签收数较大,则是部分签收 - String key = order.getDepartCode() + order.getPlatformOrderCode(); + String key = paramDTO.getDepartCode() + paramDTO.getPlatformOrderCode(); // 部分签收 - order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_SECTION_STATUS).getCode()); + paramDTO.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_SECTION_STATUS).getCode()); if (ObjectUtil.isNotEmpty(noSignNumberMap) && noSignNumberMap.containsKey(key)) { Integer noSignNum = noSignNumberMap.get(key); if (noSignNum <= signNumber) { // 全部签收 - order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_ALL_STATUS).getCode()); + paramDTO.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_ALL_STATUS).getCode()); } } else { continue; } + // 第一次签收,节点改为送货抵达 + if (flag) { + paramDTO.setRejectQty(""); + paramDTO.setSignQty(""); + paramDTO.setNode(ZbomNodeEnums.DELIVERY_ARRIVAL.getCode()); + } } else { - order.setRejectQty(""); - order.setSignQty(""); - order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums).getCode()); + paramDTO.setRejectQty(""); + paramDTO.setSignQty(""); + paramDTO.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums).getCode()); + } + + try { + // 推送给志邦 +// if (CollUtil.isNotEmpty(nodeConfirmParams)) { +// for (NodeConfirmParamDTO nodeConfirmParam : nodeConfirmParams) { + String body = JSONUtil.toJsonStr(paramDTO); + String result = ZbomUtil.pushZbomSystem(zbProperties, body, ZbomConstants.Method.ROUTE_NODE_CONFIRM); +// JSONObject jsonObject = new JSONObject(); +// jsonObject.set("code", "0"); +// String result = JSONUtil.toJsonStr(jsonObject); + log.info("zb节点推送数据:参数{},返回值{}。", body, result); + saveResult(entries, packageCodeList, order, body, result, flag); +// } +// } + } catch (Exception e) { + // 处理推送不成功的异常情况 + log.error("zb节点推送数据异常:{}", e); + // 保存日志 + + e.printStackTrace(); } } } - return orders; + + // 构建参数对象 +// List nodeConfirmParams = initParam(msgEntries, packageCodeList); + } - return null; + } + private void saveResult(JSONObject msgEntries, List packageCodeList, OrderPackageSignDTO + nodeConfirmParam, String body, String result, Boolean flag) { + if (StrUtil.isNotBlank(result)) { + ZbFactoryNodePushFailEntity build = ZbFactoryNodePushFailEntity.builder().content(body).resultContent(result).build(); + if (!StrUtil.contains(result, "code")) { + // 推送失败 + nodePushFailService.save(build); + } else { + JSONObject entries = JSONUtil.parseObj(result); + String code = entries.getStr("code"); + if (ObjectUtil.equal(code, "1")) { + // 推送失败 + 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); + String node = msgEntries.getStr("node"); + NodeEnums nodeEnums = EnumUtil.fromString(NodeEnums.class, node); + if (ObjectUtil.equal(nodeEnums, NodeEnums.CLERK_REVIEW)) { + if (!flag) { + // 修改订单包件表的签收状态 + List packages = CollUtil.newArrayList(nodeConfirmParam.getPackageCode().split(",")); + orderPackageService.updateSignForStatus(packages); + } else { + List js = new ArrayList<>(); + String packageCode = nodeConfirmParam.getPackageCode(); + for (String s : packageCode.split(",")) { + JSONObject entries1 = new JSONObject(); + entries1.set("packageCode", s); + js.add(entries1); + } + NodePushMsg nodePushMsg = NodePushMsg.builder() + .node(NodeEnums.CLERK_REVIEW) + .operator(nodeConfirmParam.getOperator()) + .operatorTime(DateUtil.parseDateTime(nodeConfirmParam.getOperatorTime())) + .address(nodeConfirmParam.getAddress()) + .brand(BrandEnums.ZB) + .address(nodeConfirmParam.getAddress()) + .content(js) + .build(); + SendMsg message = SendMsg.builder() + .delay(30 * 60 * 1000) + .exchange(FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH_DELAYED) + .routingKey(FactoryDataConstants.Mq.RoutingKeys.ZBOM_NODE_DATA_PUSH) + .message(JSONUtil.toJsonStr(nodePushMsg, HutoolConfigUtil.jsonConfigByDataTimeFormat())) + .build(); + factoryDataClient.sendMessage(message); + } + // 修改加盟商单号+发货单号节点数据 + nodeOrderService.updateNodeOrder(nodeConfirmParam); + } + } + } + } + } + +// private List initParam(JSONObject entries, List packageCodeList) { +// // 处理节点信息 +// String node = entries.getStr("node"); +// NodeEnums nodeEnums = EnumUtil.fromString(NodeEnums.class, node); +// if (CollUtil.isNotEmpty(packageCodeList)) { +// // 根据运单号和自编码分组查询出对应的数量 +// List orders = orderPackageService.findOrderCodebypackageCodes(packageCodeList); +// // 根据运单号和自编码分组查询出未签收的数量 +// List noSignNumberDTOS = orderPackageService.findNoSignNumber(packageCodeList); +// log.info("未签收数据:{}", JSONUtil.toJsonStr(noSignNumberDTOS)); +// Map noSignNumberMap = new HashMap<>(); +// if (CollUtil.isNotEmpty(noSignNumberDTOS)) { +// for (NoSignNumberDTO noSignNumberDTO : noSignNumberDTOS) { +// noSignNumberMap.put(noSignNumberDTO.getDepartCode() + noSignNumberDTO.getPlatformOrderCode(), noSignNumberDTO.getNum()); +// } +// } +// 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)) { +// ZbFactoryNodeOrderEntity nodeOrder = nodeOrderService.getOne(Wrappers.lambdaQuery() +// .eq(ZbFactoryNodeOrderEntity::getPlatformOrderCode, order.getPlatformOrderCode()) +// .eq(ZbFactoryNodeOrderEntity::getDepartCode, order.getDepartCode()) +// ); +// Boolean flag = Boolean.FALSE; +// if (ObjectUtil.isNotEmpty(nodeOrder)) { +// flag = Boolean.TRUE; +// } +// log.info("key:{},签收数量:{}", order.getDepartCode() + "_" + order.getPlatformOrderCode(), order.getSignQty()); +// Integer signNumber = Convert.toInt(order.getSignQty()); +// // 查询当前未签收的数量与当前签收数量比较,如果未签收数较大,则是部分签收 +// String key = order.getDepartCode() + order.getPlatformOrderCode(); +// // 部分签收 +// order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_SECTION_STATUS).getCode()); +// if (ObjectUtil.isNotEmpty(noSignNumberMap) && noSignNumberMap.containsKey(key)) { +// Integer noSignNum = noSignNumberMap.get(key); +// if (noSignNum <= signNumber) { +// // 全部签收 +// order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums, ZbomConstants.Status.SIGN_FOR_ALL_STATUS).getCode()); +// } +// } else { +// continue; +// } +// // 第一次签收,节点改为送货抵达 +// if (flag) { +// order.setRejectQty(""); +// order.setSignQty(""); +// order.setNode(ZbomNodeEnums.DELIVERY_ARRIVAL.getCode()); +// } +// } else { +// order.setRejectQty(""); +// order.setSignQty(""); +// order.setNode(ZbomNodeMappingEnums.getZbomByNodeAndStatus(nodeEnums).getCode()); +// } +// } +// } +// return orders; +// } +// return null; +// } + private boolean checkMsg(String msg) { Boolean flag = Boolean.FALSE; if (StrUtil.isBlank(msg)) { diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IFactoryNodeOrderService.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IFactoryNodeOrderService.java new file mode 100644 index 000000000..460a9a7f0 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/IFactoryNodeOrderService.java @@ -0,0 +1,33 @@ +/* + * 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.ZbFactoryNodeOrderEntity; +import com.logpm.factorydata.zbom.vo.OrderPackageSignDTO; +import org.springblade.core.mp.base.BaseService; + +/** + * 发货单号的节点操作数据 服务类 + * + * @author pref + * @since 2023-08-21 + */ +public interface IFactoryNodeOrderService extends BaseService { + + void updateNodeOrder(OrderPackageSignDTO nodeConfirmParam); + +} 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 821ee7f5e..a1d45cc6b 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 @@ -18,7 +18,8 @@ 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 com.logpm.factorydata.zbom.vo.OrderPackageDTO; +import com.logpm.factorydata.zbom.vo.OrderPackageSignDTO; import org.springblade.core.mp.base.BaseService; import java.util.List; @@ -31,9 +32,11 @@ import java.util.List; */ public interface IOrderPackageService extends BaseService { - List findOrderCodebypackageCodes(List packageCodeList); + List findOrderCodebypackageCodes(List packageCodeList); void updateSignForStatus(List packageCodeList); List findNoSignNumber(List packageCodeList); + + List findByPackageCodes(List packageCodeList); } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/FactoryNodeOrderServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/FactoryNodeOrderServiceImpl.java new file mode 100644 index 000000000..5b6105422 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/service/impl/FactoryNodeOrderServiceImpl.java @@ -0,0 +1,61 @@ +/* + * 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 cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.logpm.factorydata.enums.NodeEnums; +import com.logpm.factorydata.zbom.entity.ZbFactoryNodeOrderEntity; +import com.logpm.factorydata.zbom.mapper.FactoryNodeOrderMapper; +import com.logpm.factorydata.zbom.service.IFactoryNodeOrderService; +import com.logpm.factorydata.zbom.vo.OrderPackageSignDTO; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 发货单号的节点操作数据 服务实现类 + * + * @author zqb + * @since 2024-04-08 + */ +@Slf4j +@Service +@AllArgsConstructor +public class FactoryNodeOrderServiceImpl extends BaseServiceImpl implements IFactoryNodeOrderService { + + @Override + public void updateNodeOrder(OrderPackageSignDTO nodeConfirmParam) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(ZbFactoryNodeOrderEntity::getPlatformOrderCode, nodeConfirmParam.getPlatformOrderCode()) + .eq(ZbFactoryNodeOrderEntity::getDepartCode, nodeConfirmParam.getDepartCode()); + ZbFactoryNodeOrderEntity zbFactoryNodeOrderEntity = this.baseMapper.selectOne(wrapper); + if (ObjectUtil.isEmpty(zbFactoryNodeOrderEntity)) { + zbFactoryNodeOrderEntity = new ZbFactoryNodeOrderEntity(); + zbFactoryNodeOrderEntity.setPlatformOrderCode(nodeConfirmParam.getPlatformOrderCode()); + zbFactoryNodeOrderEntity.setDepartCode(nodeConfirmParam.getDepartCode()); + } + zbFactoryNodeOrderEntity.setPushNode(NodeEnums.CLERK_REVIEW.getCode().toString()); +// String pushNode = zbFactoryNodeOrderEntity.getPushNode(); +// String join = StrUtil.join(",", pushNode, NodeEnums.CLERK_REVIEW.getCode()); +// zbFactoryNodeOrderEntity.setPushNode(join); + this.saveOrUpdate(zbFactoryNodeOrderEntity); + } + +} 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 bfced1adc..d20fa6d5e 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 @@ -20,7 +20,8 @@ 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 com.logpm.factorydata.zbom.vo.OrderPackageDTO; +import com.logpm.factorydata.zbom.vo.OrderPackageSignDTO; import org.springblade.core.mp.base.BaseServiceImpl; import org.springframework.stereotype.Service; @@ -36,8 +37,8 @@ import java.util.List; public class OrderPackageServiceImpl extends BaseServiceImpl implements IOrderPackageService { @Override - public List findOrderCodebypackageCodes(List packageCodeList) { - List orders = this.baseMapper.findOrderCodebypackageCodes(packageCodeList); + public List findOrderCodebypackageCodes(List packageCodeList) { + List orders = this.baseMapper.findOrderCodebypackageCodes(packageCodeList); return orders; } @@ -50,4 +51,9 @@ public class OrderPackageServiceImpl extends BaseServiceImpl findNoSignNumber(List packageCodeList) { return this.baseMapper.findNoSignNumber(packageCodeList); } + + @Override + public List findByPackageCodes(List packageCodeList) { + return this.baseMapper.findByPackageCodes(packageCodeList); + } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignService.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignService.java new file mode 100644 index 000000000..ecb9a51ed --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignService.java @@ -0,0 +1,136 @@ +package com.logpm.factorydata.zbom.util; + +import org.springframework.stereotype.Service; + +import javax.crypto.Mac; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; +import java.io.IOException; +import java.security.GeneralSecurityException; +import java.security.MessageDigest; +import java.util.Arrays; +import java.util.Map; + +@Service +class QmSignService { + + + /** + * @param params 参数 + * @param secret 秘钥 + * @param signMethod 加密方式 + * @param body 消息体 + * @return + * @throws Exception + */ + public static String signTopRequest(Map params, String secret, String signMethod, String body) throws Exception { + // 第一步:检查参数是否已经排序 + String[] keys = params.keySet().toArray(new String[0]); + Arrays.sort(keys); + + // 第二步:把所有参数名和参数值串在一起 + StringBuilder query = new StringBuilder(); + if ("md5".equalsIgnoreCase(signMethod)) { + query.append(secret); + } + for (String key : keys) { + String value = params.get(key); + String[] array = new String[2]; + array[0] = key; + array[1] = value; + if (areNotEmpty(array)) { + query.append(key).append(value); + } + } + + // 第三步:使用MD5/HMAC加密 + byte[] bytes; + if ("hmac".equalsIgnoreCase(signMethod)) { + bytes = encryptHMAC(query.toString(), secret); + } else { + query.append(body.replaceAll("\\s+", "")).append(secret); + bytes = encryptMD5(query.toString()); + } + + // 第四步:把二进制转化为大写的十六进制(正确签名应该为32大写字符串,此方法需要时使用) + return byte2hex(bytes); + } + + public static boolean areNotEmpty(String[] values) { + boolean result = true; + if ((values == null) || (values.length == 0)) + result = false; + else { + for (String value : values) { + result &= !isEmpty(value); + } + } + return result; + } + + static boolean isEmpty(String value) { + int strLen; + if ((value == null) || ((strLen = value.length()) == 0)) + return true; + for (int i = 0; i < strLen; i++) { + if (!Character.isWhitespace(value.charAt(i))) { + return false; + } + } + return true; + } + + static byte[] encryptHMAC(String data, String secret) throws IOException { + byte[] bytes = null; + try { + SecretKey secretKey = new SecretKeySpec(secret.getBytes("utf-8"), "HmacMD5"); + Mac mac = Mac.getInstance(secretKey.getAlgorithm()); + mac.init(secretKey); + bytes = mac.doFinal(data.getBytes("utf-8")); + } catch (GeneralSecurityException gse) { + throw new IOException(gse.toString()); + } + return bytes; + } + + public static byte[] encryptMD5(String data) throws Exception { + MessageDigest md = MessageDigest.getInstance("MD5"); + + byte[] bytes = md.digest(data.getBytes("utf-8")); + return bytes; +// return encryptMD5(data.getBytes(Constants.CHARSET_UTF8)); + } + + public static String byte2hex(byte[] bytes) { + StringBuilder sign = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + String hex = Integer.toHexString(bytes[i] & 0xFF); + if (hex.length() == 1) { + sign.append("0"); + } + sign.append(hex.toUpperCase()); + } + return sign.toString(); + } + +// public static void main(String[] args) { +// Map params = new HashMap<>(); +// params.put("method", "route.node.confirm"); +// params.put("timestamp", "2024-04-08 17:47:54"); +// params.put("format", "json"); +// params.put("app_key", "HT"); +// params.put("v", "1.0"); +// params.put("sign_method", "md5"); +// params.put("customerId", "HT"); +// try { +// String body = "{\"departCode\":\"937961\",\"platformOrderCode\":\"曲靖202312031\",\"node\":\"T20200\",\"address\":\"test\",\"operator\":\"test\",\"operatorTime\":\"2024-04-0805:47:52\",\"signQty\":\"1\",\"rejectQty\":\"\"}"; +// String newSign = signTopRequest(params, "HT", "md5", body); +// System.out.println("=========================================="); +// System.out.println(newSign); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } + +} diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignUntil.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignUntil.java index f43f670ee..5dc271762 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignUntil.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/util/QmSignUntil.java @@ -113,19 +113,19 @@ public class QmSignUntil { // // Map params = new HashMap<>(); // params.put("app_key","HT"); -// params.put("customerid","HT"); +// params.put("customerId","HT"); // params.put("format","json"); -// params.put("method","entry.order.create"); +// params.put("method","route.node.confirm"); // params.put("sign_method","md5"); -// params.put("timestamp","2015-04-26 00:00:07"); +// params.put("timestamp","2024-04-08 17:47:54"); // params.put("v","1.0"); -// -// JSONObject jsonObject = new JSONObject(); -// jsonObject.put("name","name12345"); -// jsonObject.put("age",10); +// String body = "{\"departCode\":\"937961\",\"platformOrderCode\":\"曲靖202312031\",\"node\":\"T20200\",\"address\":\"test\",\"operator\":\"test\",\"operatorTime\":\"2024-04-0805:47:52\",\"signQty\":\"1\",\"rejectQty\":\"\"}"; +//// JSONObject jsonObject = new JSONObject(); +//// jsonObject.put("name","name12345"); +//// jsonObject.put("age",10); // // try { -// String s = QmSignUntil.signTopRequest(params, "test", "md5", jsonObject.toJSONString()); +// String s = QmSignUntil.signTopRequest(params, "HT", "md5", body); // System.out.println(s); // } catch (Exception e) { // e.printStackTrace(); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/vo/OrderPackageSignDTO.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/vo/OrderPackageSignDTO.java new file mode 100644 index 000000000..88be32b09 --- /dev/null +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/vo/OrderPackageSignDTO.java @@ -0,0 +1,52 @@ +package com.logpm.factorydata.zbom.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 订单包件签收信息 + * + * @author zhaoqiaobo + * @create 2024-03-21 15:04 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class OrderPackageSignDTO implements Serializable { + + /** + * 发运单号 + */ + private String departCode; + /** + * 加盟商单号 + */ + private String platformOrderCode; + /** + * 包条码 + */ + private String packageCode; + /** + * 签收数量 + */ + private String signQty; + + /** + * 地址 在途节点 需要提供详细的地址 + */ + private String address; + /** + * 操作人 必填 + */ + private String operator; + /** + * 操作时间 必填 + */ + private String operatorTime; + +} diff --git a/blade-service/logpm-report/pom.xml b/blade-service/logpm-report/pom.xml index 536029f00..0fcdb9ef7 100644 --- a/blade-service/logpm-report/pom.xml +++ b/blade-service/logpm-report/pom.xml @@ -63,6 +63,7 @@ org.apache.maven.plugins maven-antrun-plugin + diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/InLibraryDeliverServiceImpl.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/InLibraryDeliverServiceImpl.java index d8ba826d5..2ce148ccf 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/InLibraryDeliverServiceImpl.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/InLibraryDeliverServiceImpl.java @@ -1,10 +1,11 @@ package com.logpm.report.service.impl; -import com.baomidou.mybatisplus.core.metadata.IPage; + import com.logpm.report.mapper.InLibraryDeliverMapper; import com.logpm.report.service.InLibraryDeliverService; -import io.swagger.models.auth.In; + import lombok.AllArgsConstructor; +import org.springblade.core.redis.cache.BladeRedis; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -19,6 +20,7 @@ public class InLibraryDeliverServiceImpl implements InLibraryDeliverService { private InLibraryDeliverMapper inLibraryDeliverMapper; + /*** * 总在库数 * @param diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/IndexCountServiceImpl.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/IndexCountServiceImpl.java index 2b01abc57..60716453e 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/IndexCountServiceImpl.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/IndexCountServiceImpl.java @@ -11,6 +11,7 @@ import org.checkerframework.checker.units.qual.A; import org.springblade.common.constant.aftersales.WorkOrderStatusConstant; import org.springblade.common.constant.orderpackage.OrderPackageStatusConstant; import org.springblade.common.constant.stockup.StockupTypeConstant; +import org.springblade.core.redis.cache.BladeRedis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @@ -35,7 +36,7 @@ public class IndexCountServiceImpl implements IndexCountService { private InLibraryDeliverServiceImpl inLibraryDeliverService; private BillingServiceImpl billingService; - + private final BladeRedis redis; /** @@ -43,6 +44,8 @@ public class IndexCountServiceImpl implements IndexCountService { */ @Cacheable(value = "indexCount=10") public IndexCountVO indexCount() { + + IndexCountVO indexCountVo = new IndexCountVO(); List warehouse = billingService.getWarehouse(); indexCountVo.setInStoreData(inStoreData(warehouse)); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java index b38710aed..ea7deb25b 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java @@ -380,7 +380,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl map = new HashMap<>(); map.put("trayType", trayType); map.put("trayCode", trayCode); @@ -2877,7 +2877,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl entityListByOrderCode = distributionParcelListClient.findEntityListByOrderCodeAndStatus(orderCode, warehouseId, "20"); int size = entityListByOrderCode.size(); - if (planNum.equals(size+realNum)) { + if (planNum.equals(size + realNum)) { for (DistributionParcelListEntity parcelListEntity : entityListByOrderCode) { String orderPackageCode = parcelListEntity.getOrderPackageCode(); //查询包件是否已经装车 @@ -4220,7 +4220,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl>>> waybillDataHandler 当前开单仓库不是目前系统上线运行仓库 {}", wayBillEntity.getWarehouseId()); + if(!OldSystemDataPushConfig.getWarehourseIdList().contains(warehouseId+"")){ + log.info(">>>> waybillDataHandler 当前开单仓库不是目前系统上线运行仓库 {}", warehouseId); throw new CustomerException("当前开单仓库不是目前系统上线运行仓库"); } @@ -393,7 +398,7 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("waybill_no", waybillNo); - return warehouseWaybillMapper.selectOne(queryWrapper); + return warehouseWaybillMapper.selectOne(queryWrapper); } @Override