diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java index eda5a0231..0588eb70d 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataFactoryCategoryImporter.java @@ -248,6 +248,9 @@ public class BasicdataFactoryCategoryImporter implements ExcelImporter collect2 = factoryList.stream() - .filter(data -> data.getCrmSo().equals(orderCode)) - .filter(data -> data.getShipmentSplitNo().equals(shipmentSplitNo)) - .collect(Collectors.toList()); - snMap = collect2.stream().collect(Collectors.toMap(DeliveryNoteEntity::getSn, s -> Convert.toInt(s.getQty()))); - FactoryNodePushEntity entity1 = FactoryNodePushEntity.builder() - .orderCode(orderCode).statusName(needSendNode.getStatus()).opTime(entries.getStr("operatorTime")).content(needSendNode.getValue()) - .waybillCode(waybillNumber).siteLevel(needSendNode.getSiteLecel(isArrival)).warehouse(sendData.getWarehouseName()) - .receiveOrSend(needSendNode.getReceiveOrSend()) - .shipmentSpitCode(shipmentSplitNo).shipmentCode(collect.get(sendData.getPackageCode() + sendData.getOrderCode()).get(0).getShipmentNo()) - .receivable(0).receipts(0) - .type(needSendNode.getValue()) - .typeCode(needSendNode.getCode()) - .build(); - pushEntities.add(entity1); - factoryNodeAllPushEntity.setPackageCode(collect2.stream().map(DeliveryNoteEntity::getSn).collect(Collectors.joining(","))); + // List collect2 = factoryList.stream() + // .filter(data -> data.getCrmSo().equals(orderCode)) + // .filter(data -> data.getShipmentSplitNo().equals(shipmentSplitNo)) + // .collect(Collectors.toList()); + List checkList = deliveryNoteService.list(Wrappers.lambdaQuery() + .select(DeliveryNoteEntity::getSn, DeliveryNoteEntity::getQty) + .eq(DeliveryNoteEntity::getShipmentSplitNo, shipmentSplitNo) + .eq(DeliveryNoteEntity::getCrmSo, orderCode) + ); + snMap = checkList.stream().collect(Collectors.toMap(DeliveryNoteEntity::getSn, s -> Convert.toInt(s.getQty()))); + for (DeliveryNoteEntity deliveryNoteEntity : checkList) { + FactoryNodePushEntity entity1 = FactoryNodePushEntity.builder() + .orderCode(orderCode).statusName(needSendNode.getStatus()).opTime(entries.getStr("operatorTime")).content(needSendNode.getValue()) + .waybillCode(waybillNumber).siteLevel(needSendNode.getSiteLecel(isArrival)).warehouse(sendData.getWarehouseName()) + .receiveOrSend(needSendNode.getReceiveOrSend()) + .shipmentSpitCode(shipmentSplitNo).shipmentCode(collect.get(sendData.getPackageCode() + sendData.getOrderCode()).get(0).getShipmentNo()) + .receivable(0).receipts(0) + .type(needSendNode.getValue()) + .typeCode(needSendNode.getCode()) + .packageCode(deliveryNoteEntity.getSn()) + .build(); + pushEntities.add(entity1); + } + factoryNodeAllPushEntity.setPackageCode(checkList.stream().map(DeliveryNoteEntity::getSn).collect(Collectors.joining(","))); } else { for (PushData data : value) { if (snMap.containsKey(data.getPackageCode())) { diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java b/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java index 28b672479..0766bc3cf 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java @@ -52,23 +52,6 @@ public class ReportTimeController extends BladeController { @ApiOperation(value = "开单时效明细报表", notes = "开单时效明细报表") public R openTimeDetailPage(@RequestBody ReportTimeDTO reportTimeDTO) { String method = "###########openTimeDetailPage: "; - String brand = reportTimeDTO.getBrand(); - String businessLine = reportTimeDTO.getBusinessLine(); - Long warehouseId = reportTimeDTO.getWarehouseId(); - if(StringUtil.isBlank(brand)){ - log.warn(method+"品牌不能为空 {}",brand); - return R.fail(405,"品牌不能为空"); - } - - if(StringUtil.isBlank(businessLine)){ - log.warn(method+"事业线不能为空 {}",businessLine); - return R.fail(405,"事业线不能为空"); - } - - if(Objects.isNull(warehouseId)){ - log.warn(method+"仓库id不能为空 {}",warehouseId); - return R.fail(405,"仓库id不能为空"); - } try{ return reportTimeService.openTimeDetailPage(reportTimeDTO); }catch (Exception e){ @@ -82,23 +65,6 @@ public class ReportTimeController extends BladeController { @ApiOperation(value = "开单时效明细报表导出", notes = "开单时效明细报表导出") public void openTimeDetailExport(@RequestBody ReportTimeDTO reportTimeDTO, HttpServletResponse response) { String method = "###########openTimeDetailExport: "; - String brand = reportTimeDTO.getBrand(); - String businessLine = reportTimeDTO.getBusinessLine(); - Long warehouseId = reportTimeDTO.getWarehouseId(); - if(StringUtil.isBlank(brand)){ - log.warn(method+"品牌不能为空 {}",brand); - throw new CustomerException(405,"品牌不能为空"); - } - - if(StringUtil.isBlank(businessLine)){ - log.warn(method+"事业线不能为空 {}",businessLine); - throw new CustomerException(405,"事业线不能为空"); - } - - if(Objects.isNull(warehouseId)){ - log.warn(method+"仓库id不能为空 {}",warehouseId); - throw new CustomerException(405,"仓库id不能为空"); - } reportTimeService.openTimeDetailExport(reportTimeDTO,response); } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml index 3cd5fae03..9a7ffd939 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml @@ -711,9 +711,11 @@ ldsa.brand brand, sum(ldsa.incoming_num) incomingNum, IFNULL(sum(ltcls.num),0) outNum, + sum( ldsa.incoming_num ) - IFNULL(sum(ltcls.num),0) noOutNum, sum(if(ltcll.start_date <= DATE_ADD( ldsa.create_time, INTERVAL #{param.hoursTime} HOUR ),ltcls.num,0)) outOnTimeNum, IFNULL(round(sum(if(ltcll.start_date <= DATE_ADD( ldsa.create_time, INTERVAL #{param.hoursTime} HOUR ),ltcls.num,0))/sum(ldsa.incoming_num)*100,2),'0.00') outOnTimeRate, - round(sum(TIMESTAMPDIFF(SECOND, ldsa.create_time, ltcll.start_date)*ltcls.num)/sum(ltcls.num)/3600,1) avgTime + round(sum(TIMESTAMPDIFF(SECOND, ldsa.create_time, ltcll.start_date)*ltcls.num)/sum(ltcls.num)/3600,1) avgTime, + #{param.hoursTime} hoursTime from logpm_distribution_stock_article ldsa left join logpm_warehouse_warehouse waw on waw.id = ldsa.warehouse_id left join logpm_warehouse_waybill lww on lww.waybill_no = ldsa.order_code @@ -775,9 +777,11 @@ ldsa.brand brand, sum(ldsa.incoming_num) incomingNum, IFNULL(sum(ltcls.num),0) outNum, + sum( ldsa.incoming_num ) - IFNULL(sum(ltcls.num),0) noOutNum, sum(if(ltcll.start_date <= DATE_ADD( ldsa.create_time, INTERVAL #{param.hoursTime} HOUR ),ltcls.num,0)) outOnTimeNum, IFNULL(concat(round(sum(if(ltcll.start_date <= DATE_ADD( ldsa.create_time, INTERVAL #{param.hoursTime} HOUR ),ltcls.num,0))/sum(ldsa.incoming_num)*100,2),'%'),'0.00%') outOnTimeRate, - round(sum(TIMESTAMPDIFF(SECOND, ldsa.create_time, ltcll.start_date)*ltcls.num)/sum(ltcls.num)/3600,1) avgTime + round(sum(TIMESTAMPDIFF(SECOND, ldsa.create_time, ltcll.start_date)*ltcls.num)/sum(ltcls.num)/3600,1) avgTime, + #{param.hoursTime} hoursTime from logpm_distribution_stock_article ldsa left join logpm_warehouse_warehouse waw on waw.id = ldsa.warehouse_id left join logpm_warehouse_waybill lww on lww.waybill_no = ldsa.order_code @@ -1618,6 +1622,7 @@ lta.store_name storeName, lta.warehouse_id warehouseId, lta.warehouse_name warehouseName, + min(ltad.incoming_time) incomingTime, GROUP_CONCAT(DISTINCT ltad.incoming_warehouse_name) incomingWarehouseName, lta.site_name siteName, lta.brand brand, @@ -1656,9 +1661,15 @@ left join logpm_warehouse_waybill lww on lww.waybill_no = lta.waybill_no left join logpm_trunkline_advance_detail ltad on ltad.advance_id = lta.id where lta.create_time > '2024-10-22 00:00:00' - and waw.business_line = #{param.businessLine} - and lta.brand = #{param.brand} - and lta.warehouse_id = #{param.warehouseId} + + and waw.business_line = #{param.businessLine} + + + and lta.brand = #{param.brand} + + + and lta.warehouse_id = #{param.warehouseId} + and waw.business_line in @@ -1788,6 +1799,7 @@ lta.store_name storeName, lta.warehouse_id warehouseId, lta.warehouse_name warehouseName, + min(ltad.incoming_time) incomingTime, GROUP_CONCAT(DISTINCT ltad.incoming_warehouse_name) incomingWarehouseName, lta.site_name siteName, lta.brand brand, @@ -1832,9 +1844,15 @@ left join logpm_warehouse_waybill lww on lww.waybill_no = lta.waybill_no left join logpm_trunkline_advance_detail ltad on ltad.advance_id = lta.id where lta.create_time > '2024-10-22 00:00:00' - and waw.business_line = #{param.businessLine} - and lta.brand = #{param.brand} - and lta.warehouse_id = #{param.warehouseId} + + and waw.business_line = #{param.businessLine} + + + and lta.brand = #{param.brand} + + + and lta.warehouse_id = #{param.warehouseId} + and waw.business_line in diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOpenTimeDetailVO.java b/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOpenTimeDetailVO.java index b4715a865..664c8ddaf 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOpenTimeDetailVO.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOpenTimeDetailVO.java @@ -30,6 +30,10 @@ public class ReportOpenTimeDetailVO implements Serializable { private Long warehouseId; @ExcelProperty(value = "导入仓库") private String warehouseName; + + @ExcelProperty(value = "入库时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date incomingTime; @ExcelProperty(value = "入库仓库") private String incomingWarehouseName; diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/AdvanceDetailController.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/AdvanceDetailController.java index 7206534b1..fe13f6648 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/AdvanceDetailController.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/AdvanceDetailController.java @@ -8,6 +8,7 @@ import com.logpm.basicdata.feign.IBasicdataWarehouseClient; import com.logpm.distribution.vo.OrderPackgeCodeDataVO; import com.logpm.trunkline.dto.AdvanceDetailDTO; import com.logpm.trunkline.dto.OrderDetailsDTO; +import com.logpm.trunkline.dto.PackageCodeDTO; import com.logpm.trunkline.service.ITrunklineAdvanceDetailService; import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO; import io.swagger.annotations.Api; @@ -17,10 +18,8 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.common.exception.CustomerException; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; -import springfox.documentation.annotations.ApiIgnore; import java.util.List; -import java.util.Map; import java.util.Objects; @Slf4j @@ -62,14 +61,14 @@ public class AdvanceDetailController { } - @GetMapping("/showAdvancePackgeCode") + @PostMapping("/showAdvancePackgeCode") @ApiOperationSupport(order = 2) @ApiOperation(value = "返回模板和模板内容") - public R showAdvancePackgeCode(@ApiIgnore @RequestParam Map params){ + public R showAdvancePackgeCode(@RequestBody PackageCodeDTO packageCodeDTO){ OrderPackgeCodeDataVO orderPackgeCodeDataVo= null; try { - orderPackgeCodeDataVo = advanceDetailService.showAdvancePackgeCode(params); + orderPackgeCodeDataVo = advanceDetailService.showAdvancePackgeCode(packageCodeDTO); } catch (Exception e) { return R.fail(e.getMessage()); } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/dto/PackageCodeDTO.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/dto/PackageCodeDTO.java new file mode 100644 index 000000000..b4ac476ee --- /dev/null +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/dto/PackageCodeDTO.java @@ -0,0 +1,13 @@ +package com.logpm.trunkline.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class PackageCodeDTO implements Serializable { + + private List orderPackageCodes; + +} diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java index 84b0e0f72..9be8e14e1 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineAdvanceDetailService.java @@ -6,6 +6,7 @@ import com.logpm.distribution.vo.OrderPackgeCodeDataVO; import com.logpm.trunkline.dto.AdvanceDTO; import com.logpm.trunkline.dto.AdvanceDetailDTO; import com.logpm.trunkline.dto.OrderDetailsDTO; +import com.logpm.trunkline.dto.PackageCodeDTO; import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; import com.logpm.trunkline.vo.*; import com.logpm.warehouse.entity.WarehouseWaybillEntity; @@ -41,7 +42,7 @@ public interface ITrunklineAdvanceDetailService extends BaseService params) throws Exception; + OrderPackgeCodeDataVO showAdvancePackgeCode(PackageCodeDTO packageCodeDTO) throws Exception; List findListByAdvanceId(Long advanceId); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java index b6c8b4bb7..9b807483e 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceDetailServiceImpl.java @@ -6,7 +6,6 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.logpm.basic.entity.BasicPrintTemplateEntity; @@ -17,6 +16,7 @@ import com.logpm.distribution.vo.OrderPackgeCodeDataVO; import com.logpm.trunkline.dto.AdvanceDTO; import com.logpm.trunkline.dto.AdvanceDetailDTO; import com.logpm.trunkline.dto.OrderDetailsDTO; +import com.logpm.trunkline.dto.PackageCodeDTO; import com.logpm.trunkline.entity.ReportPackageBasicEntity; import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; import com.logpm.trunkline.entity.TrunklineAdvanceEntity; @@ -35,6 +35,7 @@ import org.springblade.common.constant.broadcast.FanoutConstants; import org.springblade.common.constant.printTemplate.PrintTemplateStatusConstant; import org.springblade.common.enums.BizOperationEnums; import org.springblade.common.enums.PackageTypeEnums; +import org.springblade.common.exception.CustomerException; import org.springblade.common.model.FanoutMsg; import org.springblade.common.model.NodeFanoutMsg; import org.springblade.common.model.PackageData; @@ -157,7 +158,7 @@ public class TrunklineAdvanceDetailServiceImpl extends BaseServiceImpl params) throws Exception { + public OrderPackgeCodeDataVO showAdvancePackgeCode(PackageCodeDTO packageCodeDTO) throws Exception { log.info("----------------------------------------111111111"); OrderPackgeCodeDataVO orderPackgeCodeDataVO = new OrderPackgeCodeDataVO(); List data = new ArrayList<>(); @@ -170,15 +171,10 @@ public class TrunklineAdvanceDetailServiceImpl extends BaseServiceImpl orderPackageCodes = packageCodeDTO.getOrderPackageCodes(); - String[] idArray = orderPackageCodes.split(","); - if (ObjectUtils.isNull(idArray)) { - throw new ServiceException("参数错误"); - - } log.info("----------------------------------------333333333"); - for (String orderPackageCode : idArray) { + orderPackageCodes.forEach(orderPackageCode -> { DistributionStockArticleQRCodeVO vo = new DistributionStockArticleQRCodeVO(); log.info("----------------------------------------444444444444444444"); TrunklineAdvanceDetailEntity advanceDetailEntity = baseMapper.findEntityByOrderPackageCodelimit1(orderPackageCode); @@ -241,9 +237,14 @@ public class TrunklineAdvanceDetailServiceImpl extends BaseServiceImpl updateStockArticleList = new ArrayList<>(); groupedByLoadId.keySet().forEach(loadId -> { + TrunklineCarsLoadLineEntity loadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId); + if (Objects.isNull(loadLineEntity)) { + log.warn("##################removeCarsLoadScan: 配载计划不存在 loadId={}", loadId); + throw new CustomerException(405,"配载计划不存在"); + } + + String nodeStatus = loadLineEntity.getNodeStatus(); + if("20".equals(nodeStatus)){ + log.warn("##################removeCarsLoadScan: 当前节点已发车 loadId={} warehouseId={}", loadId,warehouseId); + throw new CustomerException(405,"当前节点已发车"); + } + if("0".equals(nodeStatus)){ + log.warn("##################removeCarsLoadScan: 当前节点未到达 loadId={} warehouseId={}", loadId,warehouseId); + throw new CustomerException(405,"当前节点未到达"); + } + List loadScanEntityList = groupedByLoadId.get(loadId); if(CollUtil.isNotEmpty(loadScanEntityList)){ //把loadScanEntityList通过fromNodeId进行分组