diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java index f6477f04b..5d01e9b63 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java @@ -34,7 +34,7 @@ public interface OmsServiceFeign { public AjaxResult pushOutOrderDetail(@RequestBody OutMaterialDetailTZPD outMaterialDetail); @ApiOperation("编辑物料库存") - @PostMapping("/materialInventoryApi/omsEdit") + @PostMapping("/reservationMaterialInventoryApi/omsEdit") public AjaxResult omsEdit(@RequestBody MaterialInventoryOmsParamDO materialInventoryOmsParamDO); @ApiOperation("查询企业单位列表-新增物料时显示下拉框数据") diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java index 5ebd085c8..e8e410985 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderDomainService.java @@ -710,15 +710,43 @@ public class ReservationStockOutOrderDomainService { reservationStockInOrder.setOrderStatus("新增"); reservationStockInOrder.setSalesmanId(loginUser.getUserPo().getUserId().toString()); reservationStockInOrder.setSalesmanName(loginUser.getUserPo().getUserName()); - reservationStockInOrder.setInOrderNumber("退"+stockOutOrder.getOutOrderNumber()); + Random random = new Random(); + int num = random.nextInt(1000); // 0~999 + String str = String.format("%03d", num); // 不足三位前面补零 + reservationStockInOrder.setInOrderNumber("退"+stockOutOrder.getOutOrderNumber()+str); reservationStockInOrderMapper.insert(reservationStockInOrder); reservationDeliveryDetailsLink.setReturnOrderNumber(reservationStockInOrder.getInOrderNumber()); reservationDeliveryDetailsLinkService.updateById(reservationDeliveryDetailsLink); - stockOutOrder.setReturnOrderNumber(reservationStockInOrder.getInOrderNumber()); - stockOutOrder.setDeliveryName(reservationDeliveryDetailsLink.getDeliveryName()); - stockOutOrder.setInvoiceNumber(reservationDeliveryDetailsLink.getInvoiceNumber()); - stockOutOrder.setCustomerNumber(reservationDeliveryDetailsLink.getCustomerNumber()); - stockOutOrder.setReturnQuantity(new BigDecimal(bag)); + String returnOrderNumber = stockOutOrder.getReturnOrderNumber(); + if (returnOrderNumber == null) { + stockOutOrder.setReturnOrderNumber(reservationStockInOrder.getInOrderNumber()); + } else { + stockOutOrder.setReturnOrderNumber(returnOrderNumber + "," + reservationStockInOrder.getInOrderNumber()); + } + String deliveryName = stockOutOrder.getDeliveryName(); + if (deliveryName == null) { + stockOutOrder.setDeliveryName(reservationDeliveryDetailsLink.getDeliveryName()); + } else { + stockOutOrder.setDeliveryName(deliveryName + "," + reservationDeliveryDetailsLink.getDeliveryName()); + } + String invoiceNumber1 = stockOutOrder.getInvoiceNumber(); + if (invoiceNumber1 == null) { + stockOutOrder.setInvoiceNumber(reservationDeliveryDetailsLink.getInvoiceNumber()); + } else { + stockOutOrder.setInvoiceNumber(invoiceNumber1 + "," + reservationDeliveryDetailsLink.getInvoiceNumber()); + } + String customerNumber = stockOutOrder.getCustomerNumber(); + if (customerNumber == null) { + stockOutOrder.setCustomerNumber(reservationDeliveryDetailsLink.getCustomerNumber()); + } else { + stockOutOrder.setCustomerNumber(customerNumber + "," + reservationDeliveryDetailsLink.getCustomerNumber()); + } + BigDecimal returnQuantity = stockOutOrder.getReturnQuantity(); + if (returnQuantity == null || returnQuantity.compareTo(BigDecimal.ZERO) == 0) { + stockOutOrder.setReturnQuantity(new BigDecimal(bag)); + } else { + stockOutOrder.setReturnQuantity(returnQuantity.add(new BigDecimal(bag))); + } stockOutOrderService.updateById(stockOutOrder); } } diff --git a/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml index ba129dc04..57b897f91 100644 --- a/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reservationStockOutOrder/ReservationStockOutOrderMapper.xml @@ -95,6 +95,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + @@ -112,7 +119,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.COMPLETE_TIME,a.ORDER_DATE,a.TRANSPORT_MODE_CODE,a.TRANSPORT_MODE_NAME,a.SUPERVISION_MODE_CODE,a.SUPERVISION_MODE_NAME, a.CUSTOMS_INSPECTION_FLAG,a.NEED_DECLARE_FLAG,a.NEED_TRANSPORT_FLAG,a.picture_app,a.reservation_audit_time,a.reservation_audit_name ,a.reservation_audit_id,a.issue_name,a.issue_id,a.issue_time,a.issue_status,a.tms_order_number, - a.DIRECTOR_NAME ,a.DIRECTOR_PHONE,a.DIRECTOR_ID,a.RESERVATION_ORDER_SOURCE,a.OUTBOUND_TIME + a.DIRECTOR_NAME ,a.DIRECTOR_PHONE,a.DIRECTOR_ID,a.RESERVATION_ORDER_SOURCE,a.OUTBOUND_TIME,a.RETURN_QUANTITY,a.DELIVERY_NAME,a.CUSTOMER_NUMBER,a.INVOICE_NUMBER,a.RETURN_ORDER_NUMBER,a.TOTAL_AMOUNT, + a.ROUTE diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java index 1e920fcc5..388447438 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java @@ -53,6 +53,8 @@ import lombok.extern.slf4j.Slf4j; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; @@ -430,6 +432,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl materialMoreDetailList = new ArrayList<>(); List materialDetailSerialNumberList = new ArrayList<>(); for (ReceiptMaterialDetailDO receiptMaterialDetailDO : receiptMaterialDetailDOList){ + setMore(receiptMaterialDetailDO); extractBatchAttributesToReceiptDetail(receiptMaterialDetailDO); // 自动生成批次号并校验唯一性(包括子项) generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId, currentInOrderNumber); @@ -453,6 +456,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl receiptMaterialDetailChildList = new ArrayList<>(); if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){ for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){ + setMore(receiptMaterialDetailDOChild); // 子项批次属性已在 generateAndValidateBatchNumber 递归中提取 ReceiptMaterialDetail receiptMaterialDetailChild = new ReceiptMaterialDetail(); BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailChild); @@ -511,6 +515,72 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList(); + if (!CollectionUtils.isEmpty(materialMoreDetailList)) { + for (MaterialMoreDetailDO materialMoreDetailDO : materialMoreDetailList) { + String attributeValue = materialMoreDetailDO.getAttributeValue(); + String batchLabels = materialMoreDetailDO.getBatchLabels(); + if ("生产日期".equals(batchLabels)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = null; + try { + date = sdf.parse(attributeValue); + } catch (ParseException e) { + throw new RuntimeException(e); + } + receiptMaterialDetailDO.setProductionDate(date); + } else if ("过期日期".equals(batchLabels)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = null; + try { + date = sdf.parse(attributeValue); + } catch (ParseException e) { + throw new RuntimeException(e); + } + receiptMaterialDetailDO.setExpiryDate(date); + } else if ("扩展属性4".equals(batchLabels)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = null; + try { + date = sdf.parse(attributeValue); + } catch (ParseException e) { + throw new RuntimeException(e); + } + //receiptMaterialDetailDO.setExtAttr4(date); + } else if ("饮用日期".equals(batchLabels)) { +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); +// Date date = null; +// try { +// date = sdf.parse(attributeValue); +// } catch (ParseException e) { +// throw new RuntimeException(e); +// } +// receiptMaterialDetailDO.setInventoryDate(date); + } else if ("扩展属性2".equals(batchLabels)) { + receiptMaterialDetailDO.setExtAttr2(attributeValue); + } else if ("扩展属性1".equals(batchLabels)) { + receiptMaterialDetailDO.setExtAttr1(attributeValue); + } else if ("箱号/卡板号".equals(batchLabels)) { + receiptMaterialDetailDO.setBoxPalletNo(attributeValue); + } else if ("Sheet Ref NO's".equals(batchLabels)) { + receiptMaterialDetailDO.setSheetRefNo(attributeValue); + } else if ("Batch Ref NO's".equals(batchLabels)) { + receiptMaterialDetailDO.setBatchRefNo(attributeValue); + } else if ("存货日期".equals(batchLabels)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date date = null; + try { + date = sdf.parse(attributeValue); + } catch (ParseException e) { + throw new RuntimeException(e); + } + receiptMaterialDetailDO.setInventoryDate(date); + } + } + } + } + /** * PDA 上传的 receiptQuantity 为「本次收货量」;落库时与累计已收货 already_receipt_quantity 对齐, * 否则多次收货会把 receipt_quantity 覆盖成仅最后一次本次量(如先 1000 再 100 却存成 100)。 diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java index d767bae4e..32a91bbe5 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -570,7 +570,7 @@ public class StockInOrderDomainService { planQty = inMaterialDetailPO.getInboundQuantity(); } receiptMaterialDetailDO.setQuantity(planQty); - receiptMaterialDetailDO.setDrinkDate(inMaterialDetailPO.getDrinkDate()); +// receiptMaterialDetailDO.setDrinkDate(inMaterialDetailPO.getDrinkDate()); receiptMaterialDetailDOList.add(receiptMaterialDetailDO); }); stockReceiptOrderDO.setMaterialDetailList(receiptMaterialDetailDOList); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java index c35e5c1e2..28bf2a392 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java @@ -42,6 +42,7 @@ import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStand import com.mhd.wms.domain.materialGoodsRule.entity.MaterialGoodsRule; import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService; import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; @@ -84,6 +85,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -191,6 +193,20 @@ public class StockReceiptOrderDomainService { receiptMaterialDetail.setCreateBy(loginUser.getUserid()); receiptMaterialDetail.setCreateByName(userRealName); receiptMaterialDetail.setCreateTime(new Date()); + Date drinkDate = receiptMaterialDetail.getDrinkDate(); + if (drinkDate != null) { + receiptMaterialDetail.setExpiryDate(receiptMaterialDetail.getDrinkDate()); + MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail(); + materialMoreDetail.setBatchLabels("过期日期"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + String dateStr = sdf.format(drinkDate); + materialMoreDetail.setAttributeValue(dateStr); + materialMoreDetail.setMaterialDetailUniqueId(receiptMaterialDetail.getUniqueId()); + materialMoreDetail.setOrganizationId(receiptMaterialDetail.getOrganizationId()); + materialMoreDetail.setOrganizationName(receiptMaterialDetail.getOrganizationName()); + materialMoreDetail.setTopOrganizationId(receiptMaterialDetail.getTopOrganizationId()); + materialMoreDetail.setOrderNumber(receiptMaterialDetail.getReceiptOrderNumber()); + } receiptMaterialDetailList.add(receiptMaterialDetail); }); }); diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml index c3afd64e1..bb0ce7cb0 100644 --- a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml @@ -88,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -114,7 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.SPECIFICATION_MODEL, a.SKU_CODE, a.INVOICE_NO, a.LITER, a.DIMENSIONS, a.DECLARATION_UNIT, a.BATCH_REF_NO, a.SHEET_REF_NO, a.ORIGIN_COUNTRY, a.BOX_PALLET_NO, a.CURRENCY, a.UNIT, a.DECLARED_QUANTITY, a.BOX_COUNT, a.PIECE_COUNT, a.INBOUND_QUANTITY, a.TOTAL_NET_WEIGHT, a.TOTAL_GROSS_WEIGHT, a.TOTAL_VOLUME, a.TOTAL_AREA, a.TOTAL_PRICE, - a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_1, a.EXT_ATTR_2, a.EXT_ATTR_3, a.EXT_ATTR_4, + a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_1, a.EXT_ATTR_2, a.EXT_ATTR_3, a.EXT_ATTR_4,a.DRINK_DATE, a.OMS_IN_MATERIAL_DETAIL ,CASE WHEN (a.quantity - a.receipt_quantity) < 0 THEN 0 diff --git a/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml index b80f63648..29926d057 100644 --- a/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml @@ -89,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -96,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select a.MATERIAL_DETAIL_ID, a.ORGANIZATION_ID, a.ORGANIZATION_NAME, a.TOP_ORGANIZATION_ID, a.UNIQUE_ID, a.RECEIPT_ORDER_NUMBER, a.MATERIAL_BASE_INFO_ID, ifnull(a.MATERIAL_CODE, c.MATERIAL_CODE) MATERIAL_CODE, ifnull(a.MATERIAL_NAME, c.MATERIAL_NAME) MATERIAL_NAME, - a.BAR_CODE, + a.BAR_CODE, c.SPECIFICATION_MODEL, a.DIMENSIONS DIMENSIONS, a.QUANTITY, a.ALREADY_RECEIPT_QUANTITY, a.ALREADY_RECEIPT_GROSS_WEIGHT, a.ALREADY_RECEIPT_NET_WEIGHT, a.ALREADY_RECEIPT_VOLUME, a.ALREADY_RECEIPT_AREA, a.RECEIPT_QUANTITY, a.RECEIPT_STATUS, a.PACK_ID, a.PACK_CODE, a.PACK_NAME, a.PACK_DETAIL_ID, ifnull(a.UNIT_CODE, b.UNIT_CODE) UNIT_CODE, ifnull(a.UNIT_NAME, b.UNIT_NAME) UNIT_NAME, a.UNIT_NUMBER, a.MATERIAL_WAREHOUSE_CONTROL_ID, a.SERIAL_NUMBER_MANAGE, a.QUALITY_INSPECTION_MANAGE, a.QUALITY_INSPECTION_STAGE, a.QUALITY_INSPECTION_RULE, a.QUALITY_INSPECTION_RATIO, a.QUALITY_INSPECTION_TERM, a.QUALITY_INSPECTION_RESULTS, a.ALLOW_OVERCHARGE, a.OVERCHARGE_RATIO, a.BATCH_NUMBER, ifnull(a.LOT_NO, b.LOT_NO) LOT_NO, a.MATERIAL_STATUS_CODE, a.MATERIAL_STATUS_NAME, a.DISTRIBUTE_RULE_ID, a.DISTRIBUTE_RULE_CODE, a.DISTRIBUTE_RULE_NAME, a.CONTAINER_ID, a.CONTAINER_CODE, a.CONTAINER_TYPE, a.CONTAINER_TYPE_NAME, a.LEVEL, a.PARENT_UNIQUE_ID, a.IN_UNIQUE_ID, a.ALLOW_MODIFY, a.REMARK, a.CREATE_TIME, a.CREATE_BY, a.CREATE_BY_NAME, a.UPDATE_TIME, a.UPDATE_BY, a.UPDATE_BY_NAME, a.GEN_STOCK_SHELF, a.DEL_FLAG, @@ -121,7 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ifnull(a.EXT_ATTR_2, b.EXT_ATTR_2) EXT_ATTR_2, ifnull(a.EXT_ATTR_3, b.EXT_ATTR_3) EXT_ATTR_3, ifnull(a.EXT_ATTR_4, b.EXT_ATTR_4) EXT_ATTR_4, - a.OMS_IN_MATERIAL_DETAIL + a.OMS_IN_MATERIAL_DETAIL, + a.DRINK_DATE from RECEIPT_MATERIAL_DETAIL a LEFT JOIN IN_MATERIAL_DETAIL b ON a.IN_UNIQUE_ID = b.UNIQUE_ID AND b.DEL_FLAG = 1 LEFT JOIN MATERIAL_BASE_INFO c ON a.MATERIAL_BASE_INFO_ID = c.MATERIAL_BASE_INFO_ID AND c.DEL_FLAG = 1