From 31247d7faa846fcebcc4ff976fdb1fbb738b6f8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Tue, 23 Jun 2026 08:57:06 +0800 Subject: [PATCH 01/49] =?UTF-8?q?=E5=A7=94=E6=89=98=E6=96=B9=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=BB=84=E7=BB=87=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=B8=8E?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userAggregate/entity/UserShipperEntity.java | 3 +++ .../userAggregate/repository/po/UserShipperPo.java | 2 ++ .../userAggregate/repository/todo/UserShipperDO.java | 3 +++ .../user/interfaces/dto/addDTO/UserShipperDTO.java | 3 +++ .../src/main/resources/mapper/UserMapper.xml | 8 +++++++- .../src/main/resources/mapper/UserShipperMapper.xml | 12 ++++++++++-- 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java index fc8e6a274..56f93c213 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/entity/UserShipperEntity.java @@ -291,4 +291,7 @@ public class UserShipperEntity extends BaseVOEntity { @ApiModelProperty(name = "是否校验信用") private String isCheckCredit; + @ApiModelProperty(name = "组织代码") + private String orgCode; + } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java index 15958b775..8d6869c92 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/po/UserShipperPo.java @@ -354,4 +354,6 @@ public class UserShipperPo implements Serializable { private BigDecimal agreementCount; @ApiModelProperty(name = "是否校验信用") private String isCheckCredit; + @ApiModelProperty(name = "组织代码") + private String orgCode; } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/todo/UserShipperDO.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/todo/UserShipperDO.java index 73d309227..e96c43d8c 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/todo/UserShipperDO.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/repository/todo/UserShipperDO.java @@ -322,4 +322,7 @@ public class UserShipperDO extends UserDO { private String userPassword; @ApiModelProperty(name = "是否校验信用") private String isCheckCredit; + + @ApiModelProperty(name = "组织代码") + private String orgCode; } \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java index e3717759d..50bf04ab3 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/addDTO/UserShipperDTO.java @@ -268,4 +268,7 @@ public class UserShipperDTO extends UserDTO { private String userPassword; @ApiModelProperty(name = "是否校验信用") private String isCheckCredit; + + @ApiModelProperty(name = "组织代码") + private String orgCode; } \ No newline at end of file diff --git a/mhd-user-center/src/main/resources/mapper/UserMapper.xml b/mhd-user-center/src/main/resources/mapper/UserMapper.xml index 8e7d02061..a0799d041 100644 --- a/mhd-user-center/src/main/resources/mapper/UserMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserMapper.xml @@ -773,7 +773,13 @@ /*组织ID - 数据隔离:南光组织(organizationId=2827)查询全部,其他组织查询自己组织的数据*/ - AND u.organization_id = #{organizationId} + AND ( + u.organization_id = #{organizationId} + OR b.org_code LIKE concat('%"code":"', #{organizationId}, '"%') + OR b.org_code LIKE concat('%code:', #{organizationId}, '%') + OR b.org_code LIKE concat('%code: ', #{organizationId}, '%') + OR b.org_code LIKE concat('%"code":', #{organizationId}, '%') + ) AND u.organization_name IS NOT NULL GROUP BY u.user_id, u.user_name, u.user_area_address, u.user_area_county_id, u.user_area_name, u.user_phone, u.has_default_address, b.shipper_id, b.shipper_enterprise_name, u.DOCUMENT_PREPARER_NC_CODE, b.CUSTOMER_NC_CODE, u.organization_id, u.top_organization_id, b.settlement_currency diff --git a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml index 0e9754f99..37bbc4c9b 100644 --- a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml @@ -171,7 +171,8 @@ b.LIMIT_TIME, b.CREDIT_AMOUNT, b.IS_CHECK_CREDIT, - b.AGREEMENT_COUNT + b.AGREEMENT_COUNT, + b.org_code FROM "USER" a LEFT JOIN user_shipper b ON a.user_id = b.user_id left join (select user_id, LISTAGG(DISTINCT r.role_name, '&') WITHIN GROUP(ORDER BY r.role_name) AS roleName @@ -375,7 +376,13 @@ /*用户组织ID*/ - and a.organization_id = #{organizationId} + AND ( + a.organization_id = #{organizationId} + OR b.org_code LIKE concat('%"code":"', #{organizationId}, '"%') + OR b.org_code LIKE concat('%code:', #{organizationId}, '%') + OR b.org_code LIKE concat('%code: ', #{organizationId}, '%') + OR b.org_code LIKE concat('%"code":', #{organizationId}, '%') + ) /*组织名称*/ @@ -511,6 +518,7 @@ OR a.create_by = #{createBy}) + + select + + + from execution_in_material_detail a + + + + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml b/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml new file mode 100644 index 000000000..ece1200c9 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/executionOutMaterialDetail/ExecutionOutMaterialDetailMapper.xml @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.contract_fee , + a.monthly_warehouse_fee , + a.half_month_wh_fee , + a.discount_rate , + a.single_volume , + a.single_gross_weight , + a.lot_no , + a.stock_quantity , + a.stock_unit ,a.in_order_number , + a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.out_order_number, a.material_base_info_id, a.line_number, a.material_code, a.material_name, a.bar_code, a.weight_limit, a.volume_limit, + a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND(GREATEST(0, IFNULL(a.quantity, 0) - IFNULL(a.check_quantity, 0), IFNULL(a.picking_quantity, 0) - IFNULL(a.check_quantity, 0)), 2) AS wait_check_quantity, + a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage, + a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.level, a.parent_unique_id, a.allow_modify, + a.material_inventory_id, a.batch_number, a.container_id, a.container_code, a.container_type, a.container_type_name, a.material_status_code, a.material_status_name, + a.remark, a.create_time, a.create_by,gen_picking_order, + a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type, + a.COMMODITY_NAME, + a.COMMODITY_NO, + a.MATERIAL_NO , + a.SPECIFICATION_MODEL, + a.SKUCODE , + a.INVOICE_NO, + a.LITER, + a.SIZE, + a.DECLARE_UNIT, + a.BATCH_REF_NO, + a.SHEET_REF_NO, + a.COUNTRY_OF_ORIGIN, + a.BOX_PALLET_NO, + a.CURRENCY, + a.DECLARE_QUANTITY, + a.CASE_COUNT, + a.PIECE_COUNT, + a.OUTBOUND_QUANTITY, + a.TOTAL_NET_WEIGHT, + a.TOTAL_GROSS_WEIGHT, + a.TOTAL_VOLUME, + a.TOTAL_AREA, + a.TOTAL_AMOUNT, + a.UNIT, + a.EXT_ATTR_1, + a.EXT_ATTR_2, + a.PRODUCTION_DATE, + a.EXPIRY_DATE, + a.INVENTORY_DATE, + a.EXT_ATTR_3, + a.EXT_ATTR_4, + a.INVENTORY_QUANTITY, + a.line_num_gw, + a.spec_gw, + a.unit_gw, + a.qty_gw, + a.erp_curr_gw, + a.erp_price_gw, + a.amount_gw, + a.in_order_number_gw, + a.in_line_num_gw + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.out_order_number = #{outOrderNumber} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_code = #{materialCode} + + + and a.material_name like concat('%', #{materialName}, '%') + + + and a.bar_code = #{barCode} + + + and a.quantity = #{quantity} + + + and a.allocation_quantity = #{allocationQuantity} + + + and a.picking_quantity = #{pickingQuantity} + + + and a.check_quantity = #{checkQuantity} + + + and a.pack_id = #{packId} + + + and a.pack_code = #{packCode} + + + and a.pack_name like concat('%', #{packName}, '%') + + + and a.pack_detail_id = #{packDetailId} + + + and a.unit_code = #{unitCode} + + + and a.unit_name like concat('%', #{unitName}, '%') + + + and a.material_warehouse_control_id = #{materialWarehouseControlId} + + + and a.serial_number_manage = #{serialNumberManage} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.storage_section_id = #{storageSectionId} + + + and a.storage_code = #{storageCode} + + + and a.storage_name like concat('%', #{storageName}, '%') + + + and a.storage_location_id = #{storageLocationId} + + + and a.storage_location_code = #{storageLocationCode} + + + and a.storage_location_name like concat('%', #{storageLocationName}, '%') + + + and a.level = #{level} + + + and a.gen_picking_order = #{genPickingOrder} + + + and a.parent_unique_id = #{parentUniqueId} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.out_order_number in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.over_stock_status = #{overStockStatus} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_base_info_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and b.out_order_number = #{outOrderNumber} + + + and b.warehouse_id = #{warehouseId} + + + and b.shipper_id = #{shipperId} + + + and b.shipper_id in + + #{item} + + + + and date_format(b.expect_time,'%y%m%d') >= date_format(#{outOrderExpectStartTime},'%y%m%d') + + + and date_format(b.expect_time,'%y%m%d') <= date_format(#{outOrderExpectEndTime},'%y%m%d') + + + and b.order_type_code = #{outOrderTypeCode} + + + + and b.status = #{outStatus} + + + and b.del_flag = #{delFlag} + and b.del_flag = 1 + + + + + + + + + UPDATE execution_out_material_detail + + allocation_quantity = CASE material_detail_id + + WHEN #{item.materialDetailId} THEN allocation_quantity + #{item.allocationQuantity} + + END, + update_by = #{item.updateBy}, + update_by_name = #{item.updateByName}, + update_time = now() + + WHERE material_detail_id IN + + #{item.materialDetailId} + + + + + UPDATE execution_out_material_detail + + picking_quantity = CASE material_detail_id + + WHEN #{item.materialDetailId} THEN picking_quantity + #{item.pickingQuantity} + + END, + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = now() + + WHERE material_detail_id IN + + #{item.materialDetailId} + + + + + UPDATE execution_out_material_detail + + picking_quantity = CASE unique_id + + WHEN #{item.uniqueId} THEN picking_quantity + #{item.pickingQuantity} + + END, + + + WHEN #{item.uniqueId} THEN picking_quantity + #{item.pickingQuantity} + + + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = now() + + WHERE unique_id IN + + #{item.uniqueId} + + + + + + + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml b/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml new file mode 100644 index 000000000..a0545ebe4 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml @@ -0,0 +1,632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.in_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.notice_number, a.in_order_number, a.status, + a.audit_status, a.audit_remark, a.audit_by, a.audit_by_name, a.audit_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code, + a.shipper_name, a.order_type_code, a.order_type_name, a.supplier_id, a.supplier_code, a.supplier_name, a.expect_time, a.supply_chain_number, + a.priority_level_code, a.priority_level_name, a.direct_warehouse, a.annex_url, a.material_quantity, a.quantity,a.business_order_no,a.amount, + a.business_price_way,a.business_charge_type,a.total_warehouse_rent,a.manpower_fee,a.fire_insure_fee,a.discount,a.is_free_manpower_fee, + -- 计划入库数量:入库明细表 in_material_detail 的 quantity 汇总 + + + + + + + + + + + + + + + + + + + a.weight_limit, a.volume_limit, a.cancel_order, a.cancel_remark, a.cancel_by,a.PICTURE_URL, + a.cancel_by_name, a.cancel_time, a.close_order, a.close_remark, a.close_by, a.close_by_name, a.close_time, a.remark, a.create_time, a.create_by, + a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type, + a."TO", a.CONTACT_PERSON, a.VEHICLE_INFO, a.CONSIGNMENT_NO, a.TEL, a.DRIVER_SIGNATURE, a.FAX, a.DECLARATION_AREA, a.MANUFACTURER, + a.CUSTOMS_BROKER_INFO, a.DELIVERY_ADDRESS, a.ENTRY_EXIT_CUSTOMS, a.ORIGIN_DESTINATION_COUNTRY, a.CARRIER, a.CONTAINER_NO, + a.TRANSPORT_METHOD, a.SUPERVISION_METHOD, a.CUSTOMS_INSPECTION, a.NEED_CUSTOMS_DECLARATION, a.NEED_TRANSPORT, + a.WAREHOUSE_DATE, a.COMPLETION_TIME, a.ORDER_DATE,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.RESERVATION_ORDER_SOURCE,a.tms_order_number + ,a.DIRECTOR_NAME ,a.DIRECTOR_PHONE,a.DIRECTOR_ID,a.STORAGE_TIME,a.in_quantity, + a.PUSH_TIME,a.PUSH_STATUS,a.PUSH_BY,a.PUSH_BY_NAME + + + + ,b.notice_number, b.warehouse_id, b.warehouse_code, b.warehouse_name, b.shipper_id, b.shipper_code, b.shipper_name, + b.order_type_code, b.order_type_name, b.supplier_id, b.supplier_code, b.supplier_name, b.expect_time, b.supply_chain_number, b.priority_level_code, + b.priority_level_name, b.direct_warehouse, b.annex_url, b.material_quantity as in_order_material_quantity, b.quantity as in_order_quantity + + + + + + and b.notice_number = #{noticeNumber} + + + and b.in_order_number like concat('%', #{inOrderNumber}, '%') + + + and b.warehouse_id = #{warehouseId} + + + and b.warehouse_code = #{warehouseCode} + + + and b.warehouse_name like concat('%', #{warehouseName}, '%') + + + and b.shipper_id = #{shipperId} + + + and b.shipper_name like concat('%', #{shipperName}, '%') + + + and b.order_type_code = #{orderTypeCode} + + + and b.order_type_name like concat('%', #{orderTypeName}, '%') + + + and b.supplier_id = #{supplierId} + + + and b.supplier_name like concat('%', #{supplierName}, '%') + + + and b.expect_time = #{expectTime} + + + and b.supply_chain_number = #{supplyChainNumber} + + + and b.priority_level_code = #{priorityLevelCode} + + + and b.priority_level_name like concat('%', #{priorityLevelName}, '%') + + + and b.direct_warehouse = #{directWarehouse} + + + and b.annex_url = #{annexUrl} + + + and b.quantity = #{quantity} + + + + + + and a.organization_id = #{organizationId} + + + and a.tms_order_number like concat('%', #{tmsOrderNumber}, '%') + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.notice_number = #{noticeNumber} + + + and a.in_order_number = #{inOrderNumber} + + + and a.status = #{status} + + + and a.status < #{ltStatus} + + + and a.status > #{gtStatus} + + + and a.audit_status = #{auditStatus} + + + and a.audit_status < #{ltAuditStatus} + + + and a.audit_status > #{gtAuditStatus} + + + and a.audit_remark = #{auditRemark} + + + and a.audit_by = #{auditBy} + + + and a.audit_by_name like concat('%', #{auditByName}, '%') + + + and a.audit_time = #{auditTime} + + + and a.issue_status = #{issueStatus} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_type_code = #{orderTypeCode} + + + and (a.BUSINESS_TYPE like concat('%', #{orderTypeName}, '%') or a.ORDER_TYPE_CODE like concat('%', #{orderTypeName}, '%')) + + + and a.supplier_id = #{supplierId} + + + and a.supplier_name like concat('%', #{supplierName}, '%') + + + and a.expect_time = #{expectTime} + + + and a.supply_chain_number = #{supplyChainNumber} + + + and a.priority_level_code = #{priorityLevelCode} + + + and a.priority_level_name like concat('%', #{priorityLevelName}, '%') + + + and a.direct_warehouse = #{directWarehouse} + + + and a.annex_url = #{annexUrl} + + + and a.quantity = #{quantity} + + + and a.cancel_order = #{cancelOrder} + + + and a.cancel_remark = #{cancelRemark} + + + and a.cancel_by = #{cancelBy} + + + and a.cancel_by_name like concat('%', #{cancelByName}, '%') + + + and a.cancel_time = #{cancelTime} + + + and a.close_order = #{closeOrder} + + + and a.close_remark = #{closeRemark} + + + and a.close_by = #{closeBy} + + + and a.close_by_name like concat('%', #{closeByName}, '%') + + + and a.close_time = #{closeTime} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.in_order_id in + + #{item} + + + + + and a."TO" like concat('%', #{to}, '%') + + + and a.CONTACT_PERSON like concat('%', #{contactPerson}, '%') + + + and a.VEHICLE_INFO like concat('%', #{vehicleInfo}, '%') + + + and a.CONSIGNMENT_NO like concat('%', #{consignmentNo}, '%') + + + and a.TEL like concat('%', #{tel}, '%') + + + and a.DRIVER_SIGNATURE like concat('%', #{driverSignature}, '%') + + + and a.FAX like concat('%', #{fax}, '%') + + + and a.DECLARATION_AREA like concat('%', #{declarationArea}, '%') + + + and a.MANUFACTURER like concat('%', #{manufacturer}, '%') + + + and a.CUSTOMS_BROKER_INFO like concat('%', #{customsBrokerInfo}, '%') + + + and a.DELIVERY_ADDRESS like concat('%', #{deliveryAddress}, '%') + + + and a.ENTRY_EXIT_CUSTOMS like concat('%', #{entryExitCustoms}, '%') + + + and a.ORIGIN_DESTINATION_COUNTRY like concat('%', #{originDestinationCountry}, '%') + + + and a.CARRIER like concat('%', #{carrier}, '%') + + + and a.CONTAINER_NO = #{containerNo} + + + and a.TRANSPORT_METHOD = #{transportMethod} + + + and a.SUPERVISION_METHOD = #{supervisionMethod} + + + and a.CUSTOMS_INSPECTION = #{customsInspection} + + + and a.NEED_CUSTOMS_DECLARATION = #{needCustomsDeclaration} + + + and a.NEED_TRANSPORT = #{needTransport} + + + and a.WAREHOUSE_DATE = #{warehouseDate} + + + and a.COMPLETION_TIME = #{completionTime} + + + and a.ORDER_DATE = #{orderDate} + + + and a.create_time >= #{createTimeStart} + + + and a.create_time DATEADD(DAY, 1, #{createTimeEnd}) + + + and a.PUSH_TIME =]]> #{pushTimeFrom} + + + and a.PUSH_TIME #{pushTimeTo} + + + and a.create_time =]]> #{createTimeFrom} + + + and a.create_time #{createTimeTo} + + + and a.PUSH_STATUS = #{pushStatus} + + + and a.BUSINESS_TYPE = #{businessType} + + + and a.RESERVATION_ORDER_SOURCE = #{reservationOrderSource} + + + and a.BUSINESS_NUMBER = #{businessNumber} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.storage_time >= #{storageTimeStart} + + + and a.storage_time DATEADD(DAY, 1, #{storageTimeEnd}) + + + and a.expect_time >= #{expectTimeStart} + + + and a.expect_time DATEADD(DAY, 1, #{expectTimeEnd}) + + + and a.issue_time is not null + + + and a.issue_time is null + + + + and exists ( + select 1 from in_material_detail imd + left join material_base_info mb on imd.material_base_info_id = mb.material_base_info_id and mb.del_flag = 1 + where imd.in_order_number = a.in_order_number + and imd.del_flag = 1 + and (imd.level is null or imd.level = 1) + + and ( + imd.material_name like concat('%', #{materialName}, '%') + or mb.material_name like concat('%', #{materialName}, '%') + ) + + + and ( + imd.material_code like concat('%', #{materialCode}, '%') + or mb.material_code like concat('%', #{materialCode}, '%') + ) + + ) + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update "NGWL_TEST_WLHY".tms_order set ORDER_STATUS = 9 where ID = #{orderId} + + + + update "NGWL_TEST_WLHY".TMS_TRANSPORT_NOTE set WAYBILL_STATUS =12 where TRANSPORTATION_NUMBER = #{transportationNumber} + + + + update "NGWL_TEST_WMS".stock_out_order set return_quantity = #{quantity} where out_order_number = #{orderNumber} + + + + + + + + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml b/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml new file mode 100644 index 000000000..d1c42d16c --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.out_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.receipt_notice_id, a.notice_number, a.out_order_number, a.status, + a.audit_status, a.audit_remark, a.audit_by, a.audit_by_name, a.audit_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code, + a.shipper_name, a.order_type_code, a.order_type_name, a.customer_id, a.customer_code, a.customer_name, a.expect_time, a.supply_chain_number, a.priority_level_code, + a.priority_level_name, a.direct_warehouse, a.review, a.annex_url, a.material_quantity, a.quantity, a.weight_limit, a.volume_limit, a.check_quantity, a.cancel_order, a.cancel_remark, a.cancel_by, a.cancel_by_name, + a.cancel_time, a.close_order, a.close_remark, a.close_by, a.close_by_name, a.close_time, a.check_status,a.BUSINESS_ORDER_NO, + a.check_task_distribution, a.check_task_distribution_time, a.check_operators_by, a.check_operators_name, a.mobilize_code, + a.remark, a.create_time, a.create_by, a.create_by_name,a.business_number,a.train_no,a.amount, + a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type,a."TO", + a.CONTACT_PERSON,a.VEHICLE_MODEL_PLATE,a.ENTRUST_NO,a.TEL,a.DRIVER_SIGN,a.FAX,a.DECLARE_CUSTOMS,a.MANUFACTURER, + a.CUSTOMS_DECLARER_INFO,a.DELIVERY_ADDR,a.ENTRY_EXIT_CUSTOMS,a.DEPARTURE_ARRIVAL_COUNTRY,a.CARRIER,a.CONTAINER_NO,a.CONTAINER_NO_NAME,a.OUTBOUND_DATE, + 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.RETURN_QUANTITY,a.DELIVERY_NAME,a.CUSTOMER_NUMBER,a.INVOICE_NUMBER,a.RETURN_ORDER_NUMBER,a.TOTAL_AMOUNT, + a.ROUTE,a.PUSH_TIME,a.PUSH_STATUS,a.PUSH_BY,a.PUSH_BY_NAME + + + + + ,b.notice_number, b.out_order_number, b.warehouse_id, b.warehouse_code, b.warehouse_name, b.shipper_id, b.shipper_code, + b.shipper_name, b.order_type_code, b.order_type_name, b.customer_id, b.customer_name, b.expect_time, b.supply_chain_number, b.priority_level_code, + b.priority_level_name, b.direct_warehouse, b.review, b.annex_url, b.quantity + + + + ,b.notice_number, b.out_order_number, b.warehouse_id, b.warehouse_code, b.warehouse_name, b.shipper_id, b.shipper_code, + b.shipper_name, b.order_type_code, b.order_type_name, b.customer_id, b.customer_name, b.expect_time, b.supply_chain_number, b.priority_level_code, + b.priority_level_name, b.direct_warehouse, b.review, b.annex_url + + + + + and a.out_order_id = #{outOrderId} + + + and a.tms_order_number like concat('%', #{tmsOrderNumber}, '%') + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.notice_number = #{noticeNumber} + + + and a.out_order_number like concat('%', #{outOrderNumber}, '%') + + + + + + + and a.status IN (3, 4, 5, 6, 7, 8) + + + and a.status = #{status} + + + + + + and a.status > #{gtStatus} + + + and a.status < #{ltStatus} + + + and a.audit_status = #{auditStatus} + + + and a.audit_remark = #{auditRemark} + + + and a.check_task_distribution = #{checkTaskDistribution} + + + and a.issue_status = #{issueStatus} + + + and a.audit_by = #{auditBy} + + + and a.audit_by_name like concat('%', #{auditByName}, '%') + + + and a.audit_time = #{auditTime} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_type_code = #{orderTypeCode} + + + and a.customer_id = #{customerId} + + + and a.customer_name like concat('%', #{customerName}, '%') + + + and a.expect_time = #{expectTime} + + + and a.supply_chain_number = #{supplyChainNumber} + + + and a.priority_level_code = #{priorityLevelCode} + + + and a.priority_level_name like concat('%', #{priorityLevelName}, '%') + + + and a.direct_warehouse = #{directWarehouse} + + + and a.review = #{review} + + + and a.annex_url = #{annexUrl} + + + and a.quantity = #{quantity} + + + and a.cancel_order = #{cancelOrder} + + + and a.cancel_remark = #{cancelRemark} + + + and a.cancel_by = #{cancelBy} + + + and a.cancel_by_name like concat('%', #{cancelByName}, '%') + + + and a.cancel_time = #{cancelTime} + + + and a.close_order = #{closeOrder} + + + and a.close_remark = #{closeRemark} + + + and a.close_by = #{closeBy} + + + and a.close_by_name like concat('%', #{closeByName}, '%') + + + and a.close_time = #{closeTime} + + + and a.check_status = #{checkStatus} + + + and a.check_status > #{gtCheckStatus} + + + and a.check_status < #{ltCheckStatus} + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.check_operators_by = #{checkOperatorsBy} + + + and a.out_order_id in + + #{item} + + + + and date_format(a.audit_time,'%Y-%m-%d') >= #{auditTimeStart} + + + and date_format(a.audit_time,'%Y-%m-%d') <= #{auditTimeEnd} + + + and a.NEED_DECLARE_FLAG = #{needDeclareFlag} + + + and a.PUSH_TIME =]]> #{pushTimeFrom} + + + and a.PUSH_TIME #{pushTimeTo} + + + and a.create_time =]]> #{createTimeFrom} + + + and a.create_time #{createTimeTo} + + + and a.PUSH_STATUS = #{pushStatus} + + + and a.BUSINESS_NUMBER = #{businessNumber} + + + and a.BUSINESS_TYPE = #{businessType} + + + and a.ISSUE_STATUS = #{issueStatus} + + + and a.RESERVATION_ORDER_SOURCE = #{reservationOrderSource} + + + and a.NEED_TRANSPORT_FLAG = #{needTransportFlag} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.create_time >= #{createTimeStart} + + + and a.create_time DATEADD(DAY, 1, #{createTimeEnd}) + + + and a.outbound_date >= #{outboundDateStart} + + + and a.outbound_date DATEADD(DAY, 1, #{outboundDateEnd}) + + + and a.organization_id = #{organizationId} + + + and (a.BUSINESS_TYPE like concat('%', #{orderTypeName}, '%') or a.ORDER_TYPE_CODE like concat('%', #{orderTypeName}, '%')) + + + and a.issue_time is not null + + + and a.issue_time is null + + + + + + + + + + + + + + + + + + + + + + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From db198dd2a2c8c6a5fa8d88610a3c568ffd998558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Thu, 25 Jun 2026 10:28:29 +0800 Subject: [PATCH 12/49] =?UTF-8?q?=E8=B4=A7=E4=B8=BB=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=BB=84=E7=BB=87;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml index 37bbc4c9b..20f663b17 100644 --- a/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserShipperMapper.xml @@ -67,6 +67,7 @@ a.esign_auth_status, a.esign_enterprise_status, a.CUSTOMER_NC_CODE, + a.org_code, a.esign_seal_auth_id FROM user_shipper a LEFT JOIN "USER" b ON a.user_id = b.user_id From 3e90a8c5c481c96fb680adf8510ceaa7707e606f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Thu, 25 Jun 2026 10:36:34 +0800 Subject: [PATCH 13/49] =?UTF-8?q?=E8=B4=A7=E4=B8=BB=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=BB=84=E7=BB=87;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mhd/common/core/domain/po/UserShipperPo.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java b/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java index db3ff7e9f..12bd8cfbb 100644 --- a/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java +++ b/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java @@ -271,4 +271,8 @@ public class UserShipperPo { @ApiModelProperty("货主code") private String roleCodeShipper; + @ApiModelProperty(name = "是否校验信用") + private String isCheckCredit; + @ApiModelProperty(name = "组织代码") + private String orgCode; } \ No newline at end of file From f704038362fbe005f45e76f6c0dc367d7b28eeb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Thu, 25 Jun 2026 11:04:58 +0800 Subject: [PATCH 14/49] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=BB=84=E7=BB=87ids?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BB=93=E5=BA=93;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/domain/warehouse/repository/todo/WarehouseDO.java | 2 ++ .../mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java | 2 ++ .../resources/mapper/basic/warehouse/WarehouseMapper.xml | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java index 62d55c832..3fad8be59 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/repository/todo/WarehouseDO.java @@ -127,4 +127,6 @@ public class WarehouseDO extends BaseVOEntity{ private Integer isEnable; @ApiModelProperty("仓库id 集合") private List warehouseIds; + @ApiModelProperty("组织id 集合") + private List orgIds; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java index 9e982c719..768b2509e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/warehouse/WarehouseDTO.java @@ -132,4 +132,6 @@ public class WarehouseDTO extends BaseVOEntity{ @ApiModelProperty("是否启用: 1-否 2-是") @Excel(name = "是否启用: 1-否 2-是") private Integer isEnable; + @ApiModelProperty("组织id 集合") + private List orgIds; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml index 57a1d2ef0..9d2bf66c3 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/warehouse/WarehouseMapper.xml @@ -130,6 +130,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} + + and organization_id in + + #{item} + + and del_flag = #{delFlag} and del_flag = 1 From f933aa923443b70f8c56c86859bf2d2c64234551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Thu, 25 Jun 2026 14:35:55 +0800 Subject: [PATCH 15/49] =?UTF-8?q?=E8=B4=A7=E4=B8=BB=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=8F=98=E7=AE=A1=E7=90=86=E5=91=98=E5=A4=84?= =?UTF-8?q?=E7=90=86;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/application/service/UserShipperApplicationService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index 5700a4cc2..76a8ab65d 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -583,6 +583,7 @@ public class UserShipperApplicationService { refreshShipperDictData(userShipperDO); UserDO userDO = new UserDO(); BeanUtils.copyProperties(userShipperDO, userDO, IgnoreNullUtil.getNullPropertyNames(userShipperDO)); + userDO.setRoleCode("ownerCargo"); //修改用户表信息 UserPo userPo = userApplicationService.updateUser(userDO); From 92acdb4f20e578d779e89e79b21471f47e9cf014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Thu, 25 Jun 2026 14:37:03 +0800 Subject: [PATCH 16/49] =?UTF-8?q?=E8=B4=A7=E4=B8=BB=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=8F=98=E7=AE=A1=E7=90=86=E5=91=98=E5=A4=84?= =?UTF-8?q?=E7=90=86;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/service/UserShipperApplicationService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java index 76a8ab65d..e56af2e41 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperApplicationService.java @@ -521,6 +521,7 @@ public class UserShipperApplicationService { userShipperDO.setUpdateBy(loginUserPo.getUserId()); userShipperDO.setUpdateByName(loginUserPo.getUserName()); userShipperDO.setUpdateTime(new Date()); + userShipperDO.setRoleCode("ownerCargo"); updateUserInformation(userShipperDO); //保存托运人信息 userShipperDomainService.saveUserShipper(userShipperDO); @@ -583,7 +584,7 @@ public class UserShipperApplicationService { refreshShipperDictData(userShipperDO); UserDO userDO = new UserDO(); BeanUtils.copyProperties(userShipperDO, userDO, IgnoreNullUtil.getNullPropertyNames(userShipperDO)); - userDO.setRoleCode("ownerCargo"); + //修改用户表信息 UserPo userPo = userApplicationService.updateUser(userDO); From ed4d6111a5fdc4389878d9caf5c9c5199a414470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Fri, 26 Jun 2026 10:52:57 +0800 Subject: [PATCH 17/49] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=8F=8A=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=89=A7=E8=A1=8C;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/WmsServiceFeign.java | 12 + .../system/api/domain/StockOutOrderDTO.java | 486 ++++++++++++++++++ .../mapper/ExecutionStockInOrderMapper.java | 4 + ...ecutionStockInOrderApplicationService.java | 5 + .../ExecutionStockInOrderDomainService.java | 33 ++ .../mapper/ExecutionStockOutOrderMapper.java | 6 + ...cutionStockOutOrderApplicationService.java | 4 + .../ExecutionStockOutOrderDomainService.java | 40 ++ .../mapper/ReservationStockInOrderMapper.java | 9 + .../ReservationStockInOrderDomainService.java | 107 +++- .../ExecutionStockInOrderApi.java | 12 +- .../ExecutionStockOutOrderApi.java | 10 + .../ExecutionStockInOrderMapper.xml | 8 + .../ExecutionStockOutOrderMapper.xml | 8 + .../ReservationStockInOrderMapper.xml | 17 + .../StockOutOrderApplicationService.java | 88 ++++ .../repository/todo/StockOutOrderDO.java | 3 + .../service/StockOutOrderDomainService.java | 63 +++ .../stockOutOrder/StockOutOrderApi.java | 27 + 19 files changed, 928 insertions(+), 14 deletions(-) create mode 100644 mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderDTO.java diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 8625bcd8e..a7a1f26fc 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -97,6 +97,18 @@ public interface WmsServiceFeign { @PostMapping(value = "/stockInOrderApi/omsInOrderAdd") public void omsInOrderAdd(@RequestBody StockInOrder stockInOrder); + @ApiOperation("oms取消下发单保存") + @PostMapping(value = "/stockOutOrderApi/cancelExecutionOrder") + public void cancelExecutionOrder(@RequestBody StockOutOrder stockOutOrder); + + @ApiOperation("oms取消下发单自动分配") + @PostMapping(value = "/stockOutOrderApi/omsAutoAssign") + public void omsAutoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO); + + @ApiOperation("oms出库执行") + @PostMapping(value = "/stockOutOrderApi/execution") + public AjaxResult execution(@RequestBody com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO); + /** * oms下发单明细保存 */ diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderDTO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderDTO.java new file mode 100644 index 000000000..376ae27a6 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrderDTO.java @@ -0,0 +1,486 @@ +package com.mhd.system.api.domain; + +import com.fasterxml.jackson.annotation.JsonAlias; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 出库单对象 stock_out_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单id") + private Long outOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + private Integer status; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("出库单审核备注") + @Excel(name = "出库单审核备注") + private String auditRemark; + + @ApiModelProperty("出库单审核人") + @Excel(name = "出库单审核人") + private Long auditBy; + + @ApiModelProperty("出库单审核人姓名") + @Excel(name = "出库单审核人姓名") + private String auditByName; + + @ApiModelProperty("出库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date closeTime; + + @ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核") + @Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核") + private Integer checkStatus; + + @ApiModelProperty("复核任务是否下发: 1-是 2-否") + @Excel(name = "复核任务是否下发: 1-是 2-否") + private Integer checkTaskDistribution; + + @ApiModelProperty("复核任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date checkTaskDistributionTime; + + @ApiModelProperty("复核作业人用户ID") + @Excel(name = "复核作业人用户ID") + @JsonAlias({"checkOperatorId", "operatorId"}) + private Long checkOperatorsBy; + + @ApiModelProperty("复核作业人姓名") + @Excel(name = "复核作业人姓名") + private String checkOperatorsName; + + @ApiModelProperty("调度单号") + @Excel(name = "调度单号") + private String mobilizeCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("出库单id集合") + private List outOrderIds; + +// @ApiModelProperty("物料明细") +// private List materialDetailList; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料审核数量") + @Excel(name = "物料审核数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("大于复核状态: 1-未复核 2-复核中 3-已复核") + private Integer gtCheckStatus; + + @ApiModelProperty("小于复核状态: 1-未复核 2-复核中 3-已复核") + private Integer ltCheckStatus; + + @ApiModelProperty("PDA复核查询tab: 1-列表(待复核) 2-历史记录(已复核)") + private Integer tabType; + + @ApiModelProperty("to") + @Excel(name = "to") + private String to; + + @ApiModelProperty("联系人") + @Excel(name = "联系人") + private String contactPerson; + + @ApiModelProperty("车型及车牌") + @Excel(name = "车型及车牌") + private String vehicleModelPlate; + + @ApiModelProperty("委托编号") + @Excel(name = "委托编号") + private String entrustNo; + + @ApiModelProperty("Tel") + @Excel(name = "Tel") + private String tel; + + @ApiModelProperty("司机签名") + @Excel(name = "司机签名") + private String driverSign; + + @ApiModelProperty("Fax") + @Excel(name = "Fax") + private String fax; + + @ApiModelProperty("申报地关区") + @Excel(name = "申报地关区") + private String declareCustoms; + + @ApiModelProperty("生产商") + @Excel(name = "生产商") + private String manufacturer; + + @ApiModelProperty("报关员姓名及联系方式") + @Excel(name = "报关员姓名及联系方式") + private String customsDeclarerInfo; + + @ApiModelProperty("送货地址") + @Excel(name = "送货地址") + private String deliveryAddr; + + @ApiModelProperty("进出境关别") + @Excel(name = "进出境关别") + private String entryExitCustoms; + + @ApiModelProperty("起运/运抵国(地区)") + @Excel(name = "起运/运抵国(地区)") + private String departureArrivalCountry; + + @ApiModelProperty("承运商") + @Excel(name = "承运商") + private String carrier; + + @ApiModelProperty("柜号") + @Excel(name = "柜号") + private String containerNo; + + @ApiModelProperty("柜") + @Excel(name = "柜") + private String containerNoName; + + @ApiModelProperty("出仓日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "出仓日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date outboundDate; + @ApiModelProperty("完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date completeTime; + @ApiModelProperty("orderDate") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "orderDate", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date orderDate; + + @ApiModelProperty("运输方式") + @Excel(name = "运输方式") + private String transportModeCode; + @ApiModelProperty("运输方式") + @Excel(name = "运输方式") + private String transportModeName; + @ApiModelProperty("监管方式") + @Excel(name = "监管方式") + private String supervisionModeCode; + @ApiModelProperty("监管方式") + @Excel(name = "监管方式") + private String supervisionModeName; + @ApiModelProperty("海关是否查验货物") + @Excel(name = "海关是否查验货物") + private String customsInspectionFlag; + @ApiModelProperty("是否需要报关") + @Excel(name = "是否需要报关") + private String needDeclareFlag; + @ApiModelProperty("是否需要运输") + @Excel(name = "是否需要运输") + private String needTransportFlag; + + @ApiModelProperty(name = "创建时间查询条件开始日期") + private String createTimeStart; + + @ApiModelProperty(name = "创建时间查询条件结束日期") + private String createTimeEnd; + + @ApiModelProperty(name = "审核时间查询条件开始日期") + private String auditTimeStart; + + @ApiModelProperty(name = "审核时间查询条件结束日期") + private String auditTimeEnd; + + @ApiModelProperty("出库明细-物料名称(商品名称),模糊匹配,与前端参数 materialName 一致") + private String materialName; + + @ApiModelProperty("出库明细-物料编码,模糊匹配,与前端参数 materialCode 一致") + private String materialCode; + + @ApiModelProperty("出库交接图片,PDA出库交接时上传的照片,多张图片以逗号隔开") + private String pictureApp; + + @ApiModelProperty("业务单号") + @Excel(name = "业务单号") + private String businessOrderNo; + + @ApiModelProperty("业务类型") + @Excel(name = "业务类型") + private String businessType; + + @ApiModelProperty("制单人") + @Excel(name = "制单人") + private String documentCreator; + + @ApiModelProperty("制单人名称") + @Excel(name = "制单人名称") + private String documentCreatorName; + + @ApiModelProperty("制单日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Excel(name = "制单日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date documentDate; + @ApiModelProperty("承运商名称") + @Excel(name = "承运商名称") + private String carrierName; + @ApiModelProperty("计费信息") + private String billingJson; + @ApiModelProperty("结算币种") + private String settlementCurrency; + @ApiModelProperty("业务员ID") + private String salesmanId; + @ApiModelProperty("业务员名称") + private String salesmanName; +// @ApiModelProperty("费用") +// List receiptOrderAccountList; + @ApiModelProperty("退货数量") + @Excel(name = "退货数量") + private BigDecimal returnQuantity; + /** + * 提货单打印所选模版(与图5单选项文案一致即可)。可传副标题如「谷丰--营销部」,或整段「提货单--谷丰--营销部」;不传则标题为「提货单」 + */ + @ApiModelProperty("提货单打印模版名/弹窗选项全文;后端生成 printTitle(-- 会规范为 ——)") + private String noticePrintTemplateName; + @ApiModelProperty("车次") + @Excel(name = "车次") + private Integer trainNo; + @ApiModelProperty("推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败") + private Integer pushStatus; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("推送时间") + private Date pushTime; + + @ApiModelProperty("推送人") + private Long pushBy; + + @ApiModelProperty("推送人姓名") + private String pushByName; + @ApiModelProperty(value = "推送时间起") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date pushTimeFrom; + + @ApiModelProperty(value = "推送时间止") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date pushTimeTo; + + @ApiModelProperty(value = "推送时间起") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTimeFrom; + + @ApiModelProperty(value = "推送时间止") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTimeTo; +} \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java index a0262c1e6..572ff4904 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java @@ -41,6 +41,10 @@ public interface ExecutionStockInOrderMapper extends BaseMapper queryNoticePrint(ExecutionStockInOrderDO stockInOrderDO); List queryNoticePrintDetail(ExecutionStockInOrderDO stockInOrderDO); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderApplicationService.java index 16b9d4aeb..ae93c9855 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderApplicationService.java @@ -306,6 +306,11 @@ public class ExecutionStockInOrderApplicationService { return b; } + public Boolean cancelAuditState(ExecutionStockInOrderDO stockInOrderDO){ + Boolean b = stockInOrderDomainService.cancelAuditState(stockInOrderDO); + return b; + } + /** * @description 下发入库单 * @author ZhouGY diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java index ba7cdecb5..5415bfce5 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java @@ -429,6 +429,39 @@ public class ExecutionStockInOrderDomainService { .in(ExecutionStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); } + @Transactional(rollbackFor = Exception.class) + public Boolean cancelAuditState(ExecutionStockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Integer issueStatus = stockInOrderDO.getIssueStatus(); + // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) + String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); + + //逻辑删除w入库单信息 + List inOrderIds = stockInOrderDO.getInOrderIds(); + if (inOrderIds == null || inOrderIds.isEmpty()) { + for (Long inOrderId : inOrderIds) { + ExecutionStockInOrder executionStockInOrder = reservationStockInOrderMapper.selectById(inOrderId); + if (executionStockInOrder != null) { + String inOrderNumber = executionStockInOrder.getInOrderNumber(); + reservationStockInOrderMapper.delWOrder(inOrderNumber); + reservationStockInOrderMapper.delWOrderDetail(inOrderNumber); + } + } + } + + return stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(ExecutionStockInOrder::getIssueId, null) + .set(ExecutionStockInOrder::getIssueName, null) + .set(ExecutionStockInOrder::getIssueTime, null) + .set(ExecutionStockInOrder::getUpdateBy, loginUser.getUserid()) + .set(ExecutionStockInOrder::getUpdateByName, userRealName) + .set(ExecutionStockInOrder::getUpdateTime, new Date()) + .set(ExecutionStockInOrder::getIssueStatus, issueStatus) + .in(ExecutionStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + } + /** * @description 审核入库单 * @author ZhouGY diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/repository/mapper/ExecutionStockOutOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/repository/mapper/ExecutionStockOutOrderMapper.java index 5355fee7f..95c0deb2f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/repository/mapper/ExecutionStockOutOrderMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/repository/mapper/ExecutionStockOutOrderMapper.java @@ -5,6 +5,7 @@ import com.mhd.oms.domain.executionOutMaterialDetail.repository.po.ExecutionOutM import com.mhd.oms.domain.executionStockOutOrder.entity.ExecutionStockOutOrder; import com.mhd.oms.domain.executionStockOutOrder.repository.po.ExecutionStockOutOrderPO; import com.mhd.oms.domain.executionStockOutOrder.repository.todo.ExecutionStockOutOrderDO; +import org.apache.ibatis.annotations.Param; //import com.mhd.oms.domain.reservationOutMaterialDetail.repository.po.ExecutionOutMaterialDetailPO; import java.util.List; @@ -31,4 +32,9 @@ public interface ExecutionStockOutOrderMapper extends BaseMapper queryOutStockNoticePrintDetail(ExecutionStockOutOrderDO stockOutOrderDO); + + public void delWOrder(@Param("outOrderNumber") String outOrderNumber); + + public void delWOrderDetail(@Param("outOrderNumber") String outOrderNumber); + } \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderApplicationService.java index 0ff593beb..72009f0e7 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderApplicationService.java @@ -826,6 +826,10 @@ public class ExecutionStockOutOrderApplicationService { return stockOutOrderDomainService.auditState(stockOutOrderDO); } + public Boolean cancelAuditState(ExecutionStockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.auditState(stockOutOrderDO); + } + /** * @description 下发入库单 * @author ZhouGY diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java index a1b757600..fcd39242e 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java @@ -27,6 +27,7 @@ import com.mhd.oms.domain.executionStockInOrder.repository.mapper.ExecutionStock import com.mhd.oms.domain.executionStockInOrder.repository.po.MaterialBaseInfoPO; import com.mhd.oms.domain.executionStockOutOrder.entity.ExecutionStockOutOrder; import com.mhd.oms.domain.executionStockOutOrder.repository.facade.IExecutionStockOutOrderService; +import com.mhd.oms.domain.executionStockOutOrder.repository.mapper.ExecutionStockOutOrderMapper; import com.mhd.oms.domain.executionStockOutOrder.repository.po.ExecutionStockOutOrderPO; import com.mhd.oms.domain.executionStockOutOrder.repository.todo.ExecutionStockOutOrderDO; import com.mhd.oms.domain.reservationDeliveryDetailsLink.entity.ReservationDeliveryDetailsLink; @@ -68,6 +69,8 @@ public class ExecutionStockOutOrderDomainService { @Autowired private ExecutionStockInOrderMapper reservationStockInOrderMapper; @Autowired + private ExecutionStockOutOrderMapper executionStockOutOrderMapper; + @Autowired private BusinessDocumentOrderMapper businessDocumentOrderMapper; @Autowired private ExecuteOrderMapper executeOrderMapper; @@ -296,6 +299,38 @@ public class ExecutionStockOutOrderDomainService { .in(ExecutionStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); } + @Transactional(rollbackFor = Exception.class) + public Boolean cancelAuditState(ExecutionStockOutOrderDO stockOutOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Integer issueStatus = stockOutOrderDO.getIssueStatus(); + // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) + String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); + + List outOrderIds = stockOutOrderDO.getOutOrderIds(); + if (outOrderIds != null && outOrderIds.size() > 0) { + for (Long outOrderId : outOrderIds) { + ExecutionStockOutOrder executionStockOutOrder = stockOutOrderService.getById(outOrderId); + String outOrderNumber = executionStockOutOrder.getOutOrderNumber(); + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setOutOrderNumber(outOrderNumber); + wmsServiceFeign.cancelExecutionOrder(stockOutOrder); + //还原oms库存及调整记录 + } + } + + return stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(ExecutionStockOutOrder::getIssueId, null) + .set(ExecutionStockOutOrder::getIssueName, userRealName) + .set(ExecutionStockOutOrder::getIssueTime, new Date()) + .set(ExecutionStockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(ExecutionStockOutOrder::getUpdateByName, userRealName) + .set(ExecutionStockOutOrder::getUpdateTime, new Date()) + .set(ExecutionStockOutOrder::getIssueStatus, issueStatus) + .in(ExecutionStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + } + /** * @description 审核出库单 * @author ZhouGY @@ -348,6 +383,11 @@ public class ExecutionStockOutOrderDomainService { outMaterialDetailList.add(outMaterialDetail); } wmsServiceFeign.omsOutOrderAddDetail(outMaterialDetailList); + + String outOrderNumber = byId.getOutOrderNumber(); + com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO = new com.mhd.system.api.domain.StockOutOrderDTO(); + stockOutOrderDTO.setOutOrderNumber(outOrderNumber); + wmsServiceFeign.execution(stockOutOrderDTO); } return update; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java index a6196e0d2..746d43266 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/repository/mapper/ReservationStockInOrderMapper.java @@ -40,6 +40,15 @@ public interface ReservationStockInOrderMapper extends BaseMapper queryNoticePrint(ReservationStockInOrderDO stockInOrderDO); List queryNoticePrintDetail(ReservationStockInOrderDO stockInOrderDO); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 42ca8c65c..01b9b4552 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -13,6 +13,10 @@ import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder; import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper; +import com.mhd.oms.domain.executionInMaterialDetail.entity.ExecutionInMaterialDetail; +import com.mhd.oms.domain.executionInMaterialDetail.repository.facade.IExecutionInMaterialDetailService; +import com.mhd.oms.domain.executionStockInOrder.entity.ExecutionStockInOrder; +import com.mhd.oms.domain.executionStockInOrder.repository.facade.IExecutionStockInOrderService; import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail; import com.mhd.oms.domain.reservationInMaterialDetail.repository.facade.IReservationInMaterialDetailService; import com.mhd.oms.domain.reservationInMaterialDetail.repository.po.ReservationInMaterialDetailPO; @@ -29,6 +33,8 @@ import com.mhd.oms.domain.reservationStockInOrder.repository.po.ReservationStock import com.mhd.oms.domain.reservationStockInOrder.repository.todo.ReservationStockInOrderDO; import com.mhd.oms.domain.reservationStockOutOrder.entity.ReservationStockOutOrder; import com.mhd.oms.domain.reservationStockOutOrder.repository.facade.IReservationStockOutOrderService; +import com.mhd.oms.domain.reserveInMaterialDetail.entity.ReserveInMaterialDetail; +import com.mhd.oms.domain.reserveStockInOrder.entity.ReserveStockInOrder; import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.WmsServiceFeign; import com.mhd.system.api.domain.*; @@ -43,6 +49,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.lang.reflect.Field; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -61,6 +68,10 @@ public class ReservationStockInOrderDomainService { @Autowired private IReservationInMaterialDetailService materialDetailService; @Autowired + private IExecutionStockInOrderService executionStockInOrderService; + @Autowired + private IExecutionInMaterialDetailService executionInMaterialDetailService; + @Autowired private IReservationStockOutOrderService stockOutOrderService; // @Autowired // private ReservationStockReceiptOrderDomainService stockReceiptOrderDomainService; @@ -455,27 +466,97 @@ public class ReservationStockInOrderDomainService { .in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); //todo下发推送到wms +// List inOrderIds = stockInOrderDO.getInOrderIds(); +// for (Long inOrderId : inOrderIds) { +// ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); +// StockInOrder stockInOrder = new StockInOrder(); +// BeanUtils.copyProperties(byId, stockInOrder,"inOrderId"); +// stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId())); +// wmsServiceFeign.omsInOrderAdd(stockInOrder); +// String inOrderNumber = stockInOrder.getInOrderNumber(); +// List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); +// List inMaterialDetailList = new ArrayList<>(); +// for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { +// InMaterialDetail inMaterialDetail = new InMaterialDetail(); +// BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId"); +// inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); +// inMaterialDetailList.add(inMaterialDetail); +// } +// wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); +// } + //todo下发推送到入库业务单 List inOrderIds = stockInOrderDO.getInOrderIds(); for (Long inOrderId : inOrderIds) { +// Long inOrderId = stockInOrderDO.getInOrderId(); ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); - StockInOrder stockInOrder = new StockInOrder(); - BeanUtils.copyProperties(byId, stockInOrder,"inOrderId"); - stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId())); - wmsServiceFeign.omsInOrderAdd(stockInOrder); - String inOrderNumber = stockInOrder.getInOrderNumber(); + String inOrderNumber = byId.getInOrderNumber(); List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); - List inMaterialDetailList = new ArrayList<>(); - for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { - InMaterialDetail inMaterialDetail = new InMaterialDetail(); - BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId"); - inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); - inMaterialDetailList.add(inMaterialDetail); - } - wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); + + // 按照 warehouseId 分组 + Map> materialDetailGroupByWarehouse = materialDetailList.stream() + .collect(Collectors.groupingBy(ReservationInMaterialDetail::getWarehouseId)); + materialDetailGroupByWarehouse.forEach((warehouseId, details) -> { + Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId); + Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId); + String orgName = reservationStockInOrderMapper.getOrgName(warehouseId); + String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId); + String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId); + + ExecutionStockInOrder reservationStockInOrder = new ExecutionStockInOrder(); + BeanUtils.copyProperties(byId, reservationStockInOrder,"inOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime"); + reservationStockInOrder.setIssueStatus(0); + reservationStockInOrder.setOrderTypeCode("pu_tong_ru_ku"); + reservationStockInOrder.setOrderTypeName("普通入库"); + reservationStockInOrder.setReservationOrderSource("客户预约"); + reservationStockInOrder.setWarehouseId(warehouseId); + reservationStockInOrder.setOrganizationId(orgId); + reservationStockInOrder.setOrganizationName(orgName); + reservationStockInOrder.setTopOrganizationId(topOrgId); + reservationStockInOrder.setWarehouseCode(warehouseCode); + reservationStockInOrder.setWarehouseName(warehouseName); + + List inMaterialDetailList = new ArrayList<>(); + int index = 1; + for (ReservationInMaterialDetail reserveInMaterialDetail : details) { + ExecutionInMaterialDetail reservationInMaterialDetail = new ExecutionInMaterialDetail(); + BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId"); + reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getQuantity()); + reservationInMaterialDetail.setOrganizationId(orgId); + reservationInMaterialDetail.setOrganizationName(orgName); + reservationInMaterialDetail.setTopOrganizationId(topOrgId); + reservationInMaterialDetail.setWarehouseCode(warehouseCode); + reservationInMaterialDetail.setWarehouseName(warehouseName); +// String lot = generateDateSerialNumber(); +// lot = lot+"-"+index; +// index++; +// reservationInMaterialDetail.setLotNo(lot); + inMaterialDetailList.add(reservationInMaterialDetail); + } + BigDecimal quantity = details.stream().map(ReservationInMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + reservationStockInOrder.setQuantity(quantity); + executionStockInOrderService.save(reservationStockInOrder); + executionInMaterialDetailService.saveBatch(inMaterialDetailList); + }); } + + return update; } + public String generateDateSerialNumber() { + // 1. 获取当前时间,格式化为:yyMMdd (2位年+2位月+2位日) + SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd"); + String datePart = sdf.format(new Date()); + + // 2. 生成 000~999 的 3 位随机数(不足补零) + Random random = new Random(); + int randomNum = random.nextInt(1000); // 0~999 + String randomPart = String.format("%03d", randomNum); // 自动补前导零 + + // 3. 拼接结果 + return datePart + randomPart; + } + /** * @description 入库单返回结果 * @author ZhouGY diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockInOrder/ExecutionStockInOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockInOrder/ExecutionStockInOrderApi.java index 03ead7184..6426b6b74 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockInOrder/ExecutionStockInOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockInOrder/ExecutionStockInOrderApi.java @@ -120,13 +120,23 @@ public class ExecutionStockInOrderApi extends BaseController { /** * 下发入库单 */ - @ApiOperation("下发入库单") + @ApiOperation("执行入库单") @PostMapping(value = "/issueOrder") public AjaxResult issueOrder(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) { ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); return AjaxResult.success(stockInOrderApplicationService.issueOrder(stockInOrderDO)); } + /** + * 审核入库单 + */ + @ApiOperation("取消执行入库单") + @PostMapping(value = "/cancelAuditState") + public AjaxResult cancelAuditState(@RequestBody ExecutionStockInOrderDTO stockInOrderDTO) { + ExecutionStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + return AjaxResult.success(stockInOrderApplicationService.cancelAuditState(stockInOrderDO)); + } + /** * wms回传出入库结果 diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java index bcaa431e9..164014156 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java @@ -148,6 +148,16 @@ public class ExecutionStockOutOrderApi extends BaseController { return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO)); } + /** + * 审核出库单 + */ + @ApiOperation("审核出库单") + @PostMapping(value = "/cancelAuditState") + public AjaxResult cancelAuditState(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO) { + ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + return AjaxResult.success(stockOutOrderApplicationService.auditState(stockOutOrderDO)); + } + @ApiOperation("关闭出库单") @PostMapping("/close") public AjaxResult close(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO) diff --git a/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml b/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml index a0545ebe4..efb63a5bc 100644 --- a/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml @@ -629,4 +629,12 @@ and organization_name = #{organizationName} and interface_type = #{interfaceType} limit 1 + + + update "NGWL_TEST_WMS".stock_in_order set DEL_FLAG = 2 where DEL_FLAG = 1 and in_order_number = #{inOrderNumber} + + + + update "NGWL_TEST_WMS".IN_MATERIAL_DETAIL set DEL_FLAG = 2 where DEL_FLAG = 1 and in_order_number = #{inOrderNumber} + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml b/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml index d1c42d16c..fa08ade8e 100644 --- a/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/executionStockOutOrder/ExecutionStockOutOrderMapper.xml @@ -466,4 +466,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + update "NGWL_TEST_WMS".stock_out_order set DEL_FLAG = 2 where DEL_FLAG = 1 and out_order_number = #{outOrderNumber} + + + + update "NGWL_TEST_WMS".out_material_detail set DEL_FLAG = 2 where DEL_FLAG = 1 and out_order_number = #{outOrderNumber} + + \ No newline at end of file diff --git a/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml index 1f315b9af..5d6171409 100644 --- a/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reservationStockInOrder/ReservationStockInOrderMapper.xml @@ -538,6 +538,23 @@ select CUSTOMER_NC_CODE from "NGWL_TEST_USER".USER_SHIPPER where 1 = 1 and DEL_FLAG = 1 and USER_ID = #{id} limit 1 + + + + + + + + + diff --git a/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/mapper/ReconciliationMapper.java b/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/mapper/ReconciliationMapper.java index eb50d1751..e68dd0b01 100644 --- a/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/mapper/ReconciliationMapper.java +++ b/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/mapper/ReconciliationMapper.java @@ -39,6 +39,8 @@ public interface ReconciliationMapper extends BaseMapper String getCustomerCodeNc(@Param("actualInvoiceCustomerId") String actualInvoiceCustomerId); + String getCustomerCodeNcJson(@Param("actualInvoiceCustomerId") String actualInvoiceCustomerId); + String getDocumentPreparerNcCode(@Param("salesmanId") String salesmanId); String getSettlementCurrencyNcCode(@Param("settlementCurrency") String settlementCurrency); diff --git a/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/persistence/ReconciliationImpl.java b/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/persistence/ReconciliationImpl.java index 19c67e240..c2f386f31 100644 --- a/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/persistence/ReconciliationImpl.java +++ b/mhd_finance/src/main/java/com/linke/finance/domain/reconciliation/repository/persistence/ReconciliationImpl.java @@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.linke.finance.domain.approvalDocument.entity.ApprovalDocument; import com.linke.finance.domain.approvalDocument.repository.mapper.ApprovalDocumentMapper; @@ -725,6 +727,26 @@ public class ReconciliationImpl extends ServiceImpl> list = objectMapper.readValue( + customerCodeNcJson, + new TypeReference>>() {} + ); + if (list != null && list.size() > 0) { + Map targetMap = list.stream() + .filter(map -> { + Object codeObj = map.get("code"); + return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); + }) + .findFirst() + .orElse(null); + if (targetMap != null) { + customerCodeNc = (String) targetMap.get("ncCustomer"); + } + } + } String settlementCurrency=order.getSettlementCurrency(); String salesmanId = order.getSalesmanId(); String customerUserDept = reconciliationMapper.getCustomerUserDept(salesmanId); @@ -952,6 +974,10 @@ public class ReconciliationImpl extends ServiceImpl> list = objectMapper.readValue( + customerCodeNcJson, + new TypeReference>>() {} + ); + if (list != null && list.size() > 0) { + Map targetMap = list.stream() + .filter(map -> { + Object codeObj = map.get("code"); + return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); + }) + .findFirst() + .orElse(null); + if (targetMap != null) { + customerCodeNc = (String) targetMap.get("ncCustomer"); + } + } + } + String settlementCurrency=order.getSettlementCurrency(); String salesmanId = order.getSalesmanId(); String customerUserDept = reconciliationMapper.getCustomerUserDept(salesmanId); @@ -1235,6 +1282,10 @@ public class ReconciliationImpl extends ServiceImpl> listNc = objectMapper.readValue( + customerCodeNcJson, + new TypeReference>>() {} + ); + if (listNc != null && listNc.size() > 0) { + Map targetMap = listNc.stream() + .filter(map -> { + Object codeObj = map.get("code"); + return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); + }) + .findFirst() + .orElse(null); + if (targetMap != null) { + customerCodeNc = (String) targetMap.get("ncCustomer"); + } + } + } String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId); String settlementCurrency=order.getSettlementCurrency(); String settlementCurrencyNcCode = settlementCurrency; @@ -1759,6 +1830,10 @@ public class ReconciliationImpl extends ServiceImpl> listNc = objectMapper.readValue( + customerCodeNcJson, + new TypeReference>>() {} + ); + if (listNc != null && listNc.size() > 0) { + Map targetMap = listNc.stream() + .filter(map -> { + Object codeObj = map.get("code"); + return codeObj != null && codeObj.toString().equals(reconciliation.getOrganizationId().toString()); + }) + .findFirst() + .orElse(null); + if (targetMap != null) { + customerCodeNc = (String) targetMap.get("ncCustomer"); + } + } + } String documentPreparerNcCode = reconciliationMapper.getDocumentPreparerNcCode(salesmanId); String settlementCurrency=order.getSettlementCurrency(); String settlementCurrencyNcCode = settlementCurrency; @@ -2046,6 +2141,10 @@ public class ReconciliationImpl extends ServiceImpl + + diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/entity/ExecutionStockInOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/entity/ExecutionStockInOrder.java index 9a4aae0e0..bd785b871 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/entity/ExecutionStockInOrder.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/entity/ExecutionStockInOrder.java @@ -61,6 +61,10 @@ public class ExecutionStockInOrder extends BaseVOEntity { @Excel(name = "入库单号") private String inOrderNumber; + @ApiModelProperty("入库业务单号") + @Excel(name = "入库业务单号") + private String businessInOrderNumber; + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") private Integer status; diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java index 572ff4904..a83ad2a97 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/repository/mapper/ExecutionStockInOrderMapper.java @@ -45,6 +45,12 @@ public interface ExecutionStockInOrderMapper extends BaseMapper queryNoticePrint(ExecutionStockInOrderDO stockInOrderDO); List queryNoticePrintDetail(ExecutionStockInOrderDO stockInOrderDO); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java index 5415bfce5..044e7cc9c 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java @@ -440,13 +440,16 @@ public class ExecutionStockInOrderDomainService { //逻辑删除w入库单信息 List inOrderIds = stockInOrderDO.getInOrderIds(); - if (inOrderIds == null || inOrderIds.isEmpty()) { + if (inOrderIds != null && !inOrderIds.isEmpty()) { for (Long inOrderId : inOrderIds) { ExecutionStockInOrder executionStockInOrder = reservationStockInOrderMapper.selectById(inOrderId); if (executionStockInOrder != null) { String inOrderNumber = executionStockInOrder.getInOrderNumber(); reservationStockInOrderMapper.delWOrder(inOrderNumber); reservationStockInOrderMapper.delWOrderDetail(inOrderNumber); + String wShOrder = reservationStockInOrderMapper.getWShOrder(inOrderNumber); + reservationStockInOrderMapper.delWShOrder(inOrderNumber); + reservationStockInOrderMapper.delWShOrderDetail(wShOrder); } } } @@ -458,7 +461,7 @@ public class ExecutionStockInOrderDomainService { .set(ExecutionStockInOrder::getUpdateBy, loginUser.getUserid()) .set(ExecutionStockInOrder::getUpdateByName, userRealName) .set(ExecutionStockInOrder::getUpdateTime, new Date()) - .set(ExecutionStockInOrder::getIssueStatus, issueStatus) + .set(ExecutionStockInOrder::getIssueStatus, 0) .in(ExecutionStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/entity/ExecutionStockOutOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/entity/ExecutionStockOutOrder.java index f51b8df4a..a664ff674 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/entity/ExecutionStockOutOrder.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/entity/ExecutionStockOutOrder.java @@ -50,6 +50,10 @@ public class ExecutionStockOutOrder extends BaseVOEntity { @Excel(name = "出库单号") private String outOrderNumber; + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String businessOutOrderNumber; + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核") @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核") private Integer status; diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java index fcd39242e..421d3075e 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java @@ -327,7 +327,7 @@ public class ExecutionStockOutOrderDomainService { .set(ExecutionStockOutOrder::getUpdateBy, loginUser.getUserid()) .set(ExecutionStockOutOrder::getUpdateByName, userRealName) .set(ExecutionStockOutOrder::getUpdateTime, new Date()) - .set(ExecutionStockOutOrder::getIssueStatus, issueStatus) + .set(ExecutionStockOutOrder::getIssueStatus, 0) .in(ExecutionStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java index 8fd6cd193..dceb92718 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java @@ -333,6 +333,10 @@ public class ReservationStockInOrderApplicationService { return stockInOrderDomainService.issueOrder(stockInOrderDO); } + public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO){ + return stockInOrderDomainService.executeAndIssue(stockInOrderDO); + } + /** * @description 取消入库单 * @author ZhouGY diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 01b9b4552..9c51d7a54 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -17,6 +17,8 @@ import com.mhd.oms.domain.executionInMaterialDetail.entity.ExecutionInMaterialDe import com.mhd.oms.domain.executionInMaterialDetail.repository.facade.IExecutionInMaterialDetailService; import com.mhd.oms.domain.executionStockInOrder.entity.ExecutionStockInOrder; import com.mhd.oms.domain.executionStockInOrder.repository.facade.IExecutionStockInOrderService; +import com.mhd.oms.domain.executionStockInOrder.repository.todo.ExecutionStockInOrderDO; +import com.mhd.oms.domain.executionStockInOrder.service.ExecutionStockInOrderApplicationService; import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail; import com.mhd.oms.domain.reservationInMaterialDetail.repository.facade.IReservationInMaterialDetailService; import com.mhd.oms.domain.reservationInMaterialDetail.repository.po.ReservationInMaterialDetailPO; @@ -73,29 +75,16 @@ public class ReservationStockInOrderDomainService { private IExecutionInMaterialDetailService executionInMaterialDetailService; @Autowired private IReservationStockOutOrderService stockOutOrderService; -// @Autowired -// private ReservationStockReceiptOrderDomainService stockReceiptOrderDomainService; -// @Autowired -// private ReservationStockShelfOrderDomainService stockShelfOrderDomainService; -// @Autowired -// private IMaterialBaseInfoService materialBaseInfoService; -// @Autowired -// private IMaterialGoodsRuleService materialGoodsRuleService; -// @Autowired -// private IMaterialWarehouseControlService materialWarehouseControlService; @Autowired private SystemServiceFeign systemServiceFeign; @Autowired private WmsServiceFeign wmsServiceFeign; @Autowired private ReservationStockInOrderMapper reservationStockInOrderMapper; - + @Autowired + private ExecutionStockInOrderApplicationService stockInOrderApplicationService; @Autowired private BusinessDocumentOrderMapper businessDocumentOrderMapper; -// @Autowired -// private IReceiptMaterialDetailService receiptMaterialDetailService; -// @Autowired -// private IShelfMaterialDetailService shelfMaterialDetailService; /** * 分页查询入库单列表 @@ -514,6 +503,12 @@ public class ReservationStockInOrderDomainService { reservationStockInOrder.setTopOrganizationId(topOrgId); reservationStockInOrder.setWarehouseCode(warehouseCode); reservationStockInOrder.setWarehouseName(warehouseName); + reservationStockInOrder.setBusinessInOrderNumber(inOrderNumber); + if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) { + reservationStockInOrder.setInOrderNumber(OrderSequence.getOrderCode("RK")); + } else { + reservationStockInOrder.setInOrderNumber(inOrderNumber); + } List inMaterialDetailList = new ArrayList<>(); int index = 1; @@ -526,6 +521,7 @@ public class ReservationStockInOrderDomainService { reservationInMaterialDetail.setTopOrganizationId(topOrgId); reservationInMaterialDetail.setWarehouseCode(warehouseCode); reservationInMaterialDetail.setWarehouseName(warehouseName); + reservationInMaterialDetail.setInOrderNumber(reservationStockInOrder.getInOrderNumber()); // String lot = generateDateSerialNumber(); // lot = lot+"-"+index; // index++; @@ -543,6 +539,115 @@ public class ReservationStockInOrderDomainService { return update; } + @Transactional(rollbackFor = Exception.class) + public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + + // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) + String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); + boolean update = stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(ReservationStockInOrder::getIssueId, loginUser.getUserid()) + .set(ReservationStockInOrder::getIssueName, userRealName) + .set(ReservationStockInOrder::getIssueTime, new Date()) + //.set(ReservationStockInOrder::getIssueStatus, 1) + .set(ReservationStockInOrder::getUpdateBy, loginUser.getUserid()) + .set(ReservationStockInOrder::getUpdateByName, userRealName) + .set(ReservationStockInOrder::getUpdateTime, new Date()) + .in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + + //todo下发推送到wms +// List inOrderIds = stockInOrderDO.getInOrderIds(); +// for (Long inOrderId : inOrderIds) { +// ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); +// StockInOrder stockInOrder = new StockInOrder(); +// BeanUtils.copyProperties(byId, stockInOrder,"inOrderId"); +// stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId())); +// wmsServiceFeign.omsInOrderAdd(stockInOrder); +// String inOrderNumber = stockInOrder.getInOrderNumber(); +// List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); +// List inMaterialDetailList = new ArrayList<>(); +// for (ReservationInMaterialDetail reservationInMaterialDetail : materialDetailList) { +// InMaterialDetail inMaterialDetail = new InMaterialDetail(); +// BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId"); +// inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); +// inMaterialDetailList.add(inMaterialDetail); +// } +// wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); +// } + //todo下发推送到入库业务单 + List inOrderIds = stockInOrderDO.getInOrderIds(); + for (Long inOrderId : inOrderIds) { +// Long inOrderId = stockInOrderDO.getInOrderId(); + ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); + String inOrderNumber = byId.getInOrderNumber(); + List materialDetailList = materialDetailService.list(new QueryWrapper().lambda().eq(ReservationInMaterialDetail::getInOrderNumber, inOrderNumber)); + + // 按照 warehouseId 分组 + Map> materialDetailGroupByWarehouse = materialDetailList.stream() + .collect(Collectors.groupingBy(ReservationInMaterialDetail::getWarehouseId)); + materialDetailGroupByWarehouse.forEach((warehouseId, details) -> { + Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId); + Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId); + String orgName = reservationStockInOrderMapper.getOrgName(warehouseId); + String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId); + String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId); + + ExecutionStockInOrder reservationStockInOrder = new ExecutionStockInOrder(); + BeanUtils.copyProperties(byId, reservationStockInOrder,"inOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime"); + reservationStockInOrder.setIssueStatus(0); + reservationStockInOrder.setOrderTypeCode("pu_tong_ru_ku"); + reservationStockInOrder.setOrderTypeName("普通入库"); + reservationStockInOrder.setReservationOrderSource("客户预约"); + reservationStockInOrder.setWarehouseId(warehouseId); + reservationStockInOrder.setOrganizationId(orgId); + reservationStockInOrder.setOrganizationName(orgName); + reservationStockInOrder.setTopOrganizationId(topOrgId); + reservationStockInOrder.setWarehouseCode(warehouseCode); + reservationStockInOrder.setWarehouseName(warehouseName); + reservationStockInOrder.setBusinessInOrderNumber(inOrderNumber); + if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) { + reservationStockInOrder.setInOrderNumber(OrderSequence.getOrderCode("RK")); + } else { + reservationStockInOrder.setInOrderNumber(inOrderNumber); + } + + List inMaterialDetailList = new ArrayList<>(); + int index = 1; + for (ReservationInMaterialDetail reserveInMaterialDetail : details) { + ExecutionInMaterialDetail reservationInMaterialDetail = new ExecutionInMaterialDetail(); + BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId"); + reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getQuantity()); + reservationInMaterialDetail.setOrganizationId(orgId); + reservationInMaterialDetail.setOrganizationName(orgName); + reservationInMaterialDetail.setTopOrganizationId(topOrgId); + reservationInMaterialDetail.setWarehouseCode(warehouseCode); + reservationInMaterialDetail.setWarehouseName(warehouseName); + reservationInMaterialDetail.setInOrderNumber(reservationStockInOrder.getInOrderNumber()); +// String lot = generateDateSerialNumber(); +// lot = lot+"-"+index; +// index++; +// reservationInMaterialDetail.setLotNo(lot); + inMaterialDetailList.add(reservationInMaterialDetail); + } + BigDecimal quantity = details.stream().map(ReservationInMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + reservationStockInOrder.setQuantity(quantity); + executionStockInOrderService.save(reservationStockInOrder); + ExecutionStockInOrderDO param = new ExecutionStockInOrderDO(); + Long inOrderId1 = reservationStockInOrder.getInOrderId(); + List inOrderIdList1 = new ArrayList<>(); + inOrderIdList1.add(inOrderId1); + param.setInOrderIds(inOrderIdList1); + stockInOrderApplicationService.issueOrder(param); + executionInMaterialDetailService.saveBatch(inMaterialDetailList); + }); + } + + + return update; + } + public String generateDateSerialNumber() { // 1. 获取当前时间,格式化为:yyMMdd (2位年+2位月+2位日) SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd"); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java index d3f318eb7..1d1456448 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java @@ -854,6 +854,10 @@ public class ReservationStockOutOrderApplicationService { return stockOutOrderDomainService.issueOrder(stockOutOrderDO); } + public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.executeAndIssue(stockOutOrderDO); + } + 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 c3dbb8e2f..e2e5b4b81 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 @@ -20,6 +20,15 @@ import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder; import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper; import com.mhd.oms.domain.executeOrder.entity.ExecuteOrder; import com.mhd.oms.domain.executeOrder.repository.mapper.ExecuteOrderMapper; +import com.mhd.oms.domain.executionInMaterialDetail.entity.ExecutionInMaterialDetail; +import com.mhd.oms.domain.executionInMaterialDetail.repository.facade.IExecutionInMaterialDetailService; +import com.mhd.oms.domain.executionOutMaterialDetail.entity.ExecutionOutMaterialDetail; +import com.mhd.oms.domain.executionOutMaterialDetail.repository.facade.IExecutionOutMaterialDetailService; +import com.mhd.oms.domain.executionStockInOrder.entity.ExecutionStockInOrder; +import com.mhd.oms.domain.executionStockOutOrder.entity.ExecutionStockOutOrder; +import com.mhd.oms.domain.executionStockOutOrder.repository.facade.IExecutionStockOutOrderService; +import com.mhd.oms.domain.executionStockOutOrder.repository.todo.ExecutionStockOutOrderDO; +import com.mhd.oms.domain.executionStockOutOrder.service.ExecutionStockOutOrderApplicationService; import com.mhd.oms.domain.reservationDeliveryDetailsLink.entity.ReservationDeliveryDetailsLink; import com.mhd.oms.domain.reservationDeliveryDetailsLink.repository.facade.IReservationDeliveryDetailsLinkService; import com.mhd.oms.domain.reservationInMaterialDetail.entity.ReservationInMaterialDetail; @@ -71,6 +80,10 @@ public class ReservationStockOutOrderDomainService { @Autowired private IReservationOutMaterialDetailService outMaterialDetailService; @Autowired + private IExecutionStockOutOrderService executionStockOutOrderService; + @Autowired + private IExecutionOutMaterialDetailService executionOutMaterialDetailService; + @Autowired private IReservationDeliveryDetailsLinkService deliveryDetailsLinkService; @Autowired private IReservationStockInOrderService reservationStockInOrderService; @@ -80,7 +93,8 @@ public class ReservationStockOutOrderDomainService { private BusinessDocumentOrderMapper businessDocumentOrderMapper; @Autowired private ExecuteOrderMapper executeOrderMapper; - + @Autowired + private ExecutionStockOutOrderApplicationService stockOutOrderApplicationService; @Resource private SystemServiceFeign systemServiceFeign; @Resource @@ -331,32 +345,143 @@ public class ReservationStockOutOrderDomainService { //todo下发推送到wms List inOrderIds = stockOutOrderDO.getOutOrderIds(); + for (Long inOrderId : inOrderIds) { ReservationStockOutOrder byId = stockOutOrderService.getById(inOrderId); - StockOutOrder stockOutOrder = new StockOutOrder(); - BeanUtils.copyProperties(byId, stockOutOrder,"outOrderId"); - wmsServiceFeign.omsOutOrderAdd(stockOutOrder); - - List list = deliveryDetailsLinkService.list(new QueryWrapper().lambda().eq(ReservationDeliveryDetailsLink::getOrderNumber, byId.getOutOrderNumber())); - List deliveryDetailsLinkList = new ArrayList<>(); - for (ReservationDeliveryDetailsLink reservationDeliveryDetailsLink : list) { - DeliveryDetailsLink deliveryDetailsLink = new DeliveryDetailsLink(); - BeanUtils.copyProperties(reservationDeliveryDetailsLink, deliveryDetailsLink,"id"); - deliveryDetailsLink.setOmsId(reservationDeliveryDetailsLink.getId()); - deliveryDetailsLinkList.add(deliveryDetailsLink); - } - wmsServiceFeign.omsOutOrderAddDeliveryDetailsLink(deliveryDetailsLinkList); - - - String inOrderNumber = stockOutOrder.getOutOrderNumber(); + String inOrderNumber = byId.getOutOrderNumber(); List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber)); - List outMaterialDetailList = new ArrayList<>(); - for (ReservationOutMaterialDetail reservationOutMaterialDetail : materialDetailList) { - OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); - BeanUtils.copyProperties(reservationOutMaterialDetail, outMaterialDetail,"materialDetailId"); - outMaterialDetailList.add(outMaterialDetail); - } - wmsServiceFeign.omsOutOrderAddDetail(outMaterialDetailList); + + // 按照 warehouseId 分组 + Map> materialDetailGroupByWarehouse = materialDetailList.stream() + .collect(Collectors.groupingBy(ReservationOutMaterialDetail::getWarehouseId)); + materialDetailGroupByWarehouse.forEach((warehouseId, details) -> { + Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId); + Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId); + String orgName = reservationStockInOrderMapper.getOrgName(warehouseId); + String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId); + String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId); + + ExecutionStockOutOrder reservationStockInOrder = new ExecutionStockOutOrder(); + BeanUtils.copyProperties(byId, reservationStockInOrder,"outOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime"); + reservationStockInOrder.setIssueStatus(0); + reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku"); + reservationStockInOrder.setOrderTypeName("普通出库"); + reservationStockInOrder.setReservationOrderSource("客户预约"); + reservationStockInOrder.setWarehouseId(warehouseId); + reservationStockInOrder.setOrganizationId(orgId); + reservationStockInOrder.setOrganizationName(orgName); + reservationStockInOrder.setTopOrganizationId(topOrgId); + reservationStockInOrder.setWarehouseCode(warehouseCode); + reservationStockInOrder.setWarehouseName(warehouseName); + reservationStockInOrder.setBusinessOutOrderNumber(inOrderNumber); + if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) { + reservationStockInOrder.setOutOrderNumber(OrderSequence.getOrderCode("CK")); + } else { + reservationStockInOrder.setOutOrderNumber(inOrderNumber); + } + + List inMaterialDetailList = new ArrayList<>(); + for (ReservationOutMaterialDetail reservationOutMaterialDetail : details) { + ExecutionOutMaterialDetail reservationInMaterialDetail = new ExecutionOutMaterialDetail(); + BeanUtils.copyProperties(reservationOutMaterialDetail, reservationInMaterialDetail,"materialDetailId"); + reservationInMaterialDetail.setQuantity(reservationOutMaterialDetail.getQuantity()); + reservationInMaterialDetail.setOrganizationId(orgId); + reservationInMaterialDetail.setOrganizationName(orgName); + reservationInMaterialDetail.setTopOrganizationId(topOrgId); + reservationInMaterialDetail.setWarehouseCode(warehouseCode); + reservationInMaterialDetail.setWarehouseName(warehouseName); + reservationInMaterialDetail.setOutOrderNumber(reservationStockInOrder.getOutOrderNumber()); + inMaterialDetailList.add(reservationInMaterialDetail); + } + BigDecimal quantity = details.stream().map(ReservationOutMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + reservationStockInOrder.setQuantity(quantity); + executionStockOutOrderService.save(reservationStockInOrder); + executionOutMaterialDetailService.saveBatch(inMaterialDetailList); + }); + } + return update; + } + + @Transactional(rollbackFor = Exception.class) + public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) + String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); + boolean update = stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(ReservationStockOutOrder::getIssueId, loginUser.getUserid()) + .set(ReservationStockOutOrder::getIssueName, userRealName) + .set(ReservationStockOutOrder::getIssueTime, new Date()) + //.set(ReservationStockOutOrder::getIssueStatus, 1) + .set(ReservationStockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(ReservationStockOutOrder::getUpdateByName, userRealName) + .set(ReservationStockOutOrder::getUpdateTime, new Date()) + .in(ReservationStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + + //todo下发推送到wms + List inOrderIds = stockOutOrderDO.getOutOrderIds(); + + for (Long inOrderId : inOrderIds) { + ReservationStockOutOrder byId = stockOutOrderService.getById(inOrderId); + String inOrderNumber = byId.getOutOrderNumber(); + List materialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda().eq(ReservationOutMaterialDetail::getOutOrderNumber, inOrderNumber)); + + // 按照 warehouseId 分组 + Map> materialDetailGroupByWarehouse = materialDetailList.stream() + .collect(Collectors.groupingBy(ReservationOutMaterialDetail::getWarehouseId)); + materialDetailGroupByWarehouse.forEach((warehouseId, details) -> { + Long topOrgId = reservationStockInOrderMapper.getTopOrgId(warehouseId); + Long orgId = reservationStockInOrderMapper.getOrgId(warehouseId); + String orgName = reservationStockInOrderMapper.getOrgName(warehouseId); + String warehouseCode = reservationStockInOrderMapper.getWarehouseCode(warehouseId); + String warehouseName = reservationStockInOrderMapper.getWarehouseName(warehouseId); + + ExecutionStockOutOrder reservationStockInOrder = new ExecutionStockOutOrder(); + BeanUtils.copyProperties(byId, reservationStockInOrder,"outOrderId","issueStatus","issueTime","issueId","issueName","reservationAuditId","reservationAuditName","reservationAuditTime"); + reservationStockInOrder.setIssueStatus(0); + reservationStockInOrder.setOrderTypeCode("pu_tong_chu_ku"); + reservationStockInOrder.setOrderTypeName("普通出库"); + reservationStockInOrder.setReservationOrderSource("客户预约"); + reservationStockInOrder.setWarehouseId(warehouseId); + reservationStockInOrder.setOrganizationId(orgId); + reservationStockInOrder.setOrganizationName(orgName); + reservationStockInOrder.setTopOrganizationId(topOrgId); + reservationStockInOrder.setWarehouseCode(warehouseCode); + reservationStockInOrder.setWarehouseName(warehouseName); + reservationStockInOrder.setBusinessOutOrderNumber(inOrderNumber); + if (materialDetailGroupByWarehouse!=null&&materialDetailGroupByWarehouse.size()>1) { + reservationStockInOrder.setOutOrderNumber(OrderSequence.getOrderCode("CK")); + } else { + reservationStockInOrder.setOutOrderNumber(inOrderNumber); + } + + List inMaterialDetailList = new ArrayList<>(); + for (ReservationOutMaterialDetail reservationOutMaterialDetail : details) { + ExecutionOutMaterialDetail reservationInMaterialDetail = new ExecutionOutMaterialDetail(); + BeanUtils.copyProperties(reservationOutMaterialDetail, reservationInMaterialDetail,"materialDetailId"); + reservationInMaterialDetail.setQuantity(reservationOutMaterialDetail.getQuantity()); + reservationInMaterialDetail.setOrganizationId(orgId); + reservationInMaterialDetail.setOrganizationName(orgName); + reservationInMaterialDetail.setTopOrganizationId(topOrgId); + reservationInMaterialDetail.setWarehouseCode(warehouseCode); + reservationInMaterialDetail.setWarehouseName(warehouseName); + reservationInMaterialDetail.setOutOrderNumber(reservationStockInOrder.getOutOrderNumber()); + inMaterialDetailList.add(reservationInMaterialDetail); + } + BigDecimal quantity = details.stream().map(ReservationOutMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + reservationStockInOrder.setQuantity(quantity); + executionStockOutOrderService.save(reservationStockInOrder); + executionOutMaterialDetailService.saveBatch(inMaterialDetailList); + + //下发 + Long outOrderId = reservationStockInOrder.getOutOrderId(); + ExecutionStockOutOrderDO param = new ExecutionStockOutOrderDO(); + List ids = new ArrayList<>(); + ids.add(outOrderId); + param.setOutOrderIds(ids); + stockOutOrderApplicationService.issueOrder(param); + }); } return update; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java index abe0a56b7..2549b15aa 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java @@ -150,6 +150,13 @@ public class ReservationStockOutOrderApi extends BaseController { return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO)); } + @ApiOperation("下发出库单") + @PostMapping(value = "/executeAndIssue") + public AjaxResult executeAndIssue(@RequestBody ReservationStockOutOrderDTO stockOutOrderDTO) { + ReservationStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + return AjaxResult.success(stockOutOrderApplicationService.executeAndIssue(stockOutOrderDO)); + } + @ApiOperation("关闭出库单") @PostMapping("/close") public AjaxResult close(@RequestBody ReservationStockOutOrderDTO stockOutOrderDTO) diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java index 3d0d1fd56..630db6782 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java @@ -129,6 +129,16 @@ public class ReservationStockInOrderApi extends BaseController { return AjaxResult.success(stockInOrderApplicationService.issueOrder(stockInOrderDO)); } + /** + * 下发入库单 + */ + @ApiOperation("下发入库单") + @PostMapping(value = "/executeAndIssue") + public AjaxResult executeAndIssue(@RequestBody ReservationStockInOrderDTO stockInOrderDTO) { + ReservationStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + return AjaxResult.success(stockInOrderApplicationService.executeAndIssue(stockInOrderDO)); + } + /** * wms回传出入库结果 diff --git a/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml b/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml index efb63a5bc..e7482a7c2 100644 --- a/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/executionStockInOrder/ExecutionStockInOrderMapper.xml @@ -637,4 +637,16 @@ update "NGWL_TEST_WMS".IN_MATERIAL_DETAIL set DEL_FLAG = 2 where DEL_FLAG = 1 and in_order_number = #{inOrderNumber} + + + update "NGWL_TEST_WMS".STOCK_RECEIPT_ORDER set DEL_FLAG = 2 where DEL_FLAG = 1 and in_order_number = #{inOrderNumber} + + + + + + update "NGWL_TEST_WMS".RECEIPT_MATERIAL_DETAIL set DEL_FLAG = 2 where DEL_FLAG = 1 and RECEIPT_ORDER_NUMBER = #{receiptOrderNumber} + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml index 6cefc6155..cece22329 100644 --- a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml @@ -348,7 +348,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from in_material_detail a - LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number + LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number and a.DEL_FLAG = 1 and b.DEL_FLAG = 1 diff --git a/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml b/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml index 228139f0d..13db39d74 100644 --- a/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml @@ -91,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from in_order_abnormal a - LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number + LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number and a.DEL_FLAG = 1 and b.DEL_FLAG = 1 diff --git a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml index b5a015aa2..f4b8c1ecc 100644 --- a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml @@ -67,7 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM receipt_material_detail rmd LEFT JOIN stock_receipt_order sro1 ON sro1.receipt_order_number = rmd.receipt_order_number - LEFT JOIN stock_in_order sio1 ON sro1.in_order_number = sio1.in_order_number + LEFT JOIN stock_in_order sio1 ON sro1.in_order_number = sio1.in_order_number and sio1.DEL_FLAG = 1 and sro1.DEL_FLAG = 1 WHERE rmd.receipt_status IN ( 1, 2 ) AND rmd.receipt_quantity > 0 @@ -95,7 +95,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM shelf_material_detail smd LEFT JOIN stock_shelf_order sso ON sso.shelf_order_number = smd.shelf_order_number - LEFT JOIN stock_in_order sio2 ON sso.in_order_number = sio2.in_order_number + LEFT JOIN stock_in_order sio2 ON sso.in_order_number = sio2.in_order_number and sio1.DEL_FLAG = 1 and sso1.DEL_FLAG = 1 WHERE smd.shelves_status IN ( 1, 2 ) GROUP BY @@ -220,7 +220,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM receipt_material_detail rmd LEFT JOIN stock_receipt_order sro ON sro.receipt_order_number = rmd.receipt_order_number - LEFT JOIN stock_in_order sio ON sro.in_order_number = sio.in_order_number + LEFT JOIN stock_in_order sio ON sro.in_order_number = sio.in_order_number and sio1.DEL_FLAG = 1 and sro1.DEL_FLAG = 1 WHERE sro.status IN ( 1, 2 ) @@ -248,7 +248,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM shelf_material_detail rmd LEFT JOIN stock_shelf_order sso ON sso.shelf_order_number = rmd.shelf_order_number - LEFT JOIN stock_in_order sio ON sso.in_order_number = sio.in_order_number + LEFT JOIN stock_in_order sio ON sso.in_order_number = sio.in_order_number and sio1.DEL_FLAG = 1 and sso1.DEL_FLAG = 1 WHERE sso.STATUS IN ( 1, diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index 9fcd08bcf..eb7756062 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -775,7 +775,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" receipt_material_detail c LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number AND d.del_flag = 1 - LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number + LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1 WHERE c.del_flag = 1 and d.STATUS = 3 AND e.warehouse_id = a.warehouse_id @@ -802,7 +802,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" shelf_material_detail c LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number AND d.del_flag = 1 - LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number + LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1 WHERE c.del_flag = 1 and d.STATUS = 1 AND e.warehouse_id = a.warehouse_id @@ -983,7 +983,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" receipt_material_detail c LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number AND d.del_flag = 1 - LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number + LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1 WHERE c.del_flag = 1 and d.STATUS = 3 AND e.warehouse_id = a.warehouse_id @@ -1013,7 +1013,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" receipt_material_detail c LEFT JOIN stock_receipt_order d ON c.receipt_order_number = d.receipt_order_number AND d.del_flag = 1 - LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number + LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1 WHERE c.del_flag = 1 and d.STATUS = 3 AND e.warehouse_id = a.warehouse_id @@ -1043,7 +1043,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" shelf_material_detail c LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number AND d.del_flag = 1 - LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number + LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1 WHERE c.del_flag = 1 AND e.warehouse_id = a.warehouse_id @@ -1063,7 +1063,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" shelf_material_detail c LEFT JOIN stock_shelf_order d ON c.shelf_order_number = d.shelf_order_number AND d.del_flag = 1 - LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number + LEFT JOIN stock_in_order e ON d.in_order_number = e.in_order_number and e.DEL_FLAG = 1 and d.DEL_FLAG = 1 WHERE c.del_flag = 1 AND e.warehouse_id = a.warehouse_id diff --git a/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml index fa4dbc5b6..9509d5da5 100644 --- a/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml @@ -152,7 +152,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from stock_receipt_order a - LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number + LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number and a.DEL_FLAG = 1 and b.DEL_FLAG = 1 diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index 83f0b1861..38469fe99 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -143,7 +143,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from stock_shelf_order a - LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number + LEFT JOIN stock_in_order b ON a.in_order_number = b.in_order_number and a.DEL_FLAG = 1 and b.DEL_FLAG = 1 From 2d424847c39c8a3947d75a170485061f8486b04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Sat, 27 Jun 2026 14:06:34 +0800 Subject: [PATCH 20/49] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/WechatMiniAppService.java | 148 ++++++++++++++++++ .../dto/wechat/WxPhoneNumberDTO.java | 14 ++ .../interfaces/facade/UserShipperAPI.java | 14 ++ .../src/main/resources/bootstrap.yml | 14 +- 4 files changed, 185 insertions(+), 5 deletions(-) create mode 100644 mhd-user-center/src/main/java/com/mhd/user/application/service/WechatMiniAppService.java create mode 100644 mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/wechat/WxPhoneNumberDTO.java diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/WechatMiniAppService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/WechatMiniAppService.java new file mode 100644 index 000000000..557d632b3 --- /dev/null +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/WechatMiniAppService.java @@ -0,0 +1,148 @@ +package com.mhd.user.application.service; + +import com.alibaba.fastjson.JSONObject; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.user.interfaces.dto.wechat.WxPhoneNumberDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 微信小程序手机号快速验证 + * appId/appSecret 在 bootstrap.yml / Nacos 中配置,不同环境配置不同值即可 + */ +@Service +@Slf4j +public class WechatMiniAppService { + + private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; + private static final String GET_PHONE_URL = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s"; + + @Value("${wechat.miniapp.appId:}") + private String appId; + + @Value("${wechat.miniapp.appSecret:}") + private String appSecret; + + /** access_token 缓存:{token, expireTime} */ + private volatile String cachedToken; + private volatile long tokenExpireTime; + + public AjaxResult wxGetPhoneNumber(WxPhoneNumberDTO dto, Long organizationId) { + if (dto == null || dto.getCode() == null || dto.getCode().isEmpty()) { + return AjaxResult.error("code 不能为空"); + } + if (appId.isEmpty() || appSecret.isEmpty()) { + return AjaxResult.error("未配置 wechat.miniapp.appId / wechat.miniapp.appSecret"); + } + + try { + String accessToken = getAccessToken(); + String body = "{\"code\":\"" + dto.getCode() + "\"}"; + String phoneJson = doPost(String.format(GET_PHONE_URL, accessToken), body); + JSONObject result = JSONObject.parseObject(phoneJson); + + int errcode = result.getIntValue("errcode"); + if (errcode != 0) { + String errmsg = result.getString("errmsg"); + log.error("微信手机号解密失败, errcode={}, errmsg={}", errcode, errmsg); + return AjaxResult.error("获取手机号失败:" + errmsg); + } + + JSONObject phoneInfo = result.getJSONObject("phone_info"); + if (phoneInfo == null) { + return AjaxResult.error("未获取到手机号信息"); + } + + JSONObject data = new JSONObject(); + data.put("phoneNumber", phoneInfo.getString("phoneNumber")); + data.put("purePhoneNumber", phoneInfo.getString("purePhoneNumber")); + data.put("countryCode", phoneInfo.getString("countryCode")); + return AjaxResult.success(data); + + } catch (ServiceException e) { + throw e; + } catch (Exception e) { + log.error("微信手机号验证异常", e); + return AjaxResult.error("微信手机号验证失败:" + e.getMessage()); + } + } + + private String getAccessToken() { + if (cachedToken != null && System.currentTimeMillis() < tokenExpireTime) { + return cachedToken; + } + synchronized (this) { + if (cachedToken != null && System.currentTimeMillis() < tokenExpireTime) { + return cachedToken; + } + String url = String.format(ACCESS_TOKEN_URL, appId, appSecret); + String response = doGet(url); + JSONObject result = JSONObject.parseObject(response); + if (result.containsKey("errcode") && result.getIntValue("errcode") != 0) { + throw new ServiceException("获取微信 access_token 失败:" + result.getString("errmsg")); + } + cachedToken = result.getString("access_token"); + int expiresIn = result.getIntValue("expires_in"); + tokenExpireTime = System.currentTimeMillis() + (expiresIn - 300) * 1000L; + return cachedToken; + } + } + + private String doGet(String urlStr) { + try { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setConnectTimeout(10000); + conn.setReadTimeout(10000); + return readResponse(conn); + } catch (Exception e) { + throw new ServiceException("微信接口请求失败:" + e.getMessage()); + } + } + + private String doPost(String urlStr, String body) { + try { + URL url = new URL(urlStr); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); + conn.setDoOutput(true); + conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); + conn.setConnectTimeout(10000); + conn.setReadTimeout(10000); + try (OutputStream os = conn.getOutputStream()) { + os.write(body.getBytes(StandardCharsets.UTF_8)); + os.flush(); + } + return readResponse(conn); + } catch (Exception e) { + throw new ServiceException("微信接口请求失败:" + e.getMessage()); + } + } + + private String readResponse(HttpURLConnection conn) throws Exception { + int code = conn.getResponseCode(); + BufferedReader reader = new BufferedReader(new InputStreamReader( + code >= 400 ? conn.getErrorStream() : conn.getInputStream(), StandardCharsets.UTF_8)); + StringBuilder sb = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + reader.close(); + if (code >= 400) { + throw new ServiceException("微信接口 HTTP " + code + ":" + sb); + } + return sb.toString(); + } +} diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/wechat/WxPhoneNumberDTO.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/wechat/WxPhoneNumberDTO.java new file mode 100644 index 000000000..1049ebef3 --- /dev/null +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/wechat/WxPhoneNumberDTO.java @@ -0,0 +1,14 @@ +package com.mhd.user.interfaces.dto.wechat; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 微信小程序手机号快速验证——请求参数 + */ +@Data +public class WxPhoneNumberDTO { + + @ApiModelProperty("wx.getPhoneNumber 返回的 code(注意:非 wx.login 的 code)") + private String code; +} diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java index 82c801b75..f070f084b 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserShipperAPI.java @@ -5,7 +5,9 @@ import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.log.annotation.Log; import com.mhd.common.log.enums.BusinessType; +import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.domain.UserShipperFeignDTO; +import com.mhd.system.api.model.LoginUser; import com.mhd.user.application.service.UserApplicationService; import com.mhd.user.application.service.UserShipperApplicationService; import com.mhd.user.domain.userAggregate.repository.todo.*; @@ -18,6 +20,7 @@ import com.mhd.common.core.web.page.TableDataInfo; import com.mhd.common.security.annotation.RepeatSubmit; import com.mhd.common.security.service.TokenService; import com.mhd.user.application.service.UserShipperMasterDataSyncService; +import com.mhd.user.application.service.WechatMiniAppService; import com.mhd.user.interfaces.dto.updateDTO.SettlementInfoUpdateDTO; import com.mhd.user.interfaces.vo.SettlementInfoQueryVo; import com.mhd.user.interfaces.vo.ShipperMasterDataSyncTimeVo; @@ -42,6 +45,8 @@ public class UserShipperAPI extends BaseController { @Resource private UserShipperMasterDataSyncService userShipperMasterDataSyncService; @Resource + private WechatMiniAppService wechatMiniAppService; + @Resource private UserApplicationService userApplicationService; @Resource private UserShipperAssember userShipperAssember; @@ -342,4 +347,13 @@ public class UserShipperAPI extends BaseController { } return AjaxResult.success(resultMap); } + + @ApiOperation("微信小程序手机号快速验证") + @PostMapping("/wxGetPhoneNumber") + public AjaxResult wxGetPhoneNumber(@RequestBody com.mhd.user.interfaces.dto.wechat.WxPhoneNumberDTO dto) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long organizationId = (loginUser != null && loginUser.getUserPo() != null) + ? loginUser.getUserPo().getOrganizationId() : null; + return wechatMiniAppService.wxGetPhoneNumber(dto, organizationId); + } } \ No newline at end of file diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index 59db9fcf4..482da423b 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -18,16 +18,16 @@ spring: cloud: nacos: discovery: -# server-addr: 127.0.0.1:8848 + server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 +# server-addr: 10.33.0.129:6010 # server-addr: 10.102.192.31:6848 # username: nacos # password: manhuoda@2023 config: -# server-addr: 127.0.0.1:8848 + server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 +# server-addr: 10.33.0.129:6010 # server-addr: 10.102.192.31:6848 # username: nacos # password: manhuoda@2023 @@ -42,4 +42,8 @@ spring: max-request-size: 50MB mybatis-plus: configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +wechat: + miniapp: + appId: wxc9dd2810a77e4e30 + appSecret: 9354ff1215a82785ef14f2355fbf2185 From c6366ef728ef99aba722e1158a4fed131735c38f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Sat, 27 Jun 2026 17:22:27 +0800 Subject: [PATCH 21/49] =?UTF-8?q?=E5=8F=B8=E6=9C=BAAPP=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=98=AF=E9=BB=98=E8=AE=A4=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/TokenLoginApplicationService.java | 5 ++++- .../mhd/auth/app/interfaces/dto/LoginDTO.java | 3 +++ .../service/UserApplicationService.java | 22 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mhd-auth/src/main/java/com/mhd/auth/app/application/service/TokenLoginApplicationService.java b/mhd-auth/src/main/java/com/mhd/auth/app/application/service/TokenLoginApplicationService.java index b45c005c0..9843203d6 100644 --- a/mhd-auth/src/main/java/com/mhd/auth/app/application/service/TokenLoginApplicationService.java +++ b/mhd-auth/src/main/java/com/mhd/auth/app/application/service/TokenLoginApplicationService.java @@ -107,11 +107,14 @@ public class TokenLoginApplicationService { //租户一级组织ID SysTenantsPo sysTenantsPo = JSON.parseObject(JSON.toJSONString(topOrganizationIdR.get("data")), SysTenantsPo.class); Long topOrganizationId = sysTenantsPo.getOrganizationId(); + // 获取用户选择的组织ID,未选则使用一级组织ID + Long selectedOrgId = loginDTO.getOrganizationId(); + Long organizationId = (selectedOrgId != null) ? selectedOrgId : topOrganizationId; //获取用户信息,组装dto UserDTO userDTO = new UserDTO(); userDTO.setUserPhone(userPhone); userDTO.setTopOrganizationId(topOrganizationId); - userDTO.setOrganizationId(topOrganizationId); + userDTO.setOrganizationId(organizationId); // 查询用户信息,查询组织下用户是否存在 R userResult = userServiceFeign.getUserByTopOrganizationUserPhone(userDTO, SecurityConstants.INNER); if (R.FAIL == userResult.getCode()) { diff --git a/mhd-auth/src/main/java/com/mhd/auth/app/interfaces/dto/LoginDTO.java b/mhd-auth/src/main/java/com/mhd/auth/app/interfaces/dto/LoginDTO.java index 4cf88930f..010a16a8f 100644 --- a/mhd-auth/src/main/java/com/mhd/auth/app/interfaces/dto/LoginDTO.java +++ b/mhd-auth/src/main/java/com/mhd/auth/app/interfaces/dto/LoginDTO.java @@ -34,4 +34,7 @@ public class LoginDTO { @ApiModelProperty(name = "APP包名") private String appMark; + @ApiModelProperty(name = "组织ID(司机选择组织,不传默认一级组织)") + private Long organizationId; + } diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index 832f860bb..4a45039b3 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1864,6 +1864,12 @@ public class UserApplicationService { wlhyDomainService.addOrEditPlatformUser1(userEntity); //同步商城用户 userMallDomainService.syncDriverUserInfo(userEntity); + //同步YMS平台员工信息 + try { + ymsDomainService.addOrEditYmsUser(userEntity); + } catch (Exception e) { + log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); + } //给用户分配默认普通角色权限 RoleDo roleDo = new RoleDo(); roleDo.setRoleCode(RoleEnum.DRIVER.getCode()); @@ -1881,6 +1887,22 @@ public class UserApplicationService { userRoleDomainService.addUserRole(userRoleDo); } } + //给用户分配默认普通用户角色(must) + RoleDo mustRoleDo = new RoleDo(); + mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); + mustRoleDo.setOrganizationId(userEntity.getOrganizationId()); + RoleEntity mustRoleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(mustRoleDo); + if (null != mustRoleEntity) { + UserRoleDo mustUserRoleDo = new UserRoleDo(); + mustUserRoleDo.setUserId(userEntity.getUserId()); + mustUserRoleDo.setRoleId(mustRoleEntity.getRoleId()); + LoginUser loginUser2 = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser2)) { + userRoleDomainService.addUserRole(mustUserRoleDo, userEntity); + } else { + userRoleDomainService.addUserRole(mustUserRoleDo); + } + } //2024年3月27日16:40:15 处理用户验证码注册,首次登录redis用户数据不更新问题 //此处根据id重新查询 return userDomainService.selectByUserId(userEntity.getUserId()); From 8f0e71fe2a55fe20ef7bfc33df267aeca05d6a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Sat, 27 Jun 2026 18:06:31 +0800 Subject: [PATCH 22/49] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E5=8D=95=E6=94=B9?= =?UTF-8?q?=E9=80=A0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/WmsServiceFeign.java | 2 +- .../api/factory/RemoteWmsFallbackFactory.java | 2 +- ...cutionStockOutOrderApplicationService.java | 2 +- .../ExecutionStockOutOrderDomainService.java | 8 +-- ...rvationStockInOrderApplicationService.java | 4 ++ .../ReservationStockInOrderDomainService.java | 45 +++++++++++++ ...vationStockOutOrderApplicationService.java | 3 + ...ReservationStockOutOrderDomainService.java | 44 +++++++++++++ .../ReservationStockOutOrderApi.java | 7 ++ .../ExecutionStockOutOrderApi.java | 2 +- .../ReservationStockInOrderApi.java | 7 ++ .../MaterialBaseInfoApplicationService.java | 64 ++++++++++++++++--- .../StockOutOrderApplicationService.java | 23 ++++--- .../facade/IHandoverTaskOrderService.java | 6 ++ .../mapper/HandoverTaskOrderMapper.java | 5 ++ .../persistence/HandoverTaskOrderImpl.java | 15 +++++ .../HandoverTaskOrderDomainService.java | 9 ++- .../entity/MaterialBaseInfo.java | 3 + .../mapper/MaterialBaseInfoMapper.java | 3 +- .../repository/po/MaterialBaseInfoPO.java | 3 + .../repository/todo/MaterialBaseInfoDO.java | 3 + .../facade/IStockShelfOrderService.java | 7 +- .../mapper/StockShelfOrderMapper.java | 6 ++ .../persistence/StockShelfOrderImpl.java | 15 +++++ .../service/StockShelfOrderDomainService.java | 14 +++- .../materialBaseInfo/MaterialBaseInfoDTO.java | 3 + .../OutMaterialDetailMapper.xml | 2 +- .../HandoverTaskOrderMapper.xml | 14 +++- .../InventoryStandingReportMapper.xml | 4 +- .../MaterialBaseInfoMapper.xml | 7 ++ .../MaterialInventoryMapper.xml | 24 +++---- .../OutOrderAbnormalMapper.xml | 2 +- .../pickingOrder/PickingOrderMapper.xml | 6 +- .../stockShelfOrder/StockShelfOrderMapper.xml | 23 +++++-- 34 files changed, 329 insertions(+), 58 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index a7a1f26fc..1c2afc65f 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -99,7 +99,7 @@ public interface WmsServiceFeign { @ApiOperation("oms取消下发单保存") @PostMapping(value = "/stockOutOrderApi/cancelExecutionOrder") - public void cancelExecutionOrder(@RequestBody StockOutOrder stockOutOrder); + public void omsCancelExecutionOrder(@RequestBody StockOutOrder stockOutOrder); @ApiOperation("oms取消下发单自动分配") @PostMapping(value = "/stockOutOrderApi/omsAutoAssign") diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java index 32c43134d..2df429128 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java @@ -74,7 +74,7 @@ public class RemoteWmsFallbackFactory implements FallbackFactory().lambda() .set(ExecutionStockOutOrder::getIssueId, null) - .set(ExecutionStockOutOrder::getIssueName, userRealName) - .set(ExecutionStockOutOrder::getIssueTime, new Date()) + .set(ExecutionStockOutOrder::getIssueName, null) + .set(ExecutionStockOutOrder::getIssueTime, null) .set(ExecutionStockOutOrder::getUpdateBy, loginUser.getUserid()) .set(ExecutionStockOutOrder::getUpdateByName, userRealName) .set(ExecutionStockOutOrder::getUpdateTime, new Date()) - .set(ExecutionStockOutOrder::getIssueStatus, 0) + .set(ExecutionStockOutOrder::getIssueStatus, 1) .in(ExecutionStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java index dceb92718..a5dd3894e 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderApplicationService.java @@ -333,6 +333,10 @@ public class ReservationStockInOrderApplicationService { return stockInOrderDomainService.issueOrder(stockInOrderDO); } + public Boolean cancelIssueOrder(ReservationStockInOrderDO stockInOrderDO){ + return stockInOrderDomainService.cancelIssueOrder(stockInOrderDO); + } + public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO){ return stockInOrderDomainService.executeAndIssue(stockInOrderDO); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 9c51d7a54..3f4df2b6f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -539,6 +539,51 @@ public class ReservationStockInOrderDomainService { return update; } + @Transactional(rollbackFor = Exception.class) + public Boolean cancelIssueOrder(ReservationStockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + + // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) + String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); + boolean update = stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(ReservationStockInOrder::getIssueId, null) + .set(ReservationStockInOrder::getIssueName, null) + .set(ReservationStockInOrder::getIssueTime, null) + .set(ReservationStockInOrder::getIssueStatus, 2) + .set(ReservationStockInOrder::getUpdateBy, loginUser.getUserid()) + .set(ReservationStockInOrder::getUpdateByName, userRealName) + .set(ReservationStockInOrder::getUpdateTime, new Date()) + .in(ReservationStockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + + //todo下发推送到入库业务单 + List inOrderIds = stockInOrderDO.getInOrderIds(); + for (Long inOrderId : inOrderIds) { + ReservationStockInOrder byId = stockInOrderService.getById(inOrderId); + String inOrderNumber = byId.getInOrderNumber(); + List list = executionStockInOrderService.list(new QueryWrapper().lambda() + .eq(ExecutionStockInOrder::getBusinessInOrderNumber, inOrderNumber) + .eq(ExecutionStockInOrder::getDelFlag, 1)); + for (ExecutionStockInOrder executionStockInOrder : list) { + String inOrderNumber1 = executionStockInOrder.getInOrderNumber(); + List materialDetails = executionInMaterialDetailService.list(new QueryWrapper().lambda() + .eq(ExecutionInMaterialDetail::getInOrderNumber, inOrderNumber1) + .eq(ExecutionInMaterialDetail::getDelFlag, 1)); + materialDetails.forEach(materialDetail -> { + executionInMaterialDetailService.update(null, new UpdateWrapper().lambda() + .set(ExecutionInMaterialDetail::getDelFlag, 2) + .eq(ExecutionInMaterialDetail::getMaterialDetailId, materialDetail.getMaterialDetailId())); + }); + executionStockInOrderService.update(null, new UpdateWrapper().lambda() + .set(ExecutionStockInOrder::getDelFlag, 2) + .eq(ExecutionStockInOrder::getInOrderId, executionStockInOrder.getInOrderId())); + } + + } + return update; + } + @Transactional(rollbackFor = Exception.class) public Boolean executeAndIssue(ReservationStockInOrderDO stockInOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java index 1d1456448..92f6e15a7 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockOutOrder/service/ReservationStockOutOrderApplicationService.java @@ -853,6 +853,9 @@ public class ReservationStockOutOrderApplicationService { public Boolean issueOrder(ReservationStockOutOrderDO stockOutOrderDO){ return stockOutOrderDomainService.issueOrder(stockOutOrderDO); } + public Boolean cancelIssueOrder(ReservationStockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.cancelIssueOrder(stockOutOrderDO); + } public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO){ return stockOutOrderDomainService.executeAndIssue(stockOutOrderDO); 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 e2e5b4b81..d5462bcdc 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 @@ -402,6 +402,50 @@ public class ReservationStockOutOrderDomainService { return update; } + @Transactional(rollbackFor = Exception.class) + public Boolean cancelIssueOrder(ReservationStockOutOrderDO stockOutOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 获取用户姓名(优先从UserPo获取,如果为空则使用realname,最后使用username作为兜底) + String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null + ? loginUser.getUserPo().getUserName() + : (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername()); + boolean update = stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(ReservationStockOutOrder::getIssueId, null) + .set(ReservationStockOutOrder::getIssueName, null) + .set(ReservationStockOutOrder::getIssueTime, null) + .set(ReservationStockOutOrder::getIssueStatus, 2) + .set(ReservationStockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(ReservationStockOutOrder::getUpdateByName, userRealName) + .set(ReservationStockOutOrder::getUpdateTime, new Date()) + .in(ReservationStockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + + //todo下发推送到wms + List inOrderIds = stockOutOrderDO.getOutOrderIds(); + + for (Long inOrderId : inOrderIds) { + ReservationStockOutOrder byId = stockOutOrderService.getById(inOrderId); + String inOrderNumber = byId.getOutOrderNumber(); + List list = executionStockOutOrderService.list(new QueryWrapper().lambda() + .eq(ExecutionStockOutOrder::getBusinessOutOrderNumber, inOrderNumber) + .eq(ExecutionStockOutOrder::getDelFlag, 1)); + list.forEach(executionStockOutOrder -> { + String outOrderNumber = executionStockOutOrder.getOutOrderNumber(); + List materialDetails = executionOutMaterialDetailService.list(new QueryWrapper().lambda() + .eq(ExecutionOutMaterialDetail::getOutOrderNumber, outOrderNumber) + .eq(ExecutionOutMaterialDetail::getDelFlag, 1)); + materialDetails.forEach(executionOutMaterialDetail -> { + executionOutMaterialDetailService.update(null, new UpdateWrapper().lambda() + .set(ExecutionOutMaterialDetail::getDelFlag, 2) + .eq(ExecutionOutMaterialDetail::getMaterialDetailId, executionOutMaterialDetail.getMaterialDetailId())); + }); + executionStockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(ExecutionStockOutOrder::getDelFlag, 2) + .eq(ExecutionStockOutOrder::getOutOrderNumber, outOrderNumber)); + }); + } + return update; + } + @Transactional(rollbackFor = Exception.class) public Boolean executeAndIssue(ReservationStockOutOrderDO stockOutOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java index 2549b15aa..634649524 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/ReservationStockOutOrder/ReservationStockOutOrderApi.java @@ -150,6 +150,13 @@ public class ReservationStockOutOrderApi extends BaseController { return AjaxResult.success(stockOutOrderApplicationService.issueOrder(stockOutOrderDO)); } + @ApiOperation("取消下发出库单") + @PostMapping(value = "/cancelIssueOrder") + public AjaxResult cancelIssueOrder(@RequestBody ReservationStockOutOrderDTO stockOutOrderDTO) { + ReservationStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + return AjaxResult.success(stockOutOrderApplicationService.cancelIssueOrder(stockOutOrderDO)); + } + @ApiOperation("下发出库单") @PostMapping(value = "/executeAndIssue") public AjaxResult executeAndIssue(@RequestBody ReservationStockOutOrderDTO stockOutOrderDTO) { diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java index 164014156..271db670f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executionStockOutOrder/ExecutionStockOutOrderApi.java @@ -155,7 +155,7 @@ public class ExecutionStockOutOrderApi extends BaseController { @PostMapping(value = "/cancelAuditState") public AjaxResult cancelAuditState(@RequestBody ExecutionStockOutOrderDTO stockOutOrderDTO) { ExecutionStockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); - return AjaxResult.success(stockOutOrderApplicationService.auditState(stockOutOrderDO)); + return AjaxResult.success(stockOutOrderApplicationService.cancelAuditState(stockOutOrderDO)); } @ApiOperation("关闭出库单") diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java index 630db6782..ca1c77ad2 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/reservationStockInOrder/ReservationStockInOrderApi.java @@ -122,6 +122,13 @@ public class ReservationStockInOrderApi extends BaseController { /** * 下发入库单 */ + @ApiOperation("取消下发入库单") + @PostMapping(value = "/cancelIssueOrder") + public AjaxResult cancelIssueOrder(@RequestBody ReservationStockInOrderDTO stockInOrderDTO) { + ReservationStockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + return AjaxResult.success(stockInOrderApplicationService.cancelIssueOrder(stockInOrderDO)); + } + @ApiOperation("下发入库单") @PostMapping(value = "/issueOrder") public AjaxResult issueOrder(@RequestBody ReservationStockInOrderDTO stockInOrderDTO) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index e74ed185d..40a4eef6c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.mhd.common.core.domain.po.UserPo; import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.enums.DictCode; @@ -54,13 +56,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -158,6 +154,8 @@ public class MaterialBaseInfoApplicationService { } } } + materialBaseInfoDO.setOrgId(String.valueOf(materialBaseInfoDO.getOrganizationId())); + materialBaseInfoDO.setOrganizationId(null); List materialBaseInfoPOS = materialBaseInfoDomainService.queryList(materialBaseInfoDO); for (MaterialBaseInfoPO materialBaseInfoPO : materialBaseInfoPOS) { //物料商品规则 @@ -557,6 +555,31 @@ public class MaterialBaseInfoApplicationService { MaterialBaseInfo matched = findExistingMaterialByShipper(row); if (matched != null) { row.setShipperId(matched.getShipperId()); + Long shipperId = matched.getShipperId(); + String customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString()); + if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List> listNc = null; + try { + listNc = objectMapper.readValue( + customerCodeNcJson, + new com.fasterxml.jackson.core.type.TypeReference>>() {} + ); + String codeStr = ""; + if (listNc != null && listNc.size() > 0) { + // 方式1:Stream拼接,逗号分隔 + codeStr = listNc.stream() + .map(map -> map.get("code")) + .filter(Objects::nonNull) // 过滤code为空 + .map(Object::toString) + .collect(Collectors.joining(",")); + row.setOrgId(codeStr); + } + // codeStr 就是拼接好的字符串 + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } if (StringUtils.isBlank(row.getShipperCode())) { row.setShipperCode(matched.getShipperCode()); } @@ -798,6 +821,31 @@ public class MaterialBaseInfoApplicationService { return; } row.setShipperId(userPo.getUserId()); + Long shipperId = userPo.getUserId(); + String customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString()); + if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List> listNc = null; + try { + listNc = objectMapper.readValue( + customerCodeNcJson, + new com.fasterxml.jackson.core.type.TypeReference>>() {} + ); + String codeStr = ""; + if (listNc != null && listNc.size() > 0) { + // 方式1:Stream拼接,逗号分隔 + codeStr = listNc.stream() + .map(map -> map.get("code")) + .filter(Objects::nonNull) // 过滤code为空 + .map(Object::toString) + .collect(Collectors.joining(",")); + row.setOrgId(codeStr); + } + // codeStr 就是拼接好的字符串 + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } if (!isValidOrgId(row.getOrganizationId()) && isValidOrgId(userPo.getOrganizationId())) { row.setOrganizationId(userPo.getOrganizationId()); } @@ -1266,4 +1314,4 @@ public class MaterialBaseInfoApplicationService { return tableDataInfo; } -} +} \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index 7008b3c42..91c190406 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -845,7 +845,10 @@ public class StockOutOrderApplicationService { public Boolean execution(String outOrderNumber){ //Boolean execution = stockOutOrderDomainService.execution(outOrderNumber); StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); - stockOutOrderDO.setOutOrderNumber(outOrderNumber); +// stockOutOrderDO.setOutOrderNumber(outOrderNumber); + List numbers = new ArrayList<>(); + numbers.add(outOrderNumber); + stockOutOrderDO.setOutOrderNumbers(numbers); Boolean b = omsAutoAssign(stockOutOrderDO); return b; } @@ -963,20 +966,20 @@ public class StockOutOrderApplicationService { List materialDetailList = cn.hutool.core.bean.BeanUtil.copyToList(outMaterialDetailList, OutMaterialDetailDO.class); List materialDetailList2 = new ArrayList<>(); for (OutMaterialDetailDO detail : materialDetailList) { - String batchRefNo = detail.getBatchRefNo(); - String sheetRefNo = detail.getSheetRefNo(); - String boxPalletNo = detail.getBoxPalletNo(); +// String batchRefNo = detail.getBatchRefNo(); +// String sheetRefNo = detail.getSheetRefNo(); +// String boxPalletNo = detail.getBoxPalletNo(); Long materialBaseInfoId = detail.getMaterialBaseInfoId(); Long warehouseId = detail.getWarehouseId(); List materialInventories = materialInventoryMapper.selectList(new QueryWrapper().lambda() - .eq(MaterialInventory::getBatchRefNo, batchRefNo) - .eq(MaterialInventory::getSheetRefNo, sheetRefNo) - .eq(MaterialInventory::getBoxPalletNo, boxPalletNo) +// .eq(MaterialInventory::getBatchRefNo, batchRefNo) +// .eq(MaterialInventory::getSheetRefNo, sheetRefNo) +// .eq(MaterialInventory::getBoxPalletNo, boxPalletNo) .eq(MaterialInventory::getWarehouseId, warehouseId) .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId)); - if (materialInventories == null || materialInventories.isEmpty()) { - throw new ServiceException("库存不存在:" + batchRefNo + " " + sheetRefNo + " " + boxPalletNo); - } +// if (materialInventories == null || materialInventories.isEmpty()) { +// throw new ServiceException("库存不存在:" + batchRefNo + " " + sheetRefNo + " " + boxPalletNo); +// } BigDecimal remainingQuantity = detail.getQuantity(); // 计划数量 for (MaterialInventory materialInventory : materialInventories) { diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java index 7e44d5aec..1909f7ae8 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java @@ -44,4 +44,10 @@ public interface IHandoverTaskOrderService extends IService boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO); public void updateOmsOrder(String orderNumber, Integer status); + + public void updateOmsExecutionOrder(String orderNumber, Integer status); + + public Integer getExecutionRkCount(String orderNumber); + + public String getBusinessOrdernumber(String orderNumber); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java index 7f3ccd086..0af21184d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java @@ -23,4 +23,9 @@ public interface HandoverTaskOrderMapper extends BaseMapper public void updateOmsOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status); + public void updateOmsExecutionOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status); + + public Integer getExecutionRkCount(@Param("orderNumber") String orderNumber); + + public String getBusinessOrdernumber(@Param("orderNumber") String orderNumber); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java index e379d06e9..58b9e34fe 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java @@ -94,6 +94,21 @@ public class HandoverTaskOrderImpl extends ServiceImpl 0) { + if (businessOrdernumber != null) handoverTaskOrderService.updateOmsOrder(businessOrdernumber,5); + } else { + if (businessOrdernumber != null) handoverTaskOrderService.updateOmsOrder(businessOrdernumber,4); + } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java index 6610535ca..127ea97b2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java @@ -237,4 +237,7 @@ public class MaterialBaseInfo extends BaseVOEntity { @ApiModelProperty(name = "单位") private String unit; + @ApiModelProperty(name = "组织(多个用,分开)") + private String orgId; + } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java index 7a4ef0737..ea427d695 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java @@ -25,4 +25,5 @@ public interface MaterialBaseInfoMapper extends BaseMapper List selectBatchByIds(@Param("materialBaseInfoIds") List materialBaseInfoIds); -} + String getCustomerCodeNcJson(@Param("actualInvoiceCustomerId") String actualInvoiceCustomerId); +} \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java index 19953912e..a07dbd095 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java @@ -286,4 +286,7 @@ public class MaterialBaseInfoPO extends BaseVOEntity { @ApiModelProperty(name = "单位") private String unit; + + @ApiModelProperty(name = "组织(多个用,分开)") + private String orgId; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java index 941462c72..4f12be185 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java @@ -259,4 +259,7 @@ public class MaterialBaseInfoDO extends BaseVOEntity { @ApiModelProperty(name = "单位") private String unit; + + @ApiModelProperty(name = "组织(多个用,分开)") + private String orgId; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java index 37680cb5a..94d73f025 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java @@ -49,9 +49,14 @@ public interface IStockShelfOrderService extends IService */ public StockShelfOrderPO getInfo(Long shelfOrderId); - public void updateOmsOrder(String orderNumber, Integer status, BigDecimal shelvesQuantity); + public Integer getExecutionCount(String orderNumber); + + public String getBusinessOrderNumber(String orderNumber); + + public void updateOmsExecutionOrder(String orderNumber, Integer status, BigDecimal shelvesQuantity); + public void updateOmsReserveOrder(String orderNumber, BigDecimal shelvesQuantity); public void updateOmsDocument(BigDecimal shelvesQuantity, BigDecimal totalNetWeight, String omsInMaterialDetail); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java index ae5c6912a..65337a867 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java @@ -24,6 +24,12 @@ public interface StockShelfOrderMapper extends BaseMapper public void updateOmsOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status, @Param("shelvesQuantity") BigDecimal shelvesQuantity); + public Integer getExecutionCount(@Param("orderNumber") String orderNumber); + + public String getBusinessOrderNumber(@Param("orderNumber") String orderNumber); + + public void updateOmsExecutionOrder(@Param("orderNumber") String orderNumber, @Param("status") Integer status, @Param("shelvesQuantity") BigDecimal shelvesQuantity); + public void updateOmsReserveOrder(@Param("orderNumber") String orderNumber, @Param("shelvesQuantity") BigDecimal shelvesQuantity); void updateOmsDocument(@Param("shelvesQuantity") BigDecimal shelvesQuantity, @Param("totalNetWeight") BigDecimal totalNetWeight, @Param("omsInMaterialDetail") String omsInMaterialDetail); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java index 7f4e73b5a..1d15b18dd 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java @@ -115,6 +115,21 @@ public class StockShelfOrderImpl extends ServiceImpl 0) { + if (businessOrderNumber != null) stockShelfOrderService.updateOmsOrder(businessOrderNumber, 5, + shelvesQuantity == null ? null : shelvesQuantity); + } else { + if (businessOrderNumber != null) stockShelfOrderService.updateOmsOrder(businessOrderNumber, 4, + shelvesQuantity == null ? null : shelvesQuantity); + } + if (businessOrderNumber != null) stockShelfOrderService.updateOmsReserveOrder(businessOrderNumber, shelvesQuantity == null ? null : shelvesQuantity); return true; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java index 3a14c679e..94f769e21 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java @@ -311,4 +311,7 @@ public class MaterialBaseInfoDTO extends BaseVOEntity { @ApiModelProperty(name = "单位") private String unit; + + @ApiModelProperty(name = "组织(多个用,分开)") + private String orgId; } \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml index c614da81d..f73d0359a 100644 --- a/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml @@ -361,7 +361,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from out_material_detail a - left join stock_out_order b on a.out_order_number = b.out_order_number + left join stock_out_order b on a.out_order_number = b.out_order_number and b.del_flag = 1 and a.del_flag = 1 diff --git a/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml b/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml index 4705ba9f3..b4c115f9e 100644 --- a/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml @@ -151,6 +151,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update "NGWL_TEST_OMS".RESERVATION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} + update "NGWL_TEST_OMS".RESERVATION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + + + update "NGWL_TEST_OMS".EXECUTION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml index f4b8c1ecc..d2e2ecbb8 100644 --- a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml @@ -147,7 +147,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SUM( omd.quantity ) AS material_quantity FROM out_material_detail omd - LEFT JOIN stock_out_order soo ON soo.out_order_number = omd.out_order_number + LEFT JOIN stock_out_order soo ON soo.out_order_number = omd.out_order_number and omd.del_flag = 1 and soo.del_flag = 1 WHERE soo.STATUS IN ( 7, 8 ) GROUP BY @@ -278,7 +278,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" rmd.check_quantity AS work_quantity FROM out_material_detail rmd - LEFT JOIN stock_out_order sio ON sio.out_order_number = rmd.out_order_number + LEFT JOIN stock_out_order sio ON sio.out_order_number = rmd.out_order_number and sio.del_flag = 1 and rmd.del_flag = 1 WHERE sio.STATUS IN ( 7, 8 ) diff --git a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml index b0794e3b5..6ea847f8b 100644 --- a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml @@ -107,6 +107,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.organization_id like concat('%', #{organizationId}, '%') + + and a.org_id like concat('%', #{orgId}, '%') + and a.material_base_info_id = #{materialBaseInfoId} @@ -325,5 +328,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index eb7756062..4c7cad0c4 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -818,7 +818,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM picking_material_detail c LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER - left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER + left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 AND d.warehouse_id = a.warehouse_id @@ -834,7 +834,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY FROM OUT_MATERIAL_DETAIL c - LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER + LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1 LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER WHERE d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12) @@ -871,7 +871,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT MAX(c.update_time) FROM picking_material_detail c LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER - left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER + left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 AND d.warehouse_id = a.warehouse_id @@ -882,7 +882,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ( SELECT MAX(c.update_time) FROM OUT_MATERIAL_DETAIL c - LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER + LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and d.del_flag = 1 LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER WHERE d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12) @@ -900,7 +900,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT MAX(c.update_time) FROM picking_material_detail c LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER - left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER + left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 AND d.warehouse_id = a.warehouse_id @@ -911,7 +911,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL(( SELECT MAX(c.update_time) FROM OUT_MATERIAL_DETAIL c - LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER + LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and d.del_flag = 1 LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER WHERE d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12) @@ -1082,7 +1082,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM picking_material_detail c LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER - left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER + left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 AND d.warehouse_id = a.warehouse_id @@ -1102,7 +1102,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM picking_material_detail c LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER - left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER + left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 AND d.warehouse_id = a.warehouse_id @@ -1128,7 +1128,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY FROM OUT_MATERIAL_DETAIL c - LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER + LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1 LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER WHERE d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12) @@ -1152,7 +1152,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SUM(c.CHECK_QUANTITY) AS CHECK_QUANTITY FROM OUT_MATERIAL_DETAIL c - LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER + LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1 LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER WHERE d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12) @@ -1201,7 +1201,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT MAX(c.update_time) FROM picking_material_detail c LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER - left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER + left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 AND d.warehouse_id = a.warehouse_id @@ -1212,7 +1212,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL(( SELECT MAX(c.update_time) FROM OUT_MATERIAL_DETAIL c - LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER + LEFT JOIN STOCK_OUT_ORDER d ON c.OUT_ORDER_NUMBER = d.OUT_ORDER_NUMBER and c.del_flag = 1 and d.del_flag = 1 LEFT JOIN HANDOVER_TASK_ORDER e ON d.OUT_ORDER_NUMBER = e.ORDER_NUMBER WHERE d.CHECK_STATUS in (2,3) and e.STATUS = 1 and d.STATUS in (8,12) diff --git a/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml b/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml index 1244b2790..0a3c003a5 100644 --- a/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml +++ b/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml @@ -112,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from out_order_abnormal a - left join stock_out_order b on a.out_order_number = b.out_order_number + left join stock_out_order b on a.out_order_number = b.out_order_number and b.del_flag = 1 diff --git a/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml b/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml index 19ef51784..4b1d1e8c9 100644 --- a/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml @@ -144,7 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ,b.need_Declare_Flag from picking_order a - left join STOCK_OUT_ORDER b ON a.order_number = b.out_Order_number + left join STOCK_OUT_ORDER b ON a.order_number = b.out_Order_number and b.del_flag = 1 @@ -156,7 +156,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from picking_order a - left join stock_out_order b on a.order_number = b.out_order_number + left join stock_out_order b on a.order_number = b.out_order_number and b.del_flag = 1 WHERE a.picking_order_id = #{pickingOrderId} @@ -174,7 +174,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from picking_order a - left join stock_out_order b on a.order_number = b.out_order_number + left join stock_out_order b on a.order_number = b.out_order_number and b.del_flag = 1 WHERE a.order_number = #{orderNumber} diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index 38469fe99..ded928f2d 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -151,34 +151,43 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ORDER BY a.create_time DESC + + - update "NGWL_TEST_OMS".RESERVATION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} + update "NGWL_TEST_OMS".RESERVATION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + + + update "NGWL_TEST_OMS".EXECUTION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 - update "NGWL_TEST_OMS".RESERVE_STOCK_IN_ORDER set in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} + update "NGWL_TEST_OMS".RESERVE_STOCK_IN_ORDER set in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 - update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP where MATERIAL_DETAIL_ID = #{omsInMaterialDetail} + update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP where MATERIAL_DETAIL_ID = #{omsInMaterialDetail} and DELETE_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_OUT_MATERIAL_DETAIL set INBOUND_ITEMS = #{checkQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight} ,STORAGE_TIME = CURRENT_TIMESTAMP - where OUT_ORDER_NUMBER = #{outOrderNumber} and UNIQUE_ID = #{uniqueId} + where OUT_ORDER_NUMBER = #{outOrderNumber} and UNIQUE_ID = #{uniqueId} and DELETE_FLAG = 1 - update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP + update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP and DELETE_FLAG = 1 where LOT_NO = #{lotNumber} update "NGWL_TEST_OMS".RESERVATION_MATERIAL_INVENTORY set INVENTORY_QUANTITY = #{quantity}, ALLOCATION_QUANTITY= #{quantity} - where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNumber} + where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNumber} and DELETE_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_MATERIAL_INVENTORY set INVENTORY_QUANTITY = INVENTORY_QUANTITY - #{checkQuantity}, ALLOCATION_QUANTITY= ALLOCATION_QUANTITY - #{checkQuantity} - where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNo} + where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNo} and DELETE_FLAG = 1 + SELECT + SETTLEMENT_CURRENCY + FROM NGWL_TEST_USER.USER_SHIPPER + WHERE del_flag = 1 + AND USER_ID = #{id} limit 1 + + \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java index b1213a20f..4b26a1140 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java @@ -255,5 +255,7 @@ public class MaterialInventoryQueryListDO extends MaterialBaseDO { /** 为 true 时 SQL 排除库存数量为 0(含 null 视为 0) */ private Boolean excludeZeroInventoryQuantity; - + private String expiryDateStr; + private String productionDateStr; + private String updateTimeStr; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java index 52af94400..1cbe42c5e 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -598,6 +598,7 @@ public class OutMaterialDetailImpl extends ServiceImpl Date: Mon, 29 Jun 2026 11:07:57 +0800 Subject: [PATCH 26/49] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=B7=BB=E5=8A=A0=E7=BB=84=E7=BB=87=E4=BF=A1?= =?UTF-8?q?=E6=81=AF;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MaterialBaseInfoApplicationService.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java index 40a4eef6c..c30840c5f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -249,6 +249,31 @@ public class MaterialBaseInfoApplicationService { } } } + Long shipperId = materialBaseInfoDO.getShipperId(); + String customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString()); + if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List> listNc = null; + try { + listNc = objectMapper.readValue( + customerCodeNcJson, + new com.fasterxml.jackson.core.type.TypeReference>>() {} + ); + String codeStr = ""; + if (listNc != null && listNc.size() > 0) { + // 方式1:Stream拼接,逗号分隔 + codeStr = listNc.stream() + .map(map -> map.get("code")) + .filter(Objects::nonNull) // 过滤code为空 + .map(Object::toString) + .collect(Collectors.joining(",")); + materialBaseInfoDO.setOrgId(codeStr); + } + // codeStr 就是拼接好的字符串 + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } Long materialBaseInfoId = materialBaseInfoDomainService.insert(materialBaseInfoDO); materialBaseInfoDO.setMaterialBaseInfoId(materialBaseInfoId); //商品规则 @@ -280,6 +305,31 @@ public class MaterialBaseInfoApplicationService { * 修改物料基础信息 */ public Boolean update(MaterialBaseInfoDO materialBaseInfoDO) { + Long shipperId = materialBaseInfoDO.getShipperId(); + String customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString()); + if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) { + ObjectMapper objectMapper = new ObjectMapper(); + List> listNc = null; + try { + listNc = objectMapper.readValue( + customerCodeNcJson, + new com.fasterxml.jackson.core.type.TypeReference>>() {} + ); + String codeStr = ""; + if (listNc != null && listNc.size() > 0) { + // 方式1:Stream拼接,逗号分隔 + codeStr = listNc.stream() + .map(map -> map.get("code")) + .filter(Objects::nonNull) // 过滤code为空 + .map(Object::toString) + .collect(Collectors.joining(",")); + materialBaseInfoDO.setOrgId(codeStr); + } + // codeStr 就是拼接好的字符串 + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } materialBaseInfoDomainService.update(materialBaseInfoDO); Long materialBaseInfoId = materialBaseInfoDO.getMaterialBaseInfoId(); // 商品/公共/仓控 子表:Feign/前端常只带业务字段、未带子表主键,需按 material_base_info_id 补全后再 update,否则 WHERE xxx_id=? 为 null 导致 Updates: 0 From 374b26d02394636dcb9de4d13532ffebcce3beae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 14:34:38 +0800 Subject: [PATCH 27/49] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=BB=98=E8=AE=A4=E8=A7=92=E8=89=B2BUG=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserApplicationService.java | 51 +++++++------------ .../mhd/user/interfaces/facade/UserAPI.java | 28 ++++++++++ 2 files changed, 46 insertions(+), 33 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index 4a45039b3..040da7080 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1870,39 +1870,6 @@ public class UserApplicationService { } catch (Exception e) { log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); } - //给用户分配默认普通角色权限 - RoleDo roleDo = new RoleDo(); - roleDo.setRoleCode(RoleEnum.DRIVER.getCode()); - roleDo.setOrganizationId(userEntity.getOrganizationId()); - RoleEntity roleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(roleDo); - if (null != roleEntity) { - UserRoleDo userRoleDo = new UserRoleDo(); - userRoleDo.setUserId(userEntity.getUserId()); - userRoleDo.setRoleId(roleEntity.getRoleId()); - //判断是否存在当前登录人 - LoginUser loginUser = SecurityUtils.getLoginUser(); - if (ObjectUtil.isNull(loginUser)) { - userRoleDomainService.addUserRole(userRoleDo,userEntity); - }else { - userRoleDomainService.addUserRole(userRoleDo); - } - } - //给用户分配默认普通用户角色(must) - RoleDo mustRoleDo = new RoleDo(); - mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); - mustRoleDo.setOrganizationId(userEntity.getOrganizationId()); - RoleEntity mustRoleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(mustRoleDo); - if (null != mustRoleEntity) { - UserRoleDo mustUserRoleDo = new UserRoleDo(); - mustUserRoleDo.setUserId(userEntity.getUserId()); - mustUserRoleDo.setRoleId(mustRoleEntity.getRoleId()); - LoginUser loginUser2 = SecurityUtils.getLoginUser(); - if (ObjectUtil.isNull(loginUser2)) { - userRoleDomainService.addUserRole(mustUserRoleDo, userEntity); - } else { - userRoleDomainService.addUserRole(mustUserRoleDo); - } - } //2024年3月27日16:40:15 处理用户验证码注册,首次登录redis用户数据不更新问题 //此处根据id重新查询 return userDomainService.selectByUserId(userEntity.getUserId()); @@ -1956,6 +1923,24 @@ public class UserApplicationService { userDO.setDriverEnterpriseCode(driverEnterpriseCode); UserPo userPo = registerAddUser(userDO); + // 承运企业添加司机,补分配driver角色 + RoleDo driverRoleDo = new RoleDo(); + driverRoleDo.setRoleCode(RoleEnum.DRIVER.getCode()); + driverRoleDo.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + RoleEntity driverRoleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(driverRoleDo); + if (null != driverRoleEntity) { + UserRoleDo driverUserRoleDo = new UserRoleDo(); + driverUserRoleDo.setUserId(userPo.getUserId()); + driverUserRoleDo.setRoleId(driverRoleEntity.getRoleId()); + userRoleDomainService.addUserRole(driverUserRoleDo); + // 更新user表role_code追加driver + UserDO updateRoleDO = new UserDO(); + updateRoleDO.setUserId(userPo.getUserId()); + updateRoleDO.setRoleCode((userPo.getRoleCode() != null ? userPo.getRoleCode() + "," : "") + RoleEnum.DRIVER.getCode()); + updateRoleDO.setRoleName((userPo.getRoleName() != null ? userPo.getRoleName() + "," : "") + RoleEnum.DRIVER.getName()); + userDomainService.updateUser(updateRoleDO); + } + //20240314 运输企业添加司机,默认生成一条空的司机信息方便列表查询 UserDriverDO userDriverDO = new UserDriverDO(); userDriverDO.setUserId(userPo.getUserId()); diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java index ca42936d6..524d19793 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java @@ -12,9 +12,13 @@ import com.mhd.common.log.enums.BusinessType; import com.mhd.user.application.service.UserApplicationService; import com.mhd.user.application.service.UserDriverApplicationService; import com.mhd.user.application.service.UserShipperApplicationService; +import com.mhd.user.domain.roleAggregate.repository.todo.RoleDo; import com.mhd.user.domain.userAggregate.repository.po.UserDocumentWarningQueryPo; import com.mhd.user.domain.userAggregate.repository.todo.*; import com.mhd.user.domain.userAggregate.service.UserRoleDomainService; +import com.mhd.user.domain.roleAggregate.service.RoleDomainService; +import com.mhd.user.domain.roleAggregate.entity.RoleEntity; +import com.mhd.common.core.enums.RoleEnum; import com.mhd.user.interfaces.assember.*; import com.mhd.user.interfaces.dto.addDTO.*; import com.mhd.user.interfaces.dto.queryDTO.UserDataPermissionQueryDTO; @@ -75,6 +79,9 @@ public class UserAPI extends BaseController { @Autowired private UserRoleDomainService userRoleDomainService; + @Resource + private RoleDomainService roleDomainService; + @Resource private TokenService tokenService; @@ -335,6 +342,27 @@ public class UserAPI extends BaseController { if (ObjectUtil.isNotNull(userPo)) { sysUserVo.setUserid(userPo.getUserId()); } + // 小程序注册用户默认分配普通用户角色(must) + try { + RoleDo mustRoleDo = new RoleDo(); + mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); + mustRoleDo.setOrganizationId(userPo.getOrganizationId()); + RoleEntity mustRoleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(mustRoleDo); + if (null != mustRoleEntity) { + UserRoleDo mustUserRoleDo = new UserRoleDo(); + mustUserRoleDo.setUserId(userPo.getUserId()); + mustUserRoleDo.setRoleId(mustRoleEntity.getRoleId()); + userRoleDomainService.addUserRole(mustUserRoleDo); + // 更新user表role_code和role_name + UserDO updateRoleDO = new UserDO(); + updateRoleDO.setUserId(userPo.getUserId()); + updateRoleDO.setRoleCode(RoleEnum.MUST.getCode()); + updateRoleDO.setRoleName(RoleEnum.MUST.getName()); + userApplicationService.updateUser(updateRoleDO); + } + } catch (Exception e) { + log.warn("小程序注册分配默认角色失败: {}", e.getMessage()); + } sysUserVo.setUserPo(userPo); return R.ok(sysUserVo, "操作成功"); } From 287575c622eaba683995b3a58ff25539d3e9e386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 14:55:33 +0800 Subject: [PATCH 28/49] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=BB=98=E8=AE=A4=E8=A7=92=E8=89=B2BUG=E4=BF=AE?= =?UTF-8?q?=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/service/UserApplicationService.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index 040da7080..a0862fedd 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1861,9 +1861,17 @@ public class UserApplicationService { } UserEntity userEntity = userDomainService.addUser(userDO); //同步网货平台员工信息 - wlhyDomainService.addOrEditPlatformUser1(userEntity); + try { + wlhyDomainService.addOrEditPlatformUser1(userEntity); + } catch (Exception e) { + log.warn("同步网货平台员工信息失败,但不影响用户保存: {}", e.getMessage()); + } //同步商城用户 - userMallDomainService.syncDriverUserInfo(userEntity); + try { + userMallDomainService.syncDriverUserInfo(userEntity); + } catch (Exception e) { + log.warn("同步商城用户失败,但不影响用户保存: {}", e.getMessage()); + } //同步YMS平台员工信息 try { ymsDomainService.addOrEditYmsUser(userEntity); From 2516d86226a4db0163b1e2b48bb8e23e9a818206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 15:04:15 +0800 Subject: [PATCH 29/49] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=BB=98=E8=AE=A4=E8=A7=92=E8=89=B2=E4=BF=A1=E6=81=AF?= =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserApplicationService.java | 38 ++++++++++++++++--- .../mhd/user/interfaces/facade/UserAPI.java | 28 +------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index a0862fedd..f110fb4f1 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1878,6 +1878,33 @@ public class UserApplicationService { } catch (Exception e) { log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); } + //给小程序注册用户分配默认普通用户角色(must) + try { + RoleDo mustRoleDo = new RoleDo(); + mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); + mustRoleDo.setOrganizationId(userEntity.getOrganizationId()); + RoleEntity mustRoleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(mustRoleDo); + if (null != mustRoleEntity) { + UserRoleDo mustUserRoleDo = new UserRoleDo(); + mustUserRoleDo.setUserId(userEntity.getUserId()); + mustUserRoleDo.setRoleId(mustRoleEntity.getRoleId()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + userRoleDomainService.addUserRole(mustUserRoleDo, userEntity); + } else { + userRoleDomainService.addUserRole(mustUserRoleDo); + } + userDO.setRoleCode(RoleEnum.MUST.getCode()); + userDO.setRoleName(RoleEnum.MUST.getName()); + } + } catch (Exception e) { + log.warn("分配默认角色失败,但不影响用户保存: {}", e.getMessage()); + } + //更新user表role_code和role_name(用mapper直接更新,避免需要loginUser) + userMapper.update(null, new LambdaUpdateWrapper() + .set(UserEntity::getRoleCode, userDO.getRoleCode()) + .set(UserEntity::getRoleName, userDO.getRoleName()) + .eq(UserEntity::getUserId, userEntity.getUserId())); //2024年3月27日16:40:15 处理用户验证码注册,首次登录redis用户数据不更新问题 //此处根据id重新查询 return userDomainService.selectByUserId(userEntity.getUserId()); @@ -1941,12 +1968,11 @@ public class UserApplicationService { driverUserRoleDo.setUserId(userPo.getUserId()); driverUserRoleDo.setRoleId(driverRoleEntity.getRoleId()); userRoleDomainService.addUserRole(driverUserRoleDo); - // 更新user表role_code追加driver - UserDO updateRoleDO = new UserDO(); - updateRoleDO.setUserId(userPo.getUserId()); - updateRoleDO.setRoleCode((userPo.getRoleCode() != null ? userPo.getRoleCode() + "," : "") + RoleEnum.DRIVER.getCode()); - updateRoleDO.setRoleName((userPo.getRoleName() != null ? userPo.getRoleName() + "," : "") + RoleEnum.DRIVER.getName()); - userDomainService.updateUser(updateRoleDO); + // 更新user表role_code和role_name为driver(承运企业司机不需要must) + userMapper.update(null, new LambdaUpdateWrapper() + .set(UserEntity::getRoleCode, RoleEnum.DRIVER.getCode()) + .set(UserEntity::getRoleName, RoleEnum.DRIVER.getName()) + .eq(UserEntity::getUserId, userPo.getUserId())); } //20240314 运输企业添加司机,默认生成一条空的司机信息方便列表查询 diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java index 524d19793..29bf15f6e 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java @@ -16,9 +16,7 @@ import com.mhd.user.domain.roleAggregate.repository.todo.RoleDo; import com.mhd.user.domain.userAggregate.repository.po.UserDocumentWarningQueryPo; import com.mhd.user.domain.userAggregate.repository.todo.*; import com.mhd.user.domain.userAggregate.service.UserRoleDomainService; -import com.mhd.user.domain.roleAggregate.service.RoleDomainService; -import com.mhd.user.domain.roleAggregate.entity.RoleEntity; -import com.mhd.common.core.enums.RoleEnum; + import com.mhd.user.interfaces.assember.*; import com.mhd.user.interfaces.dto.addDTO.*; import com.mhd.user.interfaces.dto.queryDTO.UserDataPermissionQueryDTO; @@ -79,9 +77,6 @@ public class UserAPI extends BaseController { @Autowired private UserRoleDomainService userRoleDomainService; - @Resource - private RoleDomainService roleDomainService; - @Resource private TokenService tokenService; @@ -342,27 +337,6 @@ public class UserAPI extends BaseController { if (ObjectUtil.isNotNull(userPo)) { sysUserVo.setUserid(userPo.getUserId()); } - // 小程序注册用户默认分配普通用户角色(must) - try { - RoleDo mustRoleDo = new RoleDo(); - mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); - mustRoleDo.setOrganizationId(userPo.getOrganizationId()); - RoleEntity mustRoleEntity = roleDomainService.selectByOrganizationIdAndRoleCode(mustRoleDo); - if (null != mustRoleEntity) { - UserRoleDo mustUserRoleDo = new UserRoleDo(); - mustUserRoleDo.setUserId(userPo.getUserId()); - mustUserRoleDo.setRoleId(mustRoleEntity.getRoleId()); - userRoleDomainService.addUserRole(mustUserRoleDo); - // 更新user表role_code和role_name - UserDO updateRoleDO = new UserDO(); - updateRoleDO.setUserId(userPo.getUserId()); - updateRoleDO.setRoleCode(RoleEnum.MUST.getCode()); - updateRoleDO.setRoleName(RoleEnum.MUST.getName()); - userApplicationService.updateUser(updateRoleDO); - } - } catch (Exception e) { - log.warn("小程序注册分配默认角色失败: {}", e.getMessage()); - } sysUserVo.setUserPo(userPo); return R.ok(sysUserVo, "操作成功"); } From b51bc178384110f773872aa7d2364322afdb8381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 15:27:11 +0800 Subject: [PATCH 30/49] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=90=8C=E6=AD=A5YMS=E7=94=A8=E6=88=B7BUG=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserApplicationService.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index f110fb4f1..8e66812ac 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1872,13 +1872,8 @@ public class UserApplicationService { } catch (Exception e) { log.warn("同步商城用户失败,但不影响用户保存: {}", e.getMessage()); } - //同步YMS平台员工信息 - try { - ymsDomainService.addOrEditYmsUser(userEntity); - } catch (Exception e) { - log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); - } //给小程序注册用户分配默认普通用户角色(must) + userEntity.setUserPassword("Aa123456"); // YMS同步需要密码 try { RoleDo mustRoleDo = new RoleDo(); mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); @@ -1896,6 +1891,8 @@ public class UserApplicationService { } userDO.setRoleCode(RoleEnum.MUST.getCode()); userDO.setRoleName(RoleEnum.MUST.getName()); + userEntity.setRoleCode(RoleEnum.MUST.getCode()); + userEntity.setRoleName(RoleEnum.MUST.getName()); } } catch (Exception e) { log.warn("分配默认角色失败,但不影响用户保存: {}", e.getMessage()); @@ -1905,6 +1902,12 @@ public class UserApplicationService { .set(UserEntity::getRoleCode, userDO.getRoleCode()) .set(UserEntity::getRoleName, userDO.getRoleName()) .eq(UserEntity::getUserId, userEntity.getUserId())); + //同步YMS平台员工信息(放在角色分配之后,确保roleCode已设置) + try { + ymsDomainService.addOrEditYmsUser(userEntity); + } catch (Exception e) { + log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); + } //2024年3月27日16:40:15 处理用户验证码注册,首次登录redis用户数据不更新问题 //此处根据id重新查询 return userDomainService.selectByUserId(userEntity.getUserId()); From 0497d8e96ea25d4b1f88d86bc521d4421e4aef46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 15:32:48 +0800 Subject: [PATCH 31/49] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=90=8C=E6=AD=A5YMS=E7=94=A8=E6=88=B7BUG=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserApplicationService.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index 8e66812ac..4a147a23e 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1860,20 +1860,8 @@ public class UserApplicationService { userDO.setUserName("用户" + userDO.getUserPhone().substring(userDO.getUserPhone().length() - 4)); } UserEntity userEntity = userDomainService.addUser(userDO); - //同步网货平台员工信息 - try { - wlhyDomainService.addOrEditPlatformUser1(userEntity); - } catch (Exception e) { - log.warn("同步网货平台员工信息失败,但不影响用户保存: {}", e.getMessage()); - } - //同步商城用户 - try { - userMallDomainService.syncDriverUserInfo(userEntity); - } catch (Exception e) { - log.warn("同步商城用户失败,但不影响用户保存: {}", e.getMessage()); - } //给小程序注册用户分配默认普通用户角色(must) - userEntity.setUserPassword("Aa123456"); // YMS同步需要密码 + userEntity.setUserPassword("Aa123456"); // 三方同步需要密码 try { RoleDo mustRoleDo = new RoleDo(); mustRoleDo.setRoleCode(RoleEnum.MUST.getCode()); @@ -1890,9 +1878,9 @@ public class UserApplicationService { userRoleDomainService.addUserRole(mustUserRoleDo); } userDO.setRoleCode(RoleEnum.MUST.getCode()); - userDO.setRoleName(RoleEnum.MUST.getName()); + userDO.setRoleName(mustRoleEntity.getRoleName()); userEntity.setRoleCode(RoleEnum.MUST.getCode()); - userEntity.setRoleName(RoleEnum.MUST.getName()); + userEntity.setRoleName(mustRoleEntity.getRoleName()); } } catch (Exception e) { log.warn("分配默认角色失败,但不影响用户保存: {}", e.getMessage()); @@ -1902,7 +1890,17 @@ public class UserApplicationService { .set(UserEntity::getRoleCode, userDO.getRoleCode()) .set(UserEntity::getRoleName, userDO.getRoleName()) .eq(UserEntity::getUserId, userEntity.getUserId())); - //同步YMS平台员工信息(放在角色分配之后,确保roleCode已设置) + //同步三方平台(放在角色分配之后,确保roleCode已设置) + try { + wlhyDomainService.addOrEditPlatformUser1(userEntity); + } catch (Exception e) { + log.warn("同步网货平台员工信息失败,但不影响用户保存: {}", e.getMessage()); + } + try { + userMallDomainService.syncDriverUserInfo(userEntity); + } catch (Exception e) { + log.warn("同步商城用户失败,但不影响用户保存: {}", e.getMessage()); + } try { ymsDomainService.addOrEditYmsUser(userEntity); } catch (Exception e) { From d982cc41c31dc3529969ce08beaf96de3b53dbf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 15:47:24 +0800 Subject: [PATCH 32/49] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=90=8C=E6=AD=A5YMS=E7=94=A8=E6=88=B7BUG=E4=BF=AE?= =?UTF-8?q?=E6=94=B91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mhd/user/application/service/UserApplicationService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index 4a147a23e..acf878138 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1902,6 +1902,10 @@ public class UserApplicationService { log.warn("同步商城用户失败,但不影响用户保存: {}", e.getMessage()); } try { + // 截断avatar URL(YMS的avatar列长度有限,去掉OSS签名参数) + if (userEntity.getAvatar() != null && userEntity.getAvatar().contains("?")) { + userEntity.setAvatar(userEntity.getAvatar().substring(0, userEntity.getAvatar().indexOf("?"))); + } ymsDomainService.addOrEditYmsUser(userEntity); } catch (Exception e) { log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); From 4afe92902094409f6b751d33ba0b074409f92b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 29 Jun 2026 17:21:09 +0800 Subject: [PATCH 33/49] =?UTF-8?q?APP=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserApplicationService.java | 18 +++++---- .../appMenu/AppMenuApplicationService.java | 38 ++++++++++++++++++- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index acf878138..3ded3381e 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -1901,14 +1901,18 @@ public class UserApplicationService { } catch (Exception e) { log.warn("同步商城用户失败,但不影响用户保存: {}", e.getMessage()); } - try { - // 截断avatar URL(YMS的avatar列长度有限,去掉OSS签名参数) - if (userEntity.getAvatar() != null && userEntity.getAvatar().contains("?")) { - userEntity.setAvatar(userEntity.getAvatar().substring(0, userEntity.getAvatar().indexOf("?"))); + // 只有组织开启园区(排队)才同步YMS + Integer isQueue = userMapper.getOrdIsQueue(userEntity.getOrganizationId()); + if (isQueue != null && isQueue == 1) { + try { + // 截断avatar URL(YMS的avatar列长度有限,去掉OSS签名参数) + if (userEntity.getAvatar() != null && userEntity.getAvatar().contains("?")) { + userEntity.setAvatar(userEntity.getAvatar().substring(0, userEntity.getAvatar().indexOf("?"))); + } + ymsDomainService.addOrEditYmsUser(userEntity); + } catch (Exception e) { + log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); } - ymsDomainService.addOrEditYmsUser(userEntity); - } catch (Exception e) { - log.warn("同步YMS平台员工信息失败,但不影响用户保存: {}", e.getMessage()); } //2024年3月27日16:40:15 处理用户验证码注册,首次登录redis用户数据不更新问题 //此处根据id重新查询 diff --git a/mhd_product/src/main/java/com/linke/product/application/service/appMenu/AppMenuApplicationService.java b/mhd_product/src/main/java/com/linke/product/application/service/appMenu/AppMenuApplicationService.java index 2046586fb..2c188f6a9 100644 --- a/mhd_product/src/main/java/com/linke/product/application/service/appMenu/AppMenuApplicationService.java +++ b/mhd_product/src/main/java/com/linke/product/application/service/appMenu/AppMenuApplicationService.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; @@ -93,8 +94,10 @@ public class AppMenuApplicationService { appMenuDO.setTopOrganizationId(SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); } List menuPos = appMenuDomainService.queryMenuListByApp(appMenuDO); - // 车队主管显示「订单调度」;业务主管显示「订单审核」 + // 获取用户角色 → 查角色APP菜单权限 → 取交集去重 List userRoles = userFeignService.selectUserRoles(appMenuDO.getUserId()); + menuPos = filterMenuByUserRole(menuPos, userRoles); + // 车队主管显示「订单调度」;业务主管显示「订单审核」 menuPos = filterMenuByRole(menuPos, userRoles); //判断控制推广码是否显示 if (menuPos != null){ @@ -108,6 +111,39 @@ public class AppMenuApplicationService { return menuPos; } + /** + * 在APP配置菜单基础上,根据用户角色取集合,去除重复菜单 + */ + private List filterMenuByUserRole(List appMenus, List userRoles) { + if (appMenus == null || appMenus.isEmpty() || userRoles == null || userRoles.isEmpty()) { + return appMenus != null ? appMenus : new ArrayList<>(); + } + // 获取用户所有角色ID + List roleIds = userRoles.stream() + .map(UserRoleMenuPO::getRoleId) + .filter(id -> id != null) + .distinct() + .collect(Collectors.toList()); + if (roleIds.isEmpty()) { + return appMenus; + } + // 查询角色对应的APP菜单权限(role_menu表中roleMenuClient=2的) + R> roleMenuR = userServiceFeign.roleAppMenuListByRoleIds(roleIds); + if (R.FAIL == roleMenuR.getCode() || roleMenuR.getData() == null || roleMenuR.getData().isEmpty()) { + return appMenus; + } + // 取角色菜单ID集合 + Set roleMenuIds = roleMenuR.getData().stream() + .map(UserRoleMenuPO::getMenuId) + .filter(id -> id != null) + .collect(Collectors.toSet()); + // 过滤:只保留APP配置菜单中也在角色权限中的菜单 + return appMenus.stream() + .filter(menu -> menu.getMenuId() != null && roleMenuIds.contains(menu.getMenuId())) + .distinct() + .collect(Collectors.toList()); + } + /** * 按角色过滤互斥菜单: * 车队主管隐藏「订单审核」;业务主管隐藏「订单调度」 From 40ff9808b818f7b06d78531e12d74d90dc07cb91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Mon, 29 Jun 2026 18:02:40 +0800 Subject: [PATCH 34/49] =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=94=9F=E6=88=90=E6=8B=A3=E8=B4=A7=E5=8D=95=E5=8F=8A?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=89=A7=E8=A1=8C=E5=88=A0=E9=99=A4=E6=8B=A3?= =?UTF-8?q?=E8=B4=A7=E5=8D=95;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/WmsServiceFeign.java | 8 + .../mapper/tmsReceipt/TmsReceiptMapper.xml | 2 +- .../ExecutionStockOutOrderDomainService.java | 2 + .../StockOutOrderApplicationService.java | 28 +++ .../service/StockOutOrderDomainService.java | 159 +++++++++++++++++- .../stockOutOrder/StockOutOrderApi.java | 10 ++ .../InventoryStandingReportMapper.xml | 4 +- .../MaterialBaseInfoMapper.xml | 2 +- .../MaterialInventoryMapper.xml | 12 +- .../PickingMaterialDetailMapper.xml | 10 +- .../pickingOrder/PickingOrderMapper.xml | 12 +- 11 files changed, 227 insertions(+), 22 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 1c2afc65f..743be7c29 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -1,5 +1,6 @@ package com.mhd.system.api; +import cn.hutool.json.JSONUtil; import com.mhd.common.core.constant.ServiceNameConstants; import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; @@ -133,4 +134,11 @@ public interface WmsServiceFeign { */ @GetMapping("/materialBaseInfoApi/getBatchByIds") public TableDataInfo getBatchByIds(@RequestParam("materialBaseInfoIds") List materialBaseInfoIds); + + /** + * 生成拣货单 + */ + @ApiOperation("生成拣货单") + @PostMapping("/stockOutOrderApi/genPickingOrderByOms") + public AjaxResult genPickingOrderByOms(@RequestBody com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO); } \ No newline at end of file diff --git a/mhd_finance/src/main/resources/mapper/tmsReceipt/TmsReceiptMapper.xml b/mhd_finance/src/main/resources/mapper/tmsReceipt/TmsReceiptMapper.xml index 65777d7e9..1db972407 100644 --- a/mhd_finance/src/main/resources/mapper/tmsReceipt/TmsReceiptMapper.xml +++ b/mhd_finance/src/main/resources/mapper/tmsReceipt/TmsReceiptMapper.xml @@ -123,6 +123,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java index 5afab346e..ed9c53e21 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockOutOrder/service/ExecutionStockOutOrderDomainService.java @@ -423,6 +423,8 @@ public class ExecutionStockOutOrderDomainService { com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO = new com.mhd.system.api.domain.StockOutOrderDTO(); stockOutOrderDTO.setOutOrderNumber(outOrderNumber); wmsServiceFeign.execution(stockOutOrderDTO); + + wmsServiceFeign.genPickingOrderByOms(stockOutOrderDTO); } return update; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java index 91c190406..1dcf34741 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -1123,6 +1123,34 @@ public class StockOutOrderApplicationService { return b; } + public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){ + Boolean b = stockOutOrderDomainService.genPickingOrderByOms(stockOutOrderDO); +// List outOrderIds = stockOutOrderDO.getOutOrderIds(); +// if (outOrderIds != null && !outOrderIds.isEmpty()) { +// StockOutOrder order = stockOutOrderService.getById(outOrderIds.get(0)); +// String needDeclareFlag = order.getNeedDeclareFlag(); +// Long organizationId = order.getOrganizationId(); +// try { +// if (needDeclareFlag != null && "1".equals(needDeclareFlag) && organizationId != null) { +// if (organizationId == 2830) { +// Long outOrderId = order.getOutOrderId(); +// List ids = new ArrayList<>(); +// ids.add(outOrderId); +// //batchPush(ids); +// } else { +// String outOrderId = order.getOutOrderNumber(); +// List ids = new ArrayList<>(); +// ids.add(outOrderId); +// //omsServiceFeign.batchPushByNumber(ids); +// } +// } +// } catch (Exception e) { +// throw new ServiceException("生成报关单失败"); +// } +// } + return b; + } + /** * 获取出库单复核详细信息 */ diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java index bdd20b7a9..bbf2a58b3 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -57,9 +57,12 @@ import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBas import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService; import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService; import com.mhd.wms.domain.pushSyncBms.PushSyncBmsDomainService; @@ -144,7 +147,8 @@ public class StockOutOrderDomainService { private IInventoryAdjustmentRecordService inventoryAdjustmentRecordService; @Autowired private IPickingMaterialDetailService pickingMaterialDetailService; - + @Autowired + private IPickingOrderService pickingOrderService; /** * 分页查询出库单列表 */ @@ -763,6 +767,144 @@ public class StockOutOrderDomainService { return inserted; } + @Transactional(rollbackFor = Exception.class) + public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){ + List stockOutOrderList = stockOutOrderService.list(new QueryWrapper().lambda() + .eq(StockOutOrder::getDelFlag, 1) + .in(StockOutOrder::getStatus,3,4) + .eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber())); + if (CollectionUtils.isEmpty(stockOutOrderList)){ + throw new ServiceException("只有已分配过的出库单才能生成拣货单"); + } + //修改出库单状态为拣货中 + List stockOutOrderId = stockOutOrderList.stream().map(StockOutOrder::getOutOrderId).collect(Collectors.toList()); + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setStatus(6); + stockOutOrderService.update(stockOutOrder, new UpdateWrapper().lambda().in(StockOutOrder::getOutOrderId, stockOutOrderId)); + + List stockOutOrderNumber = stockOutOrderList.stream().map(StockOutOrder::getOutOrderNumber).collect(Collectors.toList()); + List list = outMaterialDetailService.list(new QueryWrapper().lambda().in(OutMaterialDetail::getOutOrderNumber, stockOutOrderNumber).eq(OutMaterialDetail::getGenPickingOrder, 2)); + if (CollectionUtils.isEmpty(list)){ + throw new ServiceException("不存在已分配且未生成拣货单的物料明细,无法生成拣货单!"); + } + List outOrderNumberList = stockOutOrderList.stream().map(StockOutOrder::getOutOrderNumber).collect(Collectors.toList()); + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumberList(outOrderNumberList); + List outMaterialDetailPOList = outMaterialDetailService.queryListChildren(outMaterialDetailDO); + Map> outMaterialDetailPOListMap = outMaterialDetailPOList.stream().collect(Collectors.groupingBy(OutMaterialDetailPO::getOutOrderNumber)); + List pickingOrderDOList = new ArrayList<>(); + stockOutOrderList.forEach(p -> { + PickingOrderDO pickingOrderDO = new PickingOrderDO(); + BeanUtils.copyProperties(p, pickingOrderDO); + pickingOrderDO.setOrderNumber(p.getOutOrderNumber()); + pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH")); + pickingOrderDO.setQuantity(p.getAllocationQuantity()); + if (pickingOrderDO.getWarehouseId() == null && p.getWarehouseId() != null) { + pickingOrderDO.setWarehouseId(p.getWarehouseId()); + pickingOrderDO.setWarehouseCode(p.getWarehouseCode()); + pickingOrderDO.setWarehouseName(p.getWarehouseName()); + } + List outMaterialDetailPOS = outMaterialDetailPOListMap.get(p.getOutOrderNumber()); + // 出库单头 warehouse_code 常为空,用已分配明细(含子行)第一条有仓库编码的行兜底 + OutMaterialDetailPO warehouseFromDetail = firstOutDetailWithWarehouse(outMaterialDetailPOS); + if (warehouseFromDetail != null) { + if (StringUtils.isBlank(pickingOrderDO.getWarehouseCode())) { + pickingOrderDO.setWarehouseCode(warehouseFromDetail.getWarehouseCode()); + } + if (StringUtils.isBlank(pickingOrderDO.getWarehouseName()) + && StringUtils.isNotBlank(warehouseFromDetail.getWarehouseName())) { + pickingOrderDO.setWarehouseName(warehouseFromDetail.getWarehouseName()); + } + if (pickingOrderDO.getWarehouseId() == null && warehouseFromDetail.getWarehouseId() != null) { + pickingOrderDO.setWarehouseId(warehouseFromDetail.getWarehouseId()); + } + } + List pickingMaterialDetailList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(outMaterialDetailPOS)){ + outMaterialDetailPOS.forEach(outMaterialDetailPO -> { + BigDecimal allocationQuantity = outMaterialDetailPO.getAllocationQuantity(); + if (allocationQuantity != null && allocationQuantity.compareTo(BigDecimal.ZERO) > 0) { + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(outMaterialDetailPO, pickingMaterialDetailDO); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber()); + pickingMaterialDetailDO.setQuantity(outMaterialDetailPO.getAllocationQuantity()); + //设置出库明细关联id + pickingMaterialDetailDO.setOutUniqueId(outMaterialDetailPO.getUniqueId()); + pickingMaterialDetailDO.setMaterialCode(outMaterialDetailPO.getMaterialNo()); + pickingMaterialDetailDO.setMaterialName(outMaterialDetailPO.getCommodityName()); + pickingMaterialDetailDO.setBarCode(outMaterialDetailPO.getBarCode()); + //设置批次属性字段(从出库单明细中获取) + pickingMaterialDetailDO.setBatchRefNo(outMaterialDetailPO.getBatchRefNo()); + pickingMaterialDetailDO.setSheetRefNo(outMaterialDetailPO.getSheetRefNo()); + pickingMaterialDetailDO.setBoxPalletNo(outMaterialDetailPO.getBoxPalletNo()); + pickingMaterialDetailDO.setExtAttr1(outMaterialDetailPO.getExtAttr1()); + pickingMaterialDetailDO.setExtAttr2(outMaterialDetailPO.getExtAttr2()); + pickingMaterialDetailDO.setProductionDate(outMaterialDetailPO.getProductionDate()); + pickingMaterialDetailDO.setExpiryDate(outMaterialDetailPO.getExpiryDate()); + pickingMaterialDetailDO.setInventoryDate(outMaterialDetailPO.getInventoryDate()); + pickingMaterialDetailDO.setExtAttr3(outMaterialDetailPO.getExtAttr3()); + pickingMaterialDetailDO.setExtAttr4(outMaterialDetailPO.getExtAttr4()); + // 毛重、净重、面积、体积从出库单明细自动带出 + pickingMaterialDetailDO.setTotalGrossWeight(outMaterialDetailPO.getTotalGrossWeight()); + //判断是否是抄码商品净重 + if (outMaterialDetailPO.getCopyTotalWeight() != null){ + pickingMaterialDetailDO.setTotalNetWeight(outMaterialDetailPO.getCopyTotalWeight()); + pickingMaterialDetailDO.setCopyCodeReferenceIds(outMaterialDetailPO.getCopyCodeReferenceIds()); + }else { + pickingMaterialDetailDO.setTotalNetWeight(outMaterialDetailPO.getTotalNetWeight()); + } + pickingMaterialDetailDO.setTotalArea(outMaterialDetailPO.getTotalArea()); + pickingMaterialDetailDO.setTotalVolume(outMaterialDetailPO.getTotalVolume()); + pickingMaterialDetailList.add(pickingMaterialDetailDO); + List outMaterialDetailPOListChildren = outMaterialDetailPO.getChildren(); + if (!CollectionUtils.isEmpty(outMaterialDetailPOListChildren)){ + outMaterialDetailPOListChildren.forEach(outMaterialDetailPOChildren -> { + PickingMaterialDetailDO pickingMaterialDetailDOChildren = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(pickingMaterialDetailDO, pickingMaterialDetailDOChildren); + BeanUtils.copyProperties(outMaterialDetailPOChildren, pickingMaterialDetailDOChildren); + pickingMaterialDetailDOChildren.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber()); + pickingMaterialDetailDOChildren.setQuantity(outMaterialDetailPOChildren.getAllocationQuantity()); + //设置出库明细关联id + pickingMaterialDetailDOChildren.setOutUniqueId(outMaterialDetailPOChildren.getUniqueId()); + pickingMaterialDetailDOChildren.setMaterialCode(outMaterialDetailPOChildren.getMaterialNo()); + pickingMaterialDetailDOChildren.setMaterialName(outMaterialDetailPOChildren.getCommodityName()); + pickingMaterialDetailDOChildren.setBarCode(outMaterialDetailPOChildren.getBarCode()); + //设置批次属性字段(从出库单明细中获取) + pickingMaterialDetailDOChildren.setBatchRefNo(outMaterialDetailPOChildren.getBatchRefNo()); + pickingMaterialDetailDOChildren.setSheetRefNo(outMaterialDetailPOChildren.getSheetRefNo()); + pickingMaterialDetailDOChildren.setBoxPalletNo(outMaterialDetailPOChildren.getBoxPalletNo()); + pickingMaterialDetailDOChildren.setExtAttr1(outMaterialDetailPOChildren.getExtAttr1()); + pickingMaterialDetailDOChildren.setExtAttr2(outMaterialDetailPOChildren.getExtAttr2()); + pickingMaterialDetailDOChildren.setProductionDate(outMaterialDetailPOChildren.getProductionDate()); + pickingMaterialDetailDOChildren.setExpiryDate(outMaterialDetailPOChildren.getExpiryDate()); + pickingMaterialDetailDOChildren.setInventoryDate(outMaterialDetailPOChildren.getInventoryDate()); + pickingMaterialDetailDOChildren.setExtAttr3(outMaterialDetailPOChildren.getExtAttr3()); + pickingMaterialDetailDOChildren.setExtAttr4(outMaterialDetailPOChildren.getExtAttr4()); + // 毛重、净重、面积、体积从出库单明细子行自动带出 + pickingMaterialDetailDOChildren.setTotalGrossWeight(outMaterialDetailPOChildren.getTotalGrossWeight()); + pickingMaterialDetailDOChildren.setTotalNetWeight(outMaterialDetailPOChildren.getTotalNetWeight()); + pickingMaterialDetailDOChildren.setTotalArea(outMaterialDetailPOChildren.getTotalArea()); + pickingMaterialDetailDOChildren.setTotalVolume(outMaterialDetailPOChildren.getTotalVolume()); + pickingMaterialDetailList.add(pickingMaterialDetailDOChildren); + }); + } + } + }); + pickingOrderDO.setMaterialDetailList(pickingMaterialDetailList); + } + pickingOrderDOList.add(pickingOrderDO); + }); + Boolean inserted = pickingOrderDomainService.batchInsert(pickingOrderDOList); + if (Boolean.TRUE.equals(inserted)) { + List pickingOrderNumbers = pickingOrderDOList.stream() + .map(PickingOrderDO::getPickingOrderNumber) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + pickingOrderDomainService.autoTaskDistributionAfterGenPickingOrders(pickingOrderNumbers); + } + return inserted; + } + /** * 从出库明细树中取第一条带仓库编码的行(父行优先,再递归子行) */ @@ -1788,6 +1930,21 @@ public class StockOutOrderDomainService { //逻辑删除出库单 stockOutOrder.setDelFlag(2); stockOutOrderService.updateById(stockOutOrder); + + PickingOrder pickingOrder = pickingOrderService.getOne(new LambdaQueryWrapper() + .eq(PickingOrder::getDelFlag, 1) + .eq(PickingOrder::getOrderNumber, outOrderNumber)); + if (pickingOrder != null) { + String pickingOrderNumber = pickingOrder.getPickingOrderNumber(); + List list = pickingMaterialDetailService.list(new LambdaQueryWrapper() + .eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrderNumber) + .eq(PickingMaterialDetail::getDelFlag, 1)); + for (PickingMaterialDetail pickingMaterialDetail : list) { + pickingMaterialDetail.setDelFlag(2); + pickingMaterialDetailService.updateById(pickingMaterialDetail); + } + pickingOrderService.updateById(pickingOrder); + } } @Transactional(rollbackFor = Exception.class) diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java index 40478a19f..33ac2c412 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java @@ -326,6 +326,16 @@ public class StockOutOrderApi extends BaseController { return toAjax(stockOutOrderApplicationService.genPickingOrder(stockOutOrderDO)); } + /** + * 生成拣货单 + */ + @ApiOperation("生成拣货单") + @PostMapping("/genPickingOrderByOms") + public AjaxResult genPickingOrderByOms(@RequestBody com.mhd.system.api.domain.StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.genPickingOrderByOms(stockOutOrderDO)); + } + /** * 复核下发 */ diff --git a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml index d2e2ecbb8..5dead0139 100644 --- a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml @@ -121,7 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SUM( pmd.quantity ) AS material_quantity FROM picking_material_detail pmd - LEFT JOIN picking_order po ON po.picking_order_number = pmd.picking_order_number + LEFT JOIN picking_order po ON po.picking_order_number = pmd.picking_order_number and pmd.del_flag = 1 and po.del_flag=1 WHERE po.STATUS IN ( 1, 2 ) GROUP BY @@ -266,7 +266,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sio.abnormal FROM picking_material_detail rmd - LEFT JOIN picking_order sio ON sio.picking_order_number = rmd.picking_order_number + LEFT JOIN picking_order sio ON sio.picking_order_number = rmd.picking_order_number and rmd.del_flag = 1 and sio.del_flag=1 WHERE sio.STATUS IN ( 1, 2 ) diff --git a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml index 6ea847f8b..7b55c4761 100644 --- a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml @@ -329,7 +329,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index 4c7cad0c4..fdca9e280 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -817,7 +817,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum( c.picking_quantity ) FROM picking_material_detail c - LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER + LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1 left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 @@ -870,7 +870,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ( SELECT MAX(c.update_time) FROM picking_material_detail c - LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER + LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1 left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 @@ -899,7 +899,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL(( SELECT MAX(c.update_time) FROM picking_material_detail c - LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER + LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1 left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 @@ -1081,7 +1081,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum( c.picking_quantity ) FROM picking_material_detail c - LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER + LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1 left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 @@ -1101,7 +1101,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sum( c.picking_quantity ) FROM picking_material_detail c - LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER + LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1 left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 @@ -1200,7 +1200,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL(( SELECT MAX(c.update_time) FROM picking_material_detail c - LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER + LEFT JOIN picking_order d ON c.picking_order_number = d.PICKING_ORDER_NUMBER and c.del_flag = 1 and d.del_flag=1 left join STOCK_OUT_ORDER e ON d.ORDER_NUMBER = e.OUT_ORDER_NUMBER and e.del_flag = 1 WHERE c.del_flag = 1 and d.STATUS = 3 and e.STATUS = 7 diff --git a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml index 6560adecd..51312da2e 100644 --- a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml @@ -224,7 +224,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select from picking_material_detail a - left join out_material_detail omd on a.out_unique_id = omd.unique_id and omd.del_flag = 1 + left join out_material_detail omd on a.out_unique_id = omd.unique_id and omd.del_flag = 1 and a.del_flag = 1 @@ -248,7 +248,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -256,7 +256,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT DISTINCT pmd.OUT_UNIQUE_ID FROM picking_material_detail pmd - INNER JOIN out_material_detail omd ON pmd.OUT_UNIQUE_ID = omd.UNIQUE_ID AND omd.DEL_FLAG = 1 + INNER JOIN out_material_detail omd ON pmd.OUT_UNIQUE_ID = omd.UNIQUE_ID AND omd.DEL_FLAG = 1 and pmd.del_flag = 1 WHERE omd.OUT_ORDER_NUMBER = #{outOrderNumber} AND pmd.DEL_FLAG = 1 AND COALESCE(pmd.PICKING_QUANTITY, 0) > 0 diff --git a/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml b/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml index 4b1d1e8c9..f665330df 100644 --- a/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml @@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ,a.push_status,a.push_time,a.push_by,a.push_by_name, (SELECT m.goods_type FROM PICKING_MATERIAL_DETAIL d JOIN material_base_info m ON d.material_base_info_id = m.material_base_info_id - WHERE d.PICKING_ORDER_NUMBER = a.PICKING_ORDER_NUMBER + WHERE d.PICKING_ORDER_NUMBER = a.PICKING_ORDER_NUMBER and d.del_flag = 1 LIMIT 1) AS goods_type @@ -144,7 +144,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ,b.need_Declare_Flag from picking_order a - left join STOCK_OUT_ORDER b ON a.order_number = b.out_Order_number and b.del_flag = 1 + left join STOCK_OUT_ORDER b ON a.order_number = b.out_Order_number and b.del_flag = 1 and a.del_flag = 1 @@ -156,7 +156,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from picking_order a - left join stock_out_order b on a.order_number = b.out_order_number and b.del_flag = 1 + left join stock_out_order b on a.order_number = b.out_order_number and b.del_flag = 1 and a.del_flag = 1 WHERE a.picking_order_id = #{pickingOrderId} @@ -165,7 +165,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from picking_order a - left join wave_order b on a.order_number = b.wave_order_number + left join wave_order b on a.order_number = b.wave_order_number and a.del_flag = 1 WHERE a.picking_order_id = #{pickingOrderId} @@ -174,7 +174,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from picking_order a - left join stock_out_order b on a.order_number = b.out_order_number and b.del_flag = 1 + left join stock_out_order b on a.order_number = b.out_order_number and b.del_flag = 1 and a.del_flag = 1 WHERE a.order_number = #{orderNumber} @@ -183,7 +183,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from picking_order a - left join wave_order b on a.order_number = b.wave_order_number + left join wave_order b on a.order_number = b.wave_order_number and a.del_flag = 1 WHERE a.order_number = #{orderNumber} From 9ca77a7d57b41cc84f65c6179144c2ed4077fdfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Mon, 29 Jun 2026 18:04:51 +0800 Subject: [PATCH 35/49] =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E7=94=9F=E6=88=90=E6=8B=A3=E8=B4=A7=E5=8D=95=E5=8F=8A?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=89=A7=E8=A1=8C=E5=88=A0=E9=99=A4=E6=8B=A3?= =?UTF-8?q?=E8=B4=A7=E5=8D=95;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/factory/RemoteWmsFallbackFactory.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java index 2df429128..19b01814a 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteWmsFallbackFactory.java @@ -114,6 +114,11 @@ public class RemoteWmsFallbackFactory implements FallbackFactory Date: Mon, 29 Jun 2026 20:05:58 +0800 Subject: [PATCH 36/49] =?UTF-8?q?=E5=8F=91=E6=B5=8B=E8=AF=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd-auth/src/main/resources/bootstrap.yml | 1 + mhd-user-center/src/main/resources/bootstrap.yml | 8 ++++---- mhd_product/src/main/resources/bootstrap.yml | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mhd-auth/src/main/resources/bootstrap.yml b/mhd-auth/src/main/resources/bootstrap.yml index 4e9491205..d3774ede5 100644 --- a/mhd-auth/src/main/resources/bootstrap.yml +++ b/mhd-auth/src/main/resources/bootstrap.yml @@ -26,6 +26,7 @@ spring: # 测试环境配置 容器名+端口号 server-addr: 10.33.0.129:6010 # 线上测试环境配置 容器名+端口号 + # # server-addr: 10.102.192.5:6848 username: nacos password: manhuoda@2023 diff --git a/mhd-user-center/src/main/resources/bootstrap.yml b/mhd-user-center/src/main/resources/bootstrap.yml index 10cc73f1a..b557f1f16 100644 --- a/mhd-user-center/src/main/resources/bootstrap.yml +++ b/mhd-user-center/src/main/resources/bootstrap.yml @@ -20,15 +20,15 @@ spring: discovery: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 -# server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.30:6848 + server-addr: 10.33.0.129:6010 +# server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 -# server-addr: 10.33.0.129:6010 - server-addr: 10.102.192.30:6848 + server-addr: 10.33.0.129:6010 +# server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd_product/src/main/resources/bootstrap.yml b/mhd_product/src/main/resources/bootstrap.yml index 5e935251b..4d999c982 100644 --- a/mhd_product/src/main/resources/bootstrap.yml +++ b/mhd_product/src/main/resources/bootstrap.yml @@ -25,6 +25,7 @@ spring: password: manhuoda@2023 #线上正式环境 # server-addr: 10.33.0.129:6010 + # config: # server-addr: 127.0.0.1:8848 server-addr: 10.33.0.129:6010 From da0dae5f40dec8ef8d84b10c85914cc0c1a0a77c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Tue, 30 Jun 2026 14:55:08 +0800 Subject: [PATCH 37/49] =?UTF-8?q?=E5=8F=91=E6=B5=8B=E8=AF=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mhd/system/api/BmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/OmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WlhyServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/WmsServiceFeign.java | 2 +- .../src/main/java/com/mhd/system/api/YmsServiceFeign.java | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java index e18484e8d..91f2f8a11 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java @@ -18,7 +18,7 @@ import java.util.Set; /** * bms财务结算系统feign调用接口 */ -@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.3:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.33.0.109:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface BmsServiceFeign { 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 e34bb9cd4..03d48d2f4 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 @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.concurrent.CompletableFuture; -@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.4:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.33.0.99:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface OmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java index e4a817238..ba9a45148 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java @@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.30:8014",configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.33.0.129:8014",configuration = FeignAutoConfiguration.class) public interface WlhyServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 743be7c29..688e5ea7c 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -21,7 +21,7 @@ import java.util.Map; * @description: TODO * @date 2024/5/10 8:58 **/ -@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.3:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.33.0.109:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface WmsServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java index dfac7337f..48d76d01e 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java @@ -9,7 +9,7 @@ import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; -@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.4:8018", configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.33.0.99:8018", configuration = FeignAutoConfiguration.class) public interface YmsServiceFeign { /** From d82abe15bfc34a11d303d3852c1d758116851e63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 1 Jul 2026 09:47:23 +0800 Subject: [PATCH 38/49] =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E5=8D=95=E5=88=B0?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=8D=95=E4=B8=8D=E5=88=86=E5=8F=91=E7=BB=84?= =?UTF-8?q?=E7=BB=87;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReservationStockInOrderDomainService.java | 12 ++++++------ .../ReservationStockOutOrderDomainService.java | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 3f4df2b6f..fed79db69 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -498,9 +498,9 @@ public class ReservationStockInOrderDomainService { reservationStockInOrder.setOrderTypeName("普通入库"); reservationStockInOrder.setReservationOrderSource("客户预约"); reservationStockInOrder.setWarehouseId(warehouseId); - reservationStockInOrder.setOrganizationId(orgId); - reservationStockInOrder.setOrganizationName(orgName); - reservationStockInOrder.setTopOrganizationId(topOrgId); +// reservationStockInOrder.setOrganizationId(orgId); +// reservationStockInOrder.setOrganizationName(orgName); +// reservationStockInOrder.setTopOrganizationId(topOrgId); reservationStockInOrder.setWarehouseCode(warehouseCode); reservationStockInOrder.setWarehouseName(warehouseName); reservationStockInOrder.setBusinessInOrderNumber(inOrderNumber); @@ -516,9 +516,9 @@ public class ReservationStockInOrderDomainService { ExecutionInMaterialDetail reservationInMaterialDetail = new ExecutionInMaterialDetail(); BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId"); reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getQuantity()); - reservationInMaterialDetail.setOrganizationId(orgId); - reservationInMaterialDetail.setOrganizationName(orgName); - reservationInMaterialDetail.setTopOrganizationId(topOrgId); +// reservationInMaterialDetail.setOrganizationId(orgId); +// reservationInMaterialDetail.setOrganizationName(orgName); +// reservationInMaterialDetail.setTopOrganizationId(topOrgId); reservationInMaterialDetail.setWarehouseCode(warehouseCode); reservationInMaterialDetail.setWarehouseName(warehouseName); reservationInMaterialDetail.setInOrderNumber(reservationStockInOrder.getInOrderNumber()); 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 d5462bcdc..8384108c2 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 @@ -368,9 +368,9 @@ public class ReservationStockOutOrderDomainService { reservationStockInOrder.setOrderTypeName("普通出库"); reservationStockInOrder.setReservationOrderSource("客户预约"); reservationStockInOrder.setWarehouseId(warehouseId); - reservationStockInOrder.setOrganizationId(orgId); - reservationStockInOrder.setOrganizationName(orgName); - reservationStockInOrder.setTopOrganizationId(topOrgId); +// reservationStockInOrder.setOrganizationId(orgId); +// reservationStockInOrder.setOrganizationName(orgName); +// reservationStockInOrder.setTopOrganizationId(topOrgId); reservationStockInOrder.setWarehouseCode(warehouseCode); reservationStockInOrder.setWarehouseName(warehouseName); reservationStockInOrder.setBusinessOutOrderNumber(inOrderNumber); @@ -385,9 +385,9 @@ public class ReservationStockOutOrderDomainService { ExecutionOutMaterialDetail reservationInMaterialDetail = new ExecutionOutMaterialDetail(); BeanUtils.copyProperties(reservationOutMaterialDetail, reservationInMaterialDetail,"materialDetailId"); reservationInMaterialDetail.setQuantity(reservationOutMaterialDetail.getQuantity()); - reservationInMaterialDetail.setOrganizationId(orgId); - reservationInMaterialDetail.setOrganizationName(orgName); - reservationInMaterialDetail.setTopOrganizationId(topOrgId); +// reservationInMaterialDetail.setOrganizationId(orgId); +// reservationInMaterialDetail.setOrganizationName(orgName); +// reservationInMaterialDetail.setTopOrganizationId(topOrgId); reservationInMaterialDetail.setWarehouseCode(warehouseCode); reservationInMaterialDetail.setWarehouseName(warehouseName); reservationInMaterialDetail.setOutOrderNumber(reservationStockInOrder.getOutOrderNumber()); From 8bec065f694639d17fafee131af4090063c40746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 1 Jul 2026 10:14:19 +0800 Subject: [PATCH 39/49] =?UTF-8?q?=E7=89=A9=E6=96=99=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=B4=A7=E4=B8=BB=E6=9F=A5=E8=AF=A2=E5=8C=B9=E9=85=8D=E5=A4=9A?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=BF=A1=E6=81=AF;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd-user-center/src/main/resources/mapper/UserMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mhd-user-center/src/main/resources/mapper/UserMapper.xml b/mhd-user-center/src/main/resources/mapper/UserMapper.xml index a0799d041..7255f64c7 100644 --- a/mhd-user-center/src/main/resources/mapper/UserMapper.xml +++ b/mhd-user-center/src/main/resources/mapper/UserMapper.xml @@ -264,8 +264,8 @@ - and a.organization_id = #{organizationId} - and a.organization_name IS NOT NULL + and (a.organization_id = #{organizationId} + or b.ORG_CODE like concat('%', to_char(#{organizationId}), '%')) From 7c18ccf3bb3825e70ace47808bd8a36e6352ff87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 1 Jul 2026 11:36:59 +0800 Subject: [PATCH 40/49] =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E6=8A=A5=E9=94=99?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/stockShelfOrder/StockShelfOrderMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index ded928f2d..6d1e22d60 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -176,8 +176,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where OUT_ORDER_NUMBER = #{outOrderNumber} and UNIQUE_ID = #{uniqueId} and DELETE_FLAG = 1 - update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP and DELETE_FLAG = 1 - where LOT_NO = #{lotNumber} + update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP + where LOT_NO = #{lotNumber} and DELETE_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_MATERIAL_INVENTORY set INVENTORY_QUANTITY = #{quantity}, From 20a79787291fc8b6971a1837fe8990b62267f06b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A5=8E=E5=85=B4?= <2220574228@qq.com> Date: Wed, 1 Jul 2026 11:43:32 +0800 Subject: [PATCH 41/49] =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E6=8A=A5=E9=94=99?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HandoverTaskOrderMapper.xml | 8 ++++---- .../stockShelfOrder/StockShelfOrderMapper.xml | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml b/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml index b4c115f9e..f6c5ac19f 100644 --- a/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml @@ -151,18 +151,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update "NGWL_TEST_OMS".RESERVATION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + update "NGWL_TEST_OMS".RESERVATION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} and DEL_FLAG = 1 - update "NGWL_TEST_OMS".EXECUTION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + update "NGWL_TEST_OMS".EXECUTION_STOCK_OUT_ORDER set ISSUE_STATUS = #{status},OUTBOUND_TIME = CURRENT_TIMESTAMP where OUT_ORDER_NUMBER = #{orderNumber} and DEL_FLAG = 1 \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml index 6d1e22d60..c28664856 100644 --- a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -152,42 +152,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update "NGWL_TEST_OMS".RESERVATION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + update "NGWL_TEST_OMS".RESERVATION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DEL_FLAG = 1 - update "NGWL_TEST_OMS".EXECUTION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + update "NGWL_TEST_OMS".EXECUTION_STOCK_IN_ORDER set ISSUE_STATUS = #{status},in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DEL_FLAG = 1 - update "NGWL_TEST_OMS".RESERVE_STOCK_IN_ORDER set in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DELETE_FLAG = 1 + update "NGWL_TEST_OMS".RESERVE_STOCK_IN_ORDER set in_quantity = #{shelvesQuantity},STORAGE_TIME = CURRENT_TIMESTAMP where IN_ORDER_NUMBER = #{orderNumber} and DEL_FLAG = 1 - update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP where MATERIAL_DETAIL_ID = #{omsInMaterialDetail} and DELETE_FLAG = 1 + update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP where MATERIAL_DETAIL_ID = #{omsInMaterialDetail} and DEL_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_OUT_MATERIAL_DETAIL set INBOUND_ITEMS = #{checkQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight} ,STORAGE_TIME = CURRENT_TIMESTAMP - where OUT_ORDER_NUMBER = #{outOrderNumber} and UNIQUE_ID = #{uniqueId} and DELETE_FLAG = 1 + where OUT_ORDER_NUMBER = #{outOrderNumber} and UNIQUE_ID = #{uniqueId} and DEL_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_IN_MATERIAL_DETAIL set INBOUND_ITEMS = #{shelvesQuantity}, TOTAL_NET_WEIGHT= #{totalNetWeight},STORAGE_TIME = CURRENT_TIMESTAMP - where LOT_NO = #{lotNumber} and DELETE_FLAG = 1 + where LOT_NO = #{lotNumber} and DEL_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_MATERIAL_INVENTORY set INVENTORY_QUANTITY = #{quantity}, ALLOCATION_QUANTITY= #{quantity} - where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNumber} and DELETE_FLAG = 1 + where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNumber} and DEL_FLAG = 1 update "NGWL_TEST_OMS".RESERVATION_MATERIAL_INVENTORY set INVENTORY_QUANTITY = INVENTORY_QUANTITY - #{checkQuantity}, ALLOCATION_QUANTITY= ALLOCATION_QUANTITY - #{checkQuantity} - where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNo} and DELETE_FLAG = 1 + where IN_ORDER_NUMBER = #{inOrderNumber} and LOT_NUMBER = #{lotNo} and DEL_FLAG = 1