From 693b4cd0aa709c135350f29af7f84d0d8ed7434e Mon Sep 17 00:00:00 2001 From: yiwenpeng <ywp303@163.com> Date: Sat, 26 Aug 2023 00:23:16 +0800 Subject: [PATCH] feat:1、库存交易记录新增库区;2、母件编码和母件名称去重复;3、出库单新增颜色信息字段。 --- src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java | 37 +++++++++++++++++++++++++++++-------- src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java | 15 +++++++-------- src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java | 2 ++ src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java | 7 ++++++- src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java | 7 ++++--- src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java | 21 +++++++++++++++------ src/main/java/com/huaheng/pc/shipment/shipmentHeader/domain/ShipmentHeader.java | 7 +++++++ src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java | 342 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java | 18 +++++++++++++----- src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java | 1 + src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java | 1 + src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java | 4 +++- src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html | 25 +++++++++++++++++++++++++ src/main/resources/templates/receipt/receiving/receiving.html | 13 +++++++++++++ src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html | 36 +++++++++++++++++++++++++++--------- src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html | 35 +++++++++++++++++++++++++++-------- 17 files changed, 524 insertions(+), 392 deletions(-) diff --git a/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java b/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java index e36680b..3b4109d 100644 --- a/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java +++ b/src/main/java/com/huaheng/api/mes/service/MesServiceImpl.java @@ -31,7 +31,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; @Service @@ -186,20 +188,19 @@ public class MesServiceImpl implements IMesService { public AjaxResult shipment(ReceiptDTO receiptDTO) { Header header = receiptDTO.getShipmentHeader(); List<Detail> details = receiptDTO.getShipemtnDetails(); - - LambdaQueryWrapper<ShipmentHeader> query = Wrappers.lambdaQuery(); - query.eq(ShipmentHeader::getCode, header.getReferCode()).eq(ShipmentHeader::getShipmentType, header.getRefeCodeType()); - List<ShipmentHeader> list = shipmentHeaderService.list(query); - if (list.size() > 0) { + List<ShipmentHeader> list = shipmentHeaderService.list(new LambdaQueryWrapper<ShipmentHeader>() + .eq(ShipmentHeader::getCode, header.getReferCode()) + .eq(ShipmentHeader::getShipmentType, header.getRefeCodeType())); + if (!list.isEmpty()) { return AjaxResult.error("添加出库单: 上游单号referCode重复[ " + header.getReferCode() + " ],请勿重复添加。"); } AjaxResult ajaxResult = new AjaxResult(); + //校验参数 boolean inNull = enterIsNull(ajaxResult, header, details); if (inNull) { return ajaxResult; } ShipmentHeader shipmentHeader = new ShipmentHeader(); - // shipmentHeader.setId(header.getId()); if (StringUtils.isNotEmpty(header.getMOMID())) { shipmentHeader.setMOMID(header.getMOMID()); } @@ -219,14 +220,30 @@ public class MesServiceImpl implements IMesService { shipmentHeader.setCreatorCode(header.getCreatorCode()); shipmentHeader.setCreatorName(header.getCreatorName()); shipmentHeader.setRequestedStartDate(header.getRequestedStartDate()); - shipmentHeader.setSuperiorCode(header.getSuperiorCode()); + + //母件编码和母件名称去重复 + String[] superiorCodeValue = header.getSuperiorCode().split(","); + String[] superiorNameValue = header.getSuperiorName().split(","); + Set<String> uniqueSuperiorCodeValue = new HashSet<>(); + Set<String> uniqueSuperiorNameValue = new HashSet<>(); + for (String value : superiorCodeValue) { + uniqueSuperiorCodeValue.add(value.trim()); + } + for (String value : superiorNameValue) { + uniqueSuperiorNameValue.add(value.trim()); + } + String superiorCode = String.join(",", uniqueSuperiorCodeValue); + String superiorName = String.join(",", uniqueSuperiorNameValue); + shipmentHeader.setSuperiorCode(superiorCode); + shipmentHeader.setSuperiorName(superiorName); + + if (StringUtils.isNotEmpty(header.getTransferWarehouseName())) { shipmentHeader.setTransferWarehouseName(header.getTransferWarehouseName()); } if (StringUtils.isNotEmpty(header.getTransferWarehouseCode())) { shipmentHeader.setTransferWarehouseCode(header.getTransferWarehouseCode()); } - shipmentHeader.setSuperiorName(header.getSuperiorName()); shipmentHeader.setShipmentNote(header.getShipmentNote()); shipmentHeader.setRequestedDeliveryDate(header.getRequestedDeliveryDate()); if (StringUtils.isNotEmpty(header.getTransferWarehouseCode())) { @@ -295,6 +312,10 @@ public class MesServiceImpl implements IMesService { if (!success) { throw new ServiceException("生成出库单详情失败"); } + + + //如果通知单号和车间、仓库相同,自动合并单据 + return AjaxResult.success(receiptDTO); } diff --git a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java index ee3a37c..ef41b15 100644 --- a/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java +++ b/src/main/java/com/huaheng/pc/inventory/adjustDetail/service/AdjustDetailServiceImpl.java @@ -40,7 +40,6 @@ import java.util.List; public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, AdjustDetail> implements AdjustDetailService { - @Resource private CycleCountDetailService cycleCountDetailService; @Resource @@ -61,12 +60,9 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj private ContainerService containerService; - - - - /** - *新增调整明细 + * 新增调整明细 + * * @param adjustDetail * @return */ @@ -82,38 +78,38 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj LambdaQueryWrapper<AdjustHeader> lambdaQueryWrapper = Wrappers.lambdaQuery(adjustHeader); adjustHeader = adjustHeaderService.getOne(lambdaQueryWrapper); //检查库存 - if((adjustDetail.getInventoryDetailId()) != null){ + if ((adjustDetail.getInventoryDetailId()) != null) { InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId()); - if(inventoryDetail == null){ + if (inventoryDetail == null) { return AjaxResult.error("没有该条库存明细"); } } //明细单据的上层单编码需要和主单一直,主单空值则不判断 - if(StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()) || StringUtils.isNotEmpty(adjustHeader.getCheckCode())){ + if (StringUtils.isNotEmpty(adjustHeader.getCycleCountHeaderCode()) || StringUtils.isNotEmpty(adjustHeader.getCheckCode())) { adjustDetail.setCycleCountHeaderCode(adjustHeader.getCycleCountHeaderCode()); adjustDetail.setCheckCode(adjustHeader.getCheckCode()); } //检查盘点单 - if(StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode())){ - CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(adjustDetail.getCheckDetailId()); - if(cycleCountDetail == null || !cycleCountDetail.getCycleCountHeadCode().equals(adjustDetail.getCycleCountHeaderCode())){ - return AjaxResult.error("盘点单错误,请核对盘点单据!"); + if (StringUtils.isNotEmpty(adjustDetail.getCycleCountHeaderCode())) { + CycleCountDetail cycleCountDetail = cycleCountDetailService.getById(adjustDetail.getCheckDetailId()); + if (cycleCountDetail == null || !cycleCountDetail.getCycleCountHeadCode().equals(adjustDetail.getCycleCountHeaderCode())) { + return AjaxResult.error("盘点单错误,请核对盘点单据!"); } } //检查质检单 - if(StringUtils.isNotEmpty(adjustDetail.getCheckCode())){ + if (StringUtils.isNotEmpty(adjustDetail.getCheckCode())) { CheckDetail checkDetail = checkDetailService.getById(adjustDetail.getCheckDetailId()); - if(checkDetail == null || !checkDetail.getCheckCode().equals(adjustDetail.getCheckCode())){ + if (checkDetail == null || !checkDetail.getCheckCode().equals(adjustDetail.getCheckCode())) { return AjaxResult.error("质检单错误,请核对质检单据!"); } } //检查物料 Material material = materialService.getMaterialByCode(adjustDetail.getMaterialCode()); - if(material != null){ - if(!material.getName().equals(adjustDetail.getMaterialName())){ - return AjaxResult.error("物料名称错误!"); + if (material != null) { + if (!material.getName().equals(adjustDetail.getMaterialName())) { + return AjaxResult.error("物料名称错误!"); } - }else{ + } else { return AjaxResult.error("物料编码错误!"); } //调整数量 @@ -133,6 +129,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj /** * 调整审批 + * * @param adjustDetail * @return */ @@ -140,7 +137,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj @Override public AjaxResult adjustAgree(AdjustDetail adjustDetail) { //修改状态,审批人栏填入名称,修改状态 - if(adjustDetail.getStatus() > 1){ + if (adjustDetail.getStatus() > 1) { return AjaxResult.error("单据状态无法审批!"); } adjustDetail.setAgreeBy(ShiroUtils.getName()); @@ -155,17 +152,17 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj /** * 修改调整数量 - * */ + */ @Override public AjaxResult editSave(AdjustDetail adjustDetail) { - //调整数量和货主,供应商 - //根据ID修改 + //调整数量和货主,供应商 + //根据ID修改 BigDecimal t = adjustDetail.getToQty().subtract(adjustDetail.getFromQty()); adjustDetail.setGapQty(t); - Boolean j = this.updateById(adjustDetail); - if(!j){ - throw new ServiceException("修改调账明细失败!"); - } + Boolean j = this.updateById(adjustDetail); + if (!j) { + throw new ServiceException("修改调账明细失败!"); + } return AjaxResult.success("修改成功"); } @@ -174,157 +171,160 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj * 调整库存 * 调整数量,调整库存状态 * 调整插入库存 + * * @param adjustDetail * @return */ @Transactional @Override public AjaxResult updateAdjustDetail(AdjustDetail adjustDetail) { - if(adjustDetail.getStatus() == 1){ - AjaxResult.error("该单据已调整,不允许再次调整!" ); - } + if (adjustDetail.getStatus() == 1) { + AjaxResult.error("该单据已调整,不允许再次调整!"); + } String containerCode = adjustDetail.getContainerCode(); Container container = containerService.getContainerByCode(containerCode); adjustDetail.setLocationCode(container.getLocationCode()); //调整单中不带库存明细时不查询 - if(adjustDetail.getInventoryDetailId() != null && adjustDetail.getInventoryDetailId() != 0) { - InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId()); - if (!adjustDetail.getLocationCode().equals(inventoryDetail.getLocationCode()) || - !adjustDetail.getContainerCode().equals(inventoryDetail.getContainerCode())) { - return AjaxResult.error("调整单和所调整库存的库位容器不符,前检查数据"); - } - //验证该条库存是不是正在使用,验证库存明细 - Location location = new Location(); - location.setCode(inventoryDetail.getLocationCode()); - location.setWarehouseCode(inventoryDetail.getWarehouseCode()); - LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(location); - location = locationService.getOne(lambdaQueryWrapper); - if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(location.getStatus())) { - return AjaxResult.error (inventoryDetail.getId() + "库位非空闲,请等待其他任务完成再进行调整!"); - } - //判断调整库存状态还是数量 - if ((adjustDetail.getToQty() != null || adjustDetail.getGapQty() != null) &&!"manual".equals(adjustDetail.getUserDef3())) { - //调整数量 - this.updateAdjustDetailNumber(adjustDetail, inventoryDetail); - } - if (!adjustDetail.getFromInventorySts().equals(adjustDetail.getToInventorySts())) { - //调整库存状态 - this.updateAdjustDetailState(adjustDetail, inventoryDetail); - } - }else{ - String fromQtyString = adjustDetail.getFromQty().toString(); //调整前库存数量 - if(StringUtils.isNotEmpty(fromQtyString) && !"manual".equals(adjustDetail.getUserDef3())){ - //调整插入库存 - updateAdjustDetailInsert(adjustDetail); - } + if (adjustDetail.getInventoryDetailId() != null && adjustDetail.getInventoryDetailId() != 0) { + InventoryDetail inventoryDetail = inventoryDetailService.getById(adjustDetail.getInventoryDetailId()); + if (!adjustDetail.getLocationCode().equals(inventoryDetail.getLocationCode()) || + !adjustDetail.getContainerCode().equals(inventoryDetail.getContainerCode())) { + return AjaxResult.error("调整单和所调整库存的库位容器不符,前检查数据"); } - - if ("manual".equals(adjustDetail.getUserDef3())){ - LambdaQueryWrapper<InventoryDetail>queryWrapper=Wrappers.lambdaQuery(); - queryWrapper.eq(InventoryDetail::getContainerCode,adjustDetail.getContainerCode()) - .eq(InventoryDetail::getLocationCode,adjustDetail.getLocationCode()) - .eq(InventoryDetail::getCompanyCode,adjustDetail.getCompanyCode()).last("limit 1"); - InventoryDetail inventoryDetail=inventoryDetailService.getOne(queryWrapper); - if (StringUtils.isNotNull(inventoryDetail)){ - //新增库存 - InventoryDetail insertDetail=new InventoryDetail(); - insertDetail.setMaterialCode(adjustDetail.getMaterialCode()); - insertDetail.setMaterialUnit(adjustDetail.getMaterialUnit()); - insertDetail.setMaterialName(adjustDetail.getMaterialName()); - insertDetail.setQty(adjustDetail.getToQty()); - insertDetail.setMaterialSpec(adjustDetail.getMaterialSpec()); - insertDetail.setContainerCode(inventoryDetail.getContainerCode()); - insertDetail.setLocationCode(inventoryDetail.getLocationCode()); - insertDetail.setInventoryHeaderId(inventoryDetail.getInventoryHeaderId()); - insertDetail.setCompanyCode(inventoryDetail.getCompanyCode()); - insertDetail.setInventorySts(inventoryDetail.getInventorySts()); - insertDetail.setWarehouseCode(inventoryDetail.getWarehouseCode()); - insertDetail.setZoneCode(inventoryDetail.getZoneCode()); - insertDetail.setCreatedBy(ShiroUtils.getName()); - insertDetail.setLastUpdatedBy(ShiroUtils.getName()); - insertDetail.setLastUpdatedByName(ShiroUtils.getName()); - insertDetail.setZoneCode(inventoryDetail.getZoneCode()); - insertDetail.setTaskQty(new BigDecimal(0)); - insertDetail.setReceiptDetailId(0); - insertDetail.setReceiptCode("0"); - insertDetail.setInventorySts(QuantityConstant.GOOD); - inventoryDetailService.save(insertDetail); - adjustDetail.setInventoryDetailId(insertDetail.getId()); - - //写入库存交易 - //调整入 - InventoryTransaction inventoryTransaction = new InventoryTransaction(); - inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode()); - inventoryTransaction.setWarehouseCode(insertDetail.getWarehouseCode()); - inventoryTransaction.setCompanyCode(insertDetail.getCompanyCode()); - inventoryTransaction.setLocationCode(insertDetail.getLocationCode()); - inventoryTransaction.setContainerCode(insertDetail.getContainerCode()); - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO); - inventoryTransaction.setMaterialCode(insertDetail.getMaterialCode()); - inventoryTransaction.setMaterialName(insertDetail.getMaterialName()); - inventoryTransaction.setMaterialSpec(insertDetail.getMaterialSpec()); - inventoryTransaction.setMaterialUnit(insertDetail.getMaterialUnit()); - inventoryTransaction.setTaskQty(adjustDetail.getToQty()); - inventoryTransaction.setInventorySts(insertDetail.getInventorySts());//状态 - inventoryTransaction.setReferCode(insertDetail.getReferCode()); - inventoryTransaction.setReferDetailId(insertDetail.getReferDetailId()); - inventoryTransaction.setBatch(insertDetail.getBatch()); - inventoryTransaction.setLot(insertDetail.getLot()); - inventoryTransaction.setProjectNo(insertDetail.getProjectNo()); - inventoryTransaction.setQcCheck(insertDetail.getQcCheck()); - inventoryTransaction.setWeight(insertDetail.getWeight()); - inventoryTransaction.setManufactureDate(insertDetail.getManufactureDate()); - inventoryTransaction.setExpirationDate(insertDetail.getExpirationDate()); - inventoryTransaction.setAgingDate(insertDetail.getCreated()); - inventoryTransaction.setAttributeId(insertDetail.getAttributeId()); - inventoryTransaction.setAttribute1(insertDetail.getAttribute1()); - inventoryTransaction.setAttribute2(insertDetail.getAttribute2()); - inventoryTransaction.setAttribute3(insertDetail.getAttribute3()); - inventoryTransaction.setCreated(new Date()); - inventoryTransaction.setCreatedBy(ShiroUtils.getName()); - inventoryTransaction.setBillDetailId(insertDetail.getReceiptDetailId()); - inventoryTransaction.setSupplierCode(insertDetail.getSupplierCode()); - inventoryTransactionService.saveOrUpdate(inventoryTransaction); - } + //验证该条库存是不是正在使用,验证库存明细 + Location location = new Location(); + location.setCode(inventoryDetail.getLocationCode()); + location.setWarehouseCode(inventoryDetail.getWarehouseCode()); + LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery(location); + location = locationService.getOne(lambdaQueryWrapper); + if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(location.getStatus())) { + return AjaxResult.error(inventoryDetail.getId() + "库位非空闲,请等待其他任务完成再进行调整!"); + } + //判断调整库存状态还是数量 + if ((adjustDetail.getToQty() != null || adjustDetail.getGapQty() != null) && !"manual".equals(adjustDetail.getUserDef3())) { + //调整数量 + this.updateAdjustDetailNumber(adjustDetail, inventoryDetail); + } + if (!adjustDetail.getFromInventorySts().equals(adjustDetail.getToInventorySts())) { + //调整库存状态 + this.updateAdjustDetailState(adjustDetail, inventoryDetail); + } + } else { + String fromQtyString = adjustDetail.getFromQty().toString(); //调整前库存数量 + if (StringUtils.isNotEmpty(fromQtyString) && !"manual".equals(adjustDetail.getUserDef3())) { + //调整插入库存 + updateAdjustDetailInsert(adjustDetail); } - //修改调整单明细状态 - adjustDetail.setStatus(3); - adjustDetail.setLastUpdatedBy(ShiroUtils.getName()); - adjustDetail.setLastUpdated(new Date()); - this.saveOrUpdate(adjustDetail); - //判断调整单明细是否全部已批准 - List<AdjustDetail> list = this.list(new LambdaQueryWrapper<AdjustDetail>() - .eq(AdjustDetail::getAdjustCode, adjustDetail.getAdjustCode())); - boolean isFlag = false; - for (AdjustDetail detail : list) { - if(detail.getStatus()!=3){ - isFlag = true; - } + } + + if ("manual".equals(adjustDetail.getUserDef3())) { + LambdaQueryWrapper<InventoryDetail> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(InventoryDetail::getContainerCode, adjustDetail.getContainerCode()) + .eq(InventoryDetail::getLocationCode, adjustDetail.getLocationCode()) + .eq(InventoryDetail::getCompanyCode, adjustDetail.getCompanyCode()).last("limit 1"); + InventoryDetail inventoryDetail = inventoryDetailService.getOne(queryWrapper); + if (StringUtils.isNotNull(inventoryDetail)) { + //新增库存 + InventoryDetail insertDetail = new InventoryDetail(); + insertDetail.setMaterialCode(adjustDetail.getMaterialCode()); + insertDetail.setMaterialUnit(adjustDetail.getMaterialUnit()); + insertDetail.setMaterialName(adjustDetail.getMaterialName()); + insertDetail.setQty(adjustDetail.getToQty()); + insertDetail.setMaterialSpec(adjustDetail.getMaterialSpec()); + insertDetail.setContainerCode(inventoryDetail.getContainerCode()); + insertDetail.setLocationCode(inventoryDetail.getLocationCode()); + insertDetail.setInventoryHeaderId(inventoryDetail.getInventoryHeaderId()); + insertDetail.setCompanyCode(inventoryDetail.getCompanyCode()); + insertDetail.setInventorySts(inventoryDetail.getInventorySts()); + insertDetail.setWarehouseCode(inventoryDetail.getWarehouseCode()); + insertDetail.setZoneCode(inventoryDetail.getZoneCode()); + insertDetail.setCreatedBy(ShiroUtils.getName()); + insertDetail.setLastUpdatedBy(ShiroUtils.getName()); + insertDetail.setLastUpdatedByName(ShiroUtils.getName()); + insertDetail.setZoneCode(inventoryDetail.getZoneCode()); + insertDetail.setTaskQty(new BigDecimal(0)); + insertDetail.setReceiptDetailId(0); + insertDetail.setReceiptCode("0"); + insertDetail.setInventorySts(QuantityConstant.GOOD); + inventoryDetailService.save(insertDetail); + adjustDetail.setInventoryDetailId(insertDetail.getId()); + + //写入库存交易 + //调整入 + InventoryTransaction inventoryTransaction = new InventoryTransaction(); + inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode()); + inventoryTransaction.setWarehouseCode(insertDetail.getWarehouseCode()); + inventoryTransaction.setCompanyCode(insertDetail.getCompanyCode()); + inventoryTransaction.setLocationCode(insertDetail.getLocationCode()); + inventoryTransaction.setContainerCode(insertDetail.getContainerCode()); + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode()); + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO); + inventoryTransaction.setMaterialCode(insertDetail.getMaterialCode()); + inventoryTransaction.setMaterialName(insertDetail.getMaterialName()); + inventoryTransaction.setMaterialSpec(insertDetail.getMaterialSpec()); + inventoryTransaction.setMaterialUnit(insertDetail.getMaterialUnit()); + inventoryTransaction.setTaskQty(adjustDetail.getToQty()); + inventoryTransaction.setInventorySts(insertDetail.getInventorySts());//状态 + inventoryTransaction.setReferCode(insertDetail.getReferCode()); + inventoryTransaction.setReferDetailId(insertDetail.getReferDetailId()); + inventoryTransaction.setBatch(insertDetail.getBatch()); + inventoryTransaction.setLot(insertDetail.getLot()); + inventoryTransaction.setProjectNo(insertDetail.getProjectNo()); + inventoryTransaction.setQcCheck(insertDetail.getQcCheck()); + inventoryTransaction.setWeight(insertDetail.getWeight()); + inventoryTransaction.setManufactureDate(insertDetail.getManufactureDate()); + inventoryTransaction.setExpirationDate(insertDetail.getExpirationDate()); + inventoryTransaction.setAgingDate(insertDetail.getCreated()); + inventoryTransaction.setAttributeId(insertDetail.getAttributeId()); + inventoryTransaction.setAttribute1(insertDetail.getAttribute1()); + inventoryTransaction.setAttribute2(insertDetail.getAttribute2()); + inventoryTransaction.setAttribute3(insertDetail.getAttribute3()); + inventoryTransaction.setCreated(new Date()); + inventoryTransaction.setCreatedBy(ShiroUtils.getName()); + inventoryTransaction.setBillDetailId(insertDetail.getReceiptDetailId()); + inventoryTransaction.setSupplierCode(insertDetail.getSupplierCode()); + inventoryTransactionService.saveOrUpdate(inventoryTransaction); } - if(isFlag){ - return AjaxResult.success("调整库存成功!"); + } + //修改调整单明细状态 + adjustDetail.setStatus(3); + adjustDetail.setLastUpdatedBy(ShiroUtils.getName()); + adjustDetail.setLastUpdated(new Date()); + this.saveOrUpdate(adjustDetail); + //判断调整单明细是否全部已批准 + List<AdjustDetail> list = this.list(new LambdaQueryWrapper<AdjustDetail>() + .eq(AdjustDetail::getAdjustCode, adjustDetail.getAdjustCode())); + boolean isFlag = false; + for (AdjustDetail detail : list) { + if (detail.getStatus() != 3) { + isFlag = true; } - //已批准更新 调整单头 - AdjustHeader adjustHeader = adjustHeaderService.getOne(new LambdaQueryWrapper<AdjustHeader>() - .eq(AdjustHeader::getCode, adjustDetail.getAdjustCode())); - adjustHeader.setProcessStamp("100"); - adjustHeaderService.updateById(adjustHeader); + } + if (isFlag) { return AjaxResult.success("调整库存成功!"); + } + //已批准更新 调整单头 + AdjustHeader adjustHeader = adjustHeaderService.getOne(new LambdaQueryWrapper<AdjustHeader>() + .eq(AdjustHeader::getCode, adjustDetail.getAdjustCode())); + adjustHeader.setProcessStamp("100"); + adjustHeaderService.updateById(adjustHeader); + return AjaxResult.success("调整库存成功!"); } /** * 调整修改库存数量 + * * @param adjustDetail */ @Transactional - public void updateAdjustDetailNumber (AdjustDetail adjustDetail, InventoryDetail inventoryDetail){ + public void updateAdjustDetailNumber(AdjustDetail adjustDetail, InventoryDetail inventoryDetail) { /*修改库存数量,调整单据状态,写入库存交易*/ /*调整后的数量写入库存*/ //比较大小可以用 .compareTo()返回值 -1 小于 0 等于 1 大于 //Bigdecimal 自带运算方法.add加法 .subtract减法 - if(adjustDetail.getToQty().compareTo(BigDecimal.ZERO) == 0){ + if (adjustDetail.getToQty().compareTo(BigDecimal.ZERO) == 0) { //当调整后数量为0时,直接删除该条库存,并写入库存交易 //删除库存,并查询当前库位还有没有其他物料,没有则删除库存头,恢复容器和库位状态 InventoryDetail inv = new InventoryDetail(); @@ -334,36 +334,38 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj LambdaQueryWrapper<InventoryDetail> lamdDetail = Wrappers.lambdaQuery(inv); List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(lamdDetail); inventoryDetailService.removeById(adjustDetail.getInventoryDetailId());//删除实际库存数量为0的库存明细 - if(inventoryDetailList.size() == 0){ + if (inventoryDetailList.size() == 0) { //恢复库位和容器状态,删除库存头 inventoryHeaderService.removeById(inventoryDetail.getInventoryHeaderId()); locationService.updateContainerCodeAndStatus(inventoryDetail.getLocationCode(), - "",QuantityConstant.STATUS_LOCATION_EMPTY); + "", QuantityConstant.STATUS_LOCATION_EMPTY); containerService.updateLocationCodeAndStatus(inventoryDetail.getContainerCode(), - "",QuantityConstant.STATUS_CONTAINER_EMPTY); + "", QuantityConstant.STATUS_CONTAINER_EMPTY); } - }else{ + } else { //修改库存 //BigDecimal temp =(adjustDetail.getFromQty()).add(adjustDetail.getGapQty()); inventoryDetail.setQty(adjustDetail.getToQty());//调整后的数量 inventoryDetail.setLastUpdatedBy(ShiroUtils.getName()); inventoryDetail.setLastUpdatedByName(ShiroUtils.getName()); inventoryDetail.setLastUpdated(new Date()); - Boolean j = inventoryDetailService.saveOrUpdate(inventoryDetail); - if(j == false){ + Boolean j = inventoryDetailService.saveOrUpdate(inventoryDetail); + if (j == false) { throw new SecurityException("调整修改库存失败!"); - } } + } + } //写入库存交易记录 InventoryTransaction inventoryTransaction = new InventoryTransaction(); inventoryTransaction.setWarehouseCode(inventoryDetail.getWarehouseCode()); inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); - if(adjustDetail.getGapQty().compareTo(BigDecimal.ZERO) > 0) { - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO ); + if (adjustDetail.getGapQty().compareTo(BigDecimal.ZERO) > 0) { + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO); } else { - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT ); + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT); } + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode()); inventoryTransaction.setAdjustCode(adjustDetail.getAdjustCode()); inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); @@ -390,18 +392,19 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj inventoryTransaction.setBillDetailId(inventoryDetail.getReceiptDetailId()); inventoryTransaction.setSupplierCode(inventoryDetail.getSupplierCode()); Boolean k = inventoryTransactionService.saveOrUpdate(inventoryTransaction); - if(k == false){ + if (k == false) { throw new SecurityException("调整单库存交易生成失败!"); } } /** * 调整库存属性 + * * @param adjustDetail */ @Transactional - public void updateAdjustDetailState (AdjustDetail adjustDetail, InventoryDetail inventoryDetail) { - /*不考虑其他只改变库存状态即可,也需要写入库存交易。*/ + public void updateAdjustDetailState(AdjustDetail adjustDetail, InventoryDetail inventoryDetail) { + /*不考虑其他只改变库存状态即可,也需要写入库存交易。*/ //修改库存的状态 inventoryDetail.setInventorySts(adjustDetail.getToInventorySts());//修改为调整库存 @@ -420,7 +423,8 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); - inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT ); + inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTOUT); + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode()); inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec()); @@ -485,10 +489,11 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj /** * 调整插入库存 + * * @param adjustDetail */ @Transactional - public void updateAdjustDetailInsert (AdjustDetail adjustDetail) { + public void updateAdjustDetailInsert(AdjustDetail adjustDetail) { /*当系统库存为0时,调整单触发插入新库存状态*/ //新生成库存头时,库位,容器都需要更新数据 @@ -499,7 +504,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj ih.setContainerCode(adjustDetail.getContainerCode()); LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery(ih); InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper); - if(inventoryHeader == null){ + if (inventoryHeader == null) { //库存头为空,生成库存头 inventoryHeader.setWarehouseCode(adjustDetail.getWarehouseCode()); inventoryHeader.setLocationCode(adjustDetail.getLocationCode()); @@ -515,9 +520,9 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj inventoryHeaderService.saveOrUpdate(inventoryHeader); //更新库位和容器 locationService.updateContainerCodeAndStatus(inventoryHeader.getLocationCode(), - inventoryHeader.getContainerCode(),QuantityConstant.STATUS_LOCATION_EMPTY); + inventoryHeader.getContainerCode(), QuantityConstant.STATUS_LOCATION_EMPTY); containerService.updateLocationCodeAndStatus(inventoryHeader.getContainerCode(), - inventoryHeader.getLocationCode(),QuantityConstant.STATUS_CONTAINER_EMPTY); + inventoryHeader.getLocationCode(), QuantityConstant.STATUS_CONTAINER_EMPTY); } //生成库存明细 @@ -567,6 +572,7 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_ADJUSTINTO); + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode()); inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); inventoryTransaction.setMaterialSpec(inventoryDetail.getMaterialSpec()); @@ -596,7 +602,4 @@ public class AdjustDetailServiceImpl extends ServiceImpl<AdjustDetailMapper, Adj } - - - } diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java index bdcf39e..257915f 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryHeader/controller/InventoryHeaderController.java @@ -98,7 +98,7 @@ public class InventoryHeaderController extends BaseController { lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), InventoryHeader::getCreated, createdBegin) .le(StringUtils.isNotEmpty(createdEnd), InventoryHeader::getCreated, createdEnd)//创建时间范围 .eq(InventoryHeader::getWarehouseCode, ShiroUtils.getWarehouseCode())//仓库 - .eq(StringUtils.isNotEmpty(inventoryHeader.getZoneCode()), InventoryHeader::getZoneCode, inventoryHeader.getZoneCode()) //库位 + .eq(StringUtils.isNotEmpty(inventoryHeader.getZoneCode()), InventoryHeader::getZoneCode, inventoryHeader.getZoneCode()) //库区 .eq(StringUtils.isNotEmpty(inventoryHeader.getLocationCode()), InventoryHeader::getLocationCode, inventoryHeader.getLocationCode()) //库位 .like(StringUtils.isNotEmpty(inventoryHeader.getContainerCode()), InventoryHeader::getContainerCode, inventoryHeader.getContainerCode())//容器 .eq(StringUtils.isNotEmpty(inventoryHeader.getCreatedBy()), InventoryHeader::getCreatedBy, inventoryHeader.getCreatedBy())//创建用户 @@ -162,7 +162,7 @@ public class InventoryHeaderController extends BaseController { BigDecimal materialQuantity = BigDecimal.ZERO; BigDecimal materialWeight = BigDecimal.ZERO; - if(StrUtil.isNotBlank(dimension) && ReUtil.isMatch(pattern, dimension)){ + if (StrUtil.isNotBlank(dimension) && ReUtil.isMatch(pattern, dimension)) { String[] parts = dimension.split("x"); double length = Double.parseDouble(parts[0]); double width = Double.parseDouble(parts[1]); @@ -177,12 +177,12 @@ public class InventoryHeaderController extends BaseController { } - if(materialQuantity.compareTo(BigDecimal.ZERO) > 0){ - if(materialVolume.compareTo(BigDecimal.ZERO) > 0){ + if (materialQuantity.compareTo(BigDecimal.ZERO) > 0) { + if (materialVolume.compareTo(BigDecimal.ZERO) > 0) { materialVolumeList.add(NumberUtil.mul(materialVolume, materialQuantity)); } - if(materialWeight.compareTo(BigDecimal.ZERO) > 0 ){ + if (materialWeight.compareTo(BigDecimal.ZERO) > 0) { materialWeightList.add(NumberUtil.mul(materialWeight, materialQuantity)); } } @@ -191,11 +191,11 @@ public class InventoryHeaderController extends BaseController { BigDecimal materialVolume = materialVolumeList.stream() .reduce(BigDecimal.ZERO, BigDecimal::add) - .divide(palletVolume,4,RoundingMode.HALF_UP); + .divide(palletVolume, 4, RoundingMode.HALF_UP); BigDecimal materialWeight = materialWeightList.stream() .reduce(BigDecimal.ZERO, BigDecimal::add) - .divide(palletWeightCapacity,4,RoundingMode.HALF_UP); + .divide(palletWeightCapacity, 4, RoundingMode.HALF_UP); String materialVolumePercentage = percentageFormat.format(materialVolume); String materialWeightPercentage = percentageFormat.format(materialWeight); @@ -213,7 +213,6 @@ public class InventoryHeaderController extends BaseController { } - /** * 盘点库存主列表 */ diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java index 7aae758..129d696 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/controller/InventoryTransactionController.java @@ -14,6 +14,7 @@ import com.huaheng.framework.web.page.TableDataInfo; import com.huaheng.framework.web.page.TableSupport; import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; +import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; import com.huaheng.pc.inventory.inventoryTransaction.domain.InventoryTransaction; import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService; @@ -87,6 +88,7 @@ public class InventoryTransactionController extends BaseController { .like(StringUtils.isNotEmpty(inventoryTransaction.getCreatedBy()), InventoryTransaction::getCreatedBy, inventoryTransaction.getCreatedBy())//创建用户 .eq(StringUtils.isNotEmpty(inventoryTransaction.getWarehouse()), InventoryTransaction::getWarehouse, inventoryTransaction.getWarehouse()) //原仓库编码 .like(StringUtils.isNotEmpty(inventoryTransaction.getWarehouseName()), InventoryTransaction::getWarehouseName, inventoryTransaction.getWarehouseName()) //原仓库名称 + .eq(StringUtils.isNotEmpty(inventoryTransaction.getZoneCode()), InventoryTransaction::getZoneCode, inventoryTransaction.getZoneCode()) //库区 //货主 .in(InventoryTransaction::getCompanyCode, ShiroUtils.getCompanyCodeList()) .orderByDesc(InventoryTransaction::getId); diff --git a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java index 1bc7a95..e100346 100644 --- a/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java +++ b/src/main/java/com/huaheng/pc/inventory/inventoryTransaction/domain/InventoryTransaction.java @@ -330,5 +330,10 @@ public class InventoryTransaction implements Serializable { @TableField(value = "isFlatWarehouse") @ApiModelProperty(value = "是否平库,1为平库") private Integer isFlatWarehouse; - + /** + * 库区 + */ + @TableField(value = "zoneCode") + @ApiModelProperty(value = "库区") + private String zoneCode; } diff --git a/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java b/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java index 844c97d..bede5dd 100644 --- a/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java +++ b/src/main/java/com/huaheng/pc/receipt/receiptHeader/service/ReceiptHeaderService.java @@ -110,7 +110,7 @@ public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, Recei SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); LambdaQueryWrapper<ReceiptHeader> lambda = Wrappers.lambdaQuery(); lambda.select(ReceiptHeader::getCode).eq(ReceiptHeader::getReceiptType, receiptType) - .inSql(ReceiptHeader::getCode, "select code from receipt_header where code like '"+receiptType+"%'") + .inSql(ReceiptHeader::getCode, "select code from receipt_header where code like '" + receiptType + "%'") .orderByDesc(ReceiptHeader::getId).last("Limit 1"); //如果指定类型的最后的code存在,并且日期一致。那么 code = 入库单类型 + 年月日 + (排序号 + 1) String maxCode = null; @@ -127,12 +127,12 @@ public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, Recei Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 5, maxCode.length())); code = receiptType + df.format(now) + String.format("%05d", Count + i++); } else { - code = receiptType + df.format(now) + String.format("%05d", 0000+i++); + code = receiptType + df.format(now) + String.format("%05d", 0000 + i++); } aa.select(ReceiptHeaderHistory::getCode).eq(ReceiptHeaderHistory::getCode, code); List<ReceiptHeaderHistory> list = receiptheaderhistoryMapper.selectList(aa); if (list.size() <= 0) { - i=0; + i = 0; } } return code; @@ -484,6 +484,7 @@ public class ReceiptHeaderService extends ServiceImpl<ReceiptHeaderMapper, Recei inventoryTransaction.setLocationCode(locationCode); inventoryTransaction.setContainerCode(containerCode); inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT); + inventoryTransaction.setZoneCode("未知库区"); inventoryTransaction.setMaterialCode(receiptDetail.getMaterialCode()); inventoryTransaction.setMaterialName(receiptDetail.getMaterialName()); inventoryTransaction.setMaterialSpec(receiptDetail.getMaterialSpec()); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java index 5bdf5b2..623d2bb 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/controller/ShipmentHeaderController.java @@ -26,6 +26,7 @@ import com.huaheng.pc.config.waveMaster.service.WaveMasterService; import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; import com.huaheng.pc.momLog.service.IMomLogService; +import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.shipment.shipmentContainerDetail.domain.ShipmentContainerDetail; import com.huaheng.pc.shipment.shipmentContainerDetail.service.ShipmentContainerDetailService; import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; @@ -47,10 +48,7 @@ import javax.annotation.Resource; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** @@ -182,6 +180,7 @@ public class ShipmentHeaderController extends BaseController { .eq(shipmentHeader.getFirstStatus() != null, ShipmentHeader::getFirstStatus, shipmentHeader.getFirstStatus()) .eq(shipmentHeader.getLastStatus() != null, ShipmentHeader::getLastStatus, shipmentHeader.getLastStatus()) .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()), ShipmentHeader::getPushSuccessStatus, shipmentHeader.getPushSuccessStatus()) + .like(StringUtils.isNotEmpty(shipmentHeader.getMaterialColor()), ShipmentHeader::getMaterialColor, shipmentHeader.getMaterialColor()) .eq(ShipmentHeader::getDeleted, 0) .orderByAsc(ShipmentHeader::getLastStatus) .orderByAsc(ShipmentHeader::getRequestedStartDate) @@ -511,7 +510,7 @@ public class ShipmentHeaderController extends BaseController { LambdaQueryWrapper<ShipmentHeader> headerWrapper = Wrappers.lambdaQuery(); headerWrapper.in(ShipmentHeader::getId, headerIdArr); List<ShipmentHeader> shipmentHeaderList = shipmentHeaderService.list(headerWrapper); - if (shipmentHeaderList.size() < 1) { + if (shipmentHeaderList.isEmpty()) { throw new ServiceException("单据主表不存在!!!"); } shipmentHeaderList.forEach(shipmentHeader -> { @@ -540,7 +539,17 @@ public class ShipmentHeaderController extends BaseController { shipmentHeader.setLastStatus(QuantityConstant.SHIPMENT_HEADER_BUILD); StringBuilder recordID = new StringBuilder(); StringBuilder workShops = new StringBuilder(); - shipmentHeaderList.forEach(header -> workShops.append(header.getWorkshop()).append(",")); + Set<String> uniqueWorkshops = new HashSet<>(); + for (ShipmentHeader header : shipmentHeaderList) { + uniqueWorkshops.add(header.getWorkshop()); + } + for (String workshop : uniqueWorkshops) { + workShops.append(workshop).append(","); + } + // 移除最后一个逗号 + if (workShops.length() > 0) { + workShops.setLength(workShops.length() - 1); + } shipmentHeaderList.forEach(header -> recordID.append(header.getId()).append(",")); shipmentHeader.setWorkshop(workShops.toString()); shipmentHeader.setRecordID(recordID.toString()); diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/domain/ShipmentHeader.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/domain/ShipmentHeader.java index 82240d7..333fb2e 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentHeader/domain/ShipmentHeader.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeader/domain/ShipmentHeader.java @@ -529,4 +529,11 @@ public class ShipmentHeader implements Serializable { @TableField(value = "ISMOM") @ApiModelProperty(value = "ISMOM") private String ISMOM; + + /** + * 物料颜色 + */ + @TableField(value = "materialColor") + @ApiModelProperty(value = "物料颜色") + public String materialColor; } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java index fff2202..170b251 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/controller/ShipmentHeaderHistoryController.java @@ -40,183 +40,181 @@ import java.util.List; */ @Controller @RequestMapping("/shipment/shipmentHeaderHistory") -public class ShipmentHeaderHistoryController extends BaseController -{ +public class ShipmentHeaderHistoryController extends BaseController { private String prefix = "shipment/shipmentHeaderHistory"; - @Autowired - private ShipmentHeaderHistoryService shipmentHeaderHistoryService; - @Autowired - private ShipmentDetailHistoryService shipmentDetailHistoryService; - - - @RequiresPermissions("shipment:bill:view") - @GetMapping() - public String shipmentHeaderHistory() - { - return prefix + "/shipmentHeaderHistory"; - } - - /** - * 查询出库单主列表 - */ - @RequiresPermissions("shipment:bill:list") - @Log(title = "出库-出库单历史", operating="查看历史出库主单", action = BusinessType.GRANT) - @PostMapping("/list") - @ResponseBody - public TableDataInfo list(ShipmentHeaderHistory shipmentHeader, String createdBegin, String createdEnd, String deliveryDate, String startDate,String importDate) { - LambdaQueryWrapper<ShipmentHeaderHistory> lambdaQueryWrapper = Wrappers.lambdaQuery(); - PageDomain pageDomain = TableSupport.buildPageRequest(); - Integer pageNum = pageDomain.getPageNum(); - Integer pageSize = pageDomain.getPageSize(); - Date date1 = null; - Date date2 = null; - Date date3 = null; - try { - if (StringUtils.isNotNull(deliveryDate)) { - date1 = new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDate); - }else { - date1 = null; - } - } catch (java.text.ParseException e) { - //LOGGER.error("时间转换错误, string = {}", deliveryDate, e); - } - - try { - if (StringUtils.isNotNull(startDate)) { - date2 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate); - }else { - date2 = null; - } - } catch (java.text.ParseException e) { - } - try { - if (StringUtils.isNotNull(importDate)) { - date3 = new SimpleDateFormat("yyyy-MM-dd").parse(importDate); - } else { - date3 = null; - } - } catch (java.text.ParseException e) { - } - Date startTime1 = date1; - Date endTime1 = null; - if(startTime1!=null){ - //获取当前时间 - endTime1 = DateUtils.dateAddNum(startTime1, 1,0,-1); - } - - Date startTime2 = date2; - Date endTime2 = null; - if(startTime2!=null){ - //获取当前时间 - endTime2 = DateUtils.dateAddNum(startTime2, 1,0,-1); - } - Date startTime3 = date3; - Date endTime3 = null; - if (startTime3 != null) { - //获取当前时间 - endTime3 = DateUtils.dateAddNum(startTime3, 1, 0, -1); - } - - lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin),ShipmentHeaderHistory::getCreated, createdBegin) - .le(StringUtils.isNotEmpty(createdEnd), ShipmentHeaderHistory::getCreated, createdEnd) - .eq(ShipmentHeaderHistory::getWarehouseCode,ShiroUtils.getWarehouseCode()) - .eq(ShipmentHeaderHistory::getDeleted,false) + @Autowired + private ShipmentHeaderHistoryService shipmentHeaderHistoryService; + @Autowired + private ShipmentDetailHistoryService shipmentDetailHistoryService; + + + @RequiresPermissions("shipment:bill:view") + @GetMapping() + public String shipmentHeaderHistory() { + return prefix + "/shipmentHeaderHistory"; + } + + /** + * 查询出库单主列表 + */ + @RequiresPermissions("shipment:bill:list") + @Log(title = "出库-出库单历史", operating = "查看历史出库主单", action = BusinessType.GRANT) + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ShipmentHeaderHistory shipmentHeader, String createdBegin, String createdEnd, String deliveryDate, String startDate, String importDate) { + LambdaQueryWrapper<ShipmentHeaderHistory> lambdaQueryWrapper = Wrappers.lambdaQuery(); + PageDomain pageDomain = TableSupport.buildPageRequest(); + Integer pageNum = pageDomain.getPageNum(); + Integer pageSize = pageDomain.getPageSize(); + Date date1 = null; + Date date2 = null; + Date date3 = null; + try { + if (StringUtils.isNotNull(deliveryDate)) { + date1 = new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDate); + } else { + date1 = null; + } + } catch (java.text.ParseException e) { + //LOGGER.error("时间转换错误, string = {}", deliveryDate, e); + } + + try { + if (StringUtils.isNotNull(startDate)) { + date2 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate); + } else { + date2 = null; + } + } catch (java.text.ParseException e) { + } + try { + if (StringUtils.isNotNull(importDate)) { + date3 = new SimpleDateFormat("yyyy-MM-dd").parse(importDate); + } else { + date3 = null; + } + } catch (java.text.ParseException e) { + } + Date startTime1 = date1; + Date endTime1 = null; + if (startTime1 != null) { + //获取当前时间 + endTime1 = DateUtils.dateAddNum(startTime1, 1, 0, -1); + } + + Date startTime2 = date2; + Date endTime2 = null; + if (startTime2 != null) { + //获取当前时间 + endTime2 = DateUtils.dateAddNum(startTime2, 1, 0, -1); + } + Date startTime3 = date3; + Date endTime3 = null; + if (startTime3 != null) { + //获取当前时间 + endTime3 = DateUtils.dateAddNum(startTime3, 1, 0, -1); + } + + lambdaQueryWrapper.ge(StringUtils.isNotEmpty(createdBegin), ShipmentHeaderHistory::getCreated, createdBegin) + .le(StringUtils.isNotEmpty(createdEnd), ShipmentHeaderHistory::getCreated, createdEnd) + .eq(ShipmentHeaderHistory::getWarehouseCode, ShiroUtils.getWarehouseCode()) + .eq(ShipmentHeaderHistory::getDeleted, false) // .eq(date != null,ShipmentHeader::getRequestedDeliveryDate,date) - .inSql(StringUtils.isNotEmpty(shipmentHeader.getNoticeNo()),ShipmentHeaderHistory::getId,"select DISTINCT shipmentId from shipment_detail_history where noticeNo like '%"+shipmentHeader.getNoticeNo()+"%'") - .in(StringUtils.isNotEmpty(shipmentHeader.getCompanyCode()),ShipmentHeaderHistory::getCompanyCode, shipmentHeader.getCompanyCode()) - .in(StringUtils.isEmpty(shipmentHeader.getCompanyCode()), ShipmentHeaderHistory::getCompanyCode, ShiroUtils.getCompanyCodeList()) - .inSql(StringUtils.isNotEmpty(shipmentHeader.getCode()),ShipmentHeaderHistory::getCode,"select DISTINCT shipmentCode from shipment_detail_history where recordCode = '"+shipmentHeader.getCode()+"' UNION SELECT DISTINCT shipmentCode FROM shipment_detail_history WHERE shipmentCode like '%" + shipmentHeader.getCode() + "%'") - //.inSql(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getId, "select DISTINCT shipmentId from shipment_detail_history where preMergerWorkshop like '%" + shipmentHeader.getWorkshop() + "%'") - //.or() - .like(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getWorkshop, shipmentHeader.getWorkshop()) - .like(StringUtils.isNotEmpty(shipmentHeader.getLastUpdatedBy()), ShipmentHeaderHistory::getLastUpdatedBy, shipmentHeader.getLastUpdatedBy()) - .like(StringUtils.isNotEmpty(shipmentHeader.getShipmentNote()), ShipmentHeaderHistory::getShipmentNote, shipmentHeader.getShipmentNote()) - .eq(StringUtils.isNotEmpty(shipmentHeader.getShipmentType()),ShipmentHeaderHistory::getShipmentType,shipmentHeader.getShipmentType()) - .like(StringUtils.isNotEmpty(shipmentHeader.getProcessType()), ShipmentHeaderHistory::getProcessType, shipmentHeader.getProcessType()) - .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCode()), ShipmentHeaderHistory::getReferCode, shipmentHeader.getReferCode()) - .like(StringUtils.isNotEmpty(shipmentHeader.getTransferWarehouseName()), ShipmentHeaderHistory::getTransferWarehouseName, shipmentHeader.getTransferWarehouseName()) - .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCodeType()), ShipmentHeaderHistory::getReferCodeType, shipmentHeader.getReferCodeType()) - .like(StringUtils.isNotEmpty(shipmentHeader.getOrigin()), ShipmentHeaderHistory::getOrigin, shipmentHeader.getOrigin()) - .between(StringUtils.isNotNull(startTime1), ShipmentHeaderHistory::getRequestedDeliveryDate, startTime1,endTime1) - .between(StringUtils.isNotNull(startTime2), ShipmentHeaderHistory::getRequestedStartDate, startTime2,endTime2) - .between(StringUtils.isNotNull(startTime3), ShipmentHeaderHistory::getDailyScheduleImportDate, startTime3, endTime3) - .eq(shipmentHeader.getFirstStatus()!=null, ShipmentHeaderHistory::getFirstStatus, shipmentHeader.getFirstStatus()) - .eq(shipmentHeader.getLastStatus()!=null, ShipmentHeaderHistory::getLastStatus, shipmentHeader.getLastStatus()) - .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()),ShipmentHeaderHistory::getPushSuccessStatus,shipmentHeader.getPushSuccessStatus()) - .eq(ShipmentHeaderHistory::getDeleted,0) - //.orderByAsc(ShipmentHeaderHistory::getLastUpdated) - //.orderByAsc(ShipmentHeaderHistory::getLastStatus) - //.orderByAsc(ShipmentHeaderHistory::getRequestedStartDate) - //.orderByAsc(ShipmentHeaderHistory::getCreated); - .orderByDesc(ShipmentHeaderHistory::getLastUpdated); - - if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){ - /** - * 使用分页查询 - */ - Page<ShipmentHeaderHistory> page = new Page<>(pageNum, pageSize); - IPage<ShipmentHeaderHistory> iPage = shipmentHeaderHistoryService.page(page, lambdaQueryWrapper); - return getMpDataTable(iPage.getRecords(),iPage.getTotal()); - } else { - List<ShipmentHeaderHistory> list = shipmentHeaderHistoryService.list(lambdaQueryWrapper); - return getDataTable(list); - } - } - - - /** - * 删除出库单主 - */ - @RequiresPermissions("shipment:bill:remove") - @Log(title = "出库-历史出库单", operating="删除历史出库主单", action = BusinessType.DELETE) - @PostMapping( "/remove") - @ResponseBody - public AjaxResult remove(String ids) { - if (StringUtils.isEmpty(ids)) { + .inSql(StringUtils.isNotEmpty(shipmentHeader.getNoticeNo()), ShipmentHeaderHistory::getId, "select DISTINCT shipmentId from shipment_detail_history where noticeNo like '%" + shipmentHeader.getNoticeNo() + "%'") + .in(StringUtils.isNotEmpty(shipmentHeader.getCompanyCode()), ShipmentHeaderHistory::getCompanyCode, shipmentHeader.getCompanyCode()) + .in(StringUtils.isEmpty(shipmentHeader.getCompanyCode()), ShipmentHeaderHistory::getCompanyCode, ShiroUtils.getCompanyCodeList()) + .inSql(StringUtils.isNotEmpty(shipmentHeader.getCode()), ShipmentHeaderHistory::getCode, "select DISTINCT shipmentCode from shipment_detail_history where recordCode = '" + shipmentHeader.getCode() + "' UNION SELECT DISTINCT shipmentCode FROM shipment_detail_history WHERE shipmentCode like '%" + shipmentHeader.getCode() + "%'") + //.inSql(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getId, "select DISTINCT shipmentId from shipment_detail_history where preMergerWorkshop like '%" + shipmentHeader.getWorkshop() + "%'") + //.or() + .like(StringUtils.isNotEmpty(shipmentHeader.getWorkshop()), ShipmentHeaderHistory::getWorkshop, shipmentHeader.getWorkshop()) + .like(StringUtils.isNotEmpty(shipmentHeader.getLastUpdatedBy()), ShipmentHeaderHistory::getLastUpdatedBy, shipmentHeader.getLastUpdatedBy()) + .like(StringUtils.isNotEmpty(shipmentHeader.getShipmentNote()), ShipmentHeaderHistory::getShipmentNote, shipmentHeader.getShipmentNote()) + .eq(StringUtils.isNotEmpty(shipmentHeader.getShipmentType()), ShipmentHeaderHistory::getShipmentType, shipmentHeader.getShipmentType()) + .like(StringUtils.isNotEmpty(shipmentHeader.getProcessType()), ShipmentHeaderHistory::getProcessType, shipmentHeader.getProcessType()) + .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCode()), ShipmentHeaderHistory::getReferCode, shipmentHeader.getReferCode()) + .like(StringUtils.isNotEmpty(shipmentHeader.getTransferWarehouseName()), ShipmentHeaderHistory::getTransferWarehouseName, shipmentHeader.getTransferWarehouseName()) + .eq(StringUtils.isNotEmpty(shipmentHeader.getReferCodeType()), ShipmentHeaderHistory::getReferCodeType, shipmentHeader.getReferCodeType()) + .like(StringUtils.isNotEmpty(shipmentHeader.getOrigin()), ShipmentHeaderHistory::getOrigin, shipmentHeader.getOrigin()) + .between(StringUtils.isNotNull(startTime1), ShipmentHeaderHistory::getRequestedDeliveryDate, startTime1, endTime1) + .between(StringUtils.isNotNull(startTime2), ShipmentHeaderHistory::getRequestedStartDate, startTime2, endTime2) + .between(StringUtils.isNotNull(startTime3), ShipmentHeaderHistory::getDailyScheduleImportDate, startTime3, endTime3) + .eq(shipmentHeader.getFirstStatus() != null, ShipmentHeaderHistory::getFirstStatus, shipmentHeader.getFirstStatus()) + .eq(shipmentHeader.getLastStatus() != null, ShipmentHeaderHistory::getLastStatus, shipmentHeader.getLastStatus()) + .eq(StringUtils.isNotNull(shipmentHeader.getPushSuccessStatus()), ShipmentHeaderHistory::getPushSuccessStatus, shipmentHeader.getPushSuccessStatus()) + .like(StringUtils.isNotEmpty(shipmentHeader.getMaterialColor()), ShipmentHeaderHistory::getMaterialColor, shipmentHeader.getMaterialColor()) + .eq(ShipmentHeaderHistory::getDeleted, 0) + //.orderByAsc(ShipmentHeaderHistory::getLastUpdated) + //.orderByAsc(ShipmentHeaderHistory::getLastStatus) + //.orderByAsc(ShipmentHeaderHistory::getRequestedStartDate) + //.orderByAsc(ShipmentHeaderHistory::getCreated); + .orderByDesc(ShipmentHeaderHistory::getLastUpdated); + + if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) { + /** + * 使用分页查询 + */ + Page<ShipmentHeaderHistory> page = new Page<>(pageNum, pageSize); + IPage<ShipmentHeaderHistory> iPage = shipmentHeaderHistoryService.page(page, lambdaQueryWrapper); + return getMpDataTable(iPage.getRecords(), iPage.getTotal()); + } else { + List<ShipmentHeaderHistory> list = shipmentHeaderHistoryService.list(lambdaQueryWrapper); + return getDataTable(list); + } + } + + + /** + * 删除出库单主 + */ + @RequiresPermissions("shipment:bill:remove") + @Log(title = "出库-历史出库单", operating = "删除历史出库主单", action = BusinessType.DELETE) + @PostMapping("/remove") + @ResponseBody + public AjaxResult remove(String ids) { + if (StringUtils.isEmpty(ids)) { return AjaxResult.error("id不能为空"); } - for (Integer id : Convert.toIntArray(ids)) - { - boolean result=shipmentHeaderHistoryService.removeById(id); - LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper=Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId,id) - .eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode()); - Boolean flag=true; - flag=shipmentDetailHistoryService.remove(lambdaQueryWrapper); - if(result==false){ - return AjaxResult.error("删除失败"); - } - } - return AjaxResult.success("删除成功!"); - } - - /** - * 出库单报表打印 - * @return - */ - @RequiresPermissions("shipment:bill:report") - @Log(title = "出库-历史出库单", operating="打印历史出库单报表", action = BusinessType.OTHER) - @GetMapping("/report/{id}") - public String report(@PathVariable("id") Integer id, ModelMap mmap) - { - ShipmentHeaderHistory shipmentHeaderHistory = shipmentHeaderHistoryService.getById(id); - mmap.put("shipmentHeader", shipmentHeaderHistory); - - LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId,id) - .eq(ShipmentDetailHistory::getWarehouseCode,ShiroUtils.getWarehouseCode()); - List<ShipmentDetailHistory> details = shipmentDetailHistoryService.list(lambdaQueryWrapper); - mmap.put("details", details); - - return prefix + "/report"; - } - - @PostMapping("/getShipmentHeader") - @ResponseBody - public AjaxResult<ShipmentHeaderHistory> getShipmentHeader(int id){ - return AjaxResult.success(shipmentHeaderHistoryService.getById(id)); - } + for (Integer id : Convert.toIntArray(ids)) { + boolean result = shipmentHeaderHistoryService.removeById(id); + LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId, id) + .eq(ShipmentDetailHistory::getWarehouseCode, ShiroUtils.getWarehouseCode()); + Boolean flag = true; + flag = shipmentDetailHistoryService.remove(lambdaQueryWrapper); + if (result == false) { + return AjaxResult.error("删除失败"); + } + } + return AjaxResult.success("删除成功!"); + } + + /** + * 出库单报表打印 + * + * @return + */ + @RequiresPermissions("shipment:bill:report") + @Log(title = "出库-历史出库单", operating = "打印历史出库单报表", action = BusinessType.OTHER) + @GetMapping("/report/{id}") + public String report(@PathVariable("id") Integer id, ModelMap mmap) { + ShipmentHeaderHistory shipmentHeaderHistory = shipmentHeaderHistoryService.getById(id); + mmap.put("shipmentHeader", shipmentHeaderHistory); + + LambdaQueryWrapper<ShipmentDetailHistory> lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(ShipmentDetailHistory::getShipmentId, id) + .eq(ShipmentDetailHistory::getWarehouseCode, ShiroUtils.getWarehouseCode()); + List<ShipmentDetailHistory> details = shipmentDetailHistoryService.list(lambdaQueryWrapper); + mmap.put("details", details); + + return prefix + "/report"; + } + + @PostMapping("/getShipmentHeader") + @ResponseBody + public AjaxResult<ShipmentHeaderHistory> getShipmentHeader(int id) { + return AjaxResult.success(shipmentHeaderHistoryService.getById(id)); + } } diff --git a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java index eb1d5d9..e1a0f1b 100644 --- a/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java +++ b/src/main/java/com/huaheng/pc/shipment/shipmentHeaderHistory/domain/ShipmentHeaderHistory.java @@ -485,31 +485,32 @@ public class ShipmentHeaderHistory implements Serializable { /** * 回传错误次数 + * * @return */ @TableField(value = "pushErrorCount") - @ApiModelProperty(value="回传错误次数") + @ApiModelProperty(value = "回传错误次数") public Integer pushErrorCount; /** * 错误消息 */ @TableField(value = "ErrorMsg") - @ApiModelProperty(value="错误消息") + @ApiModelProperty(value = "错误消息") public String errorMsg; /** * 回传状态,0默认,1成功,2失败 */ @TableField(value = "pushSuccessStatus") - @ApiModelProperty(value="回传状态,0默认,1成功,2失败,3提前过账") + @ApiModelProperty(value = "回传状态,0默认,1成功,2失败,3提前过账") public Integer pushSuccessStatus; /** * 来源 */ @TableField(value = "origin") - @ApiModelProperty(value="来源") + @ApiModelProperty(value = "来源") public String origin; /** @@ -530,6 +531,13 @@ public class ShipmentHeaderHistory implements Serializable { * 入库单的最后更新时间 */ @TableField(value = "lastUpdateTime") - @ApiModelProperty(value="入库单的最后更新时间") + @ApiModelProperty(value = "入库单的最后更新时间") private Date lastUpdateTime; + + /** + * 物料颜色 + */ + @TableField(value = "materialColor") + @ApiModelProperty(value = "物料颜色") + public String materialColor; } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java index 67513a5..acebc1f 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ReceiptTaskService.java @@ -558,6 +558,7 @@ public class ReceiptTaskService { //记录库存交易记录 InventoryTransaction inventoryTransaction = new InventoryTransaction(); ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId()); + inventoryTransaction.setZoneCode(inventoryHeader.getZoneCode()); inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_RECEIPT); inventoryTransaction.setWarehouseCode(taskDetail.getWarehouseCode()); inventoryTransaction.setCompanyCode(taskDetail.getCompanyCode()); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java index 79a7313..e39d760 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/ShipmentTaskService.java @@ -359,6 +359,7 @@ public class ShipmentTaskService { inventoryTransaction.setCompanyCode(inventoryDetail.getCompanyCode()); inventoryTransaction.setLocationCode(inventoryDetail.getLocationCode()); inventoryTransaction.setContainerCode(inventoryDetail.getContainerCode()); + inventoryTransaction.setZoneCode(inventoryHeader.getZoneCode()); inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_SHIPMENT); inventoryTransaction.setMaterialCode(inventoryDetail.getMaterialCode()); inventoryTransaction.setMaterialName(inventoryDetail.getMaterialName()); diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java index 6c86788..e18950d 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java @@ -159,7 +159,7 @@ public class TransferTaskService { // locationService.updateStatus(desLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); int updateCount = locationService.updateStatusNew(desLocationCode, warehouseCode, QuantityConstant.STATUS_LOCATION_LOCK, QuantityConstant.STATUS_LOCATION_EMPTY); - if(updateCount != 1) { + if (updateCount != 1) { throw new ServiceException("库位已经锁定,不允许再分到这个库位"); } containerService.updateLocationCodeAndStatus(sourceLocation.getContainerCode(), @@ -236,6 +236,7 @@ public class TransferTaskService { inventoryTransaction.setLocationCode(taskDetail.getToLocation()); inventoryTransaction.setContainerCode(taskDetail.getContainerCode()); inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_TRANSFERINTO); + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode()); inventoryTransaction.setMaterialCode(taskDetail.getMaterialCode()); inventoryTransaction.setMaterialName(taskDetail.getMaterialName()); inventoryTransaction.setMaterialSpec(taskDetail.getMaterialSpec()); @@ -259,6 +260,7 @@ public class TransferTaskService { inventoryTransactionService.save(inventoryTransaction); inventoryTransaction.setLocationCode(taskDetail.getFromLocation()); inventoryTransaction.setTransactionType(QuantityConstant.INVENTORY_TRANSACTION_TRANSFEROUT); + inventoryTransaction.setZoneCode(inventoryDetail.getZoneCode()); inventoryTransactionService.save(inventoryTransaction); } if (taskDetailList.size() != 0) { diff --git a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html index 3f464a6..5e7c21e 100644 --- a/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html +++ b/src/main/resources/templates/inventory/inventoryTransaction/inventoryTransaction.html @@ -10,6 +10,15 @@ <div class="select-list"> <ul> <li> + 库区: + <select id="zoneCode" name="zoneCode" th:with="list=${@zone.getCode()}"> + <option value="">所有</option> + <option th:each="item : ${list}" th:text="${item['name']}" + th:value="${item['code']}" + th:attr=" code = ${item['code']}"></option> + </select> + </li> + <li> 库位编码:<input type="text" name="locationCode"/> </li> <li> @@ -102,6 +111,7 @@ var prefix = ctx + "inventory/inventoryTransaction"; var inventoryStatus = [[${@dict.getType('inventorySts')}]]; var warehouses = [[${@WarehouseService.getCode()}]]; + var zone = [[${@zone.getCode()}]]; var inventoryTransactionType = [[${@dict.getType('inventoryTransactionType')}]]; $(function () { var options = { @@ -148,6 +158,21 @@ } }, { + field: 'zoneCode', + title: '库区', + align: 'center', + formatter: function (value, row, index) { + var actions = []; + $.each(zone, function (index, dict) { + if (dict.code == value) { + actions.push("<span class='badge badge-info'>" + dict.name + "</span>"); + return false; + } + }); + return actions.join(''); + } + }, + { field: 'locationCode', title: '库位编号' }, diff --git a/src/main/resources/templates/receipt/receiving/receiving.html b/src/main/resources/templates/receipt/receiving/receiving.html index a8f72b4..4c4ab0a 100644 --- a/src/main/resources/templates/receipt/receiving/receiving.html +++ b/src/main/resources/templates/receipt/receiving/receiving.html @@ -327,6 +327,19 @@ field: 'materialUnit', title: '单位' }, + { + field: 'isFlatWarehouse', + title: '仓库类型', + visible: true, + align: 'center', + formatter: function (value, row, index) { + if (value == 1) { + return '<span style="color:#51855c">平库</span>' + } else { + return '<span style="color:black">立库</span>' + } + } + }, ] }); diff --git a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html index 4e69790..6618c10 100644 --- a/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html +++ b/src/main/resources/templates/shipment/shipmentHeader/shipmentHeader.html @@ -104,6 +104,9 @@ </select> </li> <li> + 颜色信息:<input type="text" name="materialColor"/> + </li> + <li> 备注:<input type="text" name="shipmentNote"/> </li> <li class="time"> @@ -499,19 +502,22 @@ field: 'requestedDeliveryDate', title: '计划完成日期', }, + // { + // field: 'workshop', + // title: '生产车间', + // formatter: function (value, row, index) { + // var actions = []; + // if (value == undefined || value == '') + // value = " " + // else + // actions.push("<div class='textEllipsis'>" + value + "</div>") + // return actions.join(" ") + // } + // }, { field: 'workshop', title: '生产车间', - formatter: function (value, row, index) { - var actions = []; - if (value == undefined || value == '') - value = " " - else - actions.push("<div class='textEllipsis'>" + value + "</div>") - return actions.join(" ") - } }, - { field: 'shipmentNote', title: '备注', @@ -591,6 +597,18 @@ visible: true }, { + field: 'materialColor', + title: '颜色信息', + formatter: function (value, row, index) { + var actions = []; + if (value == undefined || value == '') + value = " " + else + actions.push('<pre style="max-height:50px; white-space: pre-wrap; width:500px">' + value + '</pre>') + return actions.join(" ") + } + }, + { field: 'errorMsg', title: '错误信息', formatter: function (value, row, index) { diff --git a/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html b/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html index 4f256a7..7b3ad4d 100644 --- a/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html +++ b/src/main/resources/templates/shipment/shipmentHeaderHistory/shipmentHeaderHistory.html @@ -98,6 +98,9 @@ </li> </li> <li> + 颜色信息:<input type="text" name="materialColor"/> + </li> + <li> 备注:<input type="text" name="shipmentNote"/> </li> <li class="time"> @@ -454,17 +457,21 @@ field: 'requestedDeliveryDate', title: '计划完成日期', }, + // { + // field: 'workshop', + // title: '生产车间', + // formatter: function(value, row, index) { + // var actions = []; + // if(value == undefined || value == '') + // value = " " + // else + // actions.push("<div class='textEllipsis'>"+value+"</div>") + // return actions.join(" ") + // } + // }, { field: 'workshop', title: '生产车间', - formatter: function(value, row, index) { - var actions = []; - if(value == undefined || value == '') - value = " " - else - actions.push("<div class='textEllipsis'>"+value+"</div>") - return actions.join(" ") - } }, { field: 'shipmentNote', @@ -553,6 +560,18 @@ visible: true }, { + field: 'materialColor', + title: '颜色信息', + formatter: function (value, row, index) { + var actions = []; + if (value == undefined || value == '') + value = " " + else + actions.push('<pre style="max-height:50px; white-space: pre-wrap; width:500px">' + value + '</pre>') + return actions.join(" ") + } + }, + { field: 'errorMsg', title: '错误信息', formatter: function (value, row, index) { -- libgit2 0.22.2