From 6108606daa3bf11443c9032392ea7872524732c9 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, 4 Sep 2026 11:11:39 +0800 Subject: [PATCH] =?UTF-8?q?bms=E6=94=B9=E9=80=A0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/BmsServiceFeign.java | 2 +- .../api/domain/BusinessDocumentFeign.java | 6 + mhd-modules/mhd-system/pom.xml | 5 + .../ContractManageApplicationService.java | 99 +++++++ .../service/ContractManageDomainService.java | 9 +- .../entity/MaterialBaseInfo.java | 16 ++ .../repository/po/MaterialBaseInfoPO.java | 16 ++ .../repository/todo/MaterialBaseInfoDO.java | 16 ++ .../entity/MaterialClassify.java | 16 ++ .../repository/po/MaterialClassifyPO.java | 16 ++ .../repository/todo/MaterialClassifyDO.java | 16 ++ .../materialBaseInfo/MaterialBaseInfoDTO.java | 15 ++ .../materialClassify/MaterialClassifyDTO.java | 16 ++ .../contractManage/ContractManageApi.java | 21 ++ .../MaterialClassifyMapper.xml | 7 +- mhd_bms/pom.xml | 6 + .../BillingStatementApplicationService.java | 125 +++++++++ ...SettlementCustomersApplicationService.java | 8 +- .../entity/BillingStatement.java | 3 + .../mapper/BillingStatementMapper.java | 9 +- .../repository/po/BillingStatementPO.java | 2 + .../repository/todo/BillingStatementDO.java | 2 + .../BillingStatementDomainService.java | 27 +- .../entity/BusinessDocument.java | 5 + .../repository/po/BusinessDocumentPO.java | 5 + .../repository/todo/BusinessDocumentDO.java | 5 +- .../BusinessDocumentDomainService.java | 23 +- .../todo/SettlementCustomersDO.java | 4 +- .../billingStatement/BillingStatementDTO.java | 3 +- .../businessDocument/BusinessDocumentDTO.java | 4 + .../SettlementCustomersDTO.java | 4 +- .../facadeApi/BillingStatementApi.java | 23 +- .../facadeApi/BusinessDocumentApi.java | 35 +++ .../mapper/BillingStatementMapper.xml | 12 + .../HandoverTaskOrderApplicationService.java | 17 +- .../MaterialInventoryApplicationService.java | 247 ++++++++++++++++-- .../HandoverTaskOrderDomainService.java | 25 +- .../entity/MaterialBaseInfo.java | 16 ++ .../repository/po/MaterialBaseInfoPO.java | 16 ++ .../repository/todo/MaterialBaseInfoDO.java | 16 ++ .../entity/MaterialInventory.java | 6 + .../facade/IMaterialInventoryService.java | 9 +- .../mapper/MaterialInventoryMapper.java | 6 +- .../persistence/MaterialInventoryImpl.java | 39 ++- .../repository/po/MaterialInventoryPO.java | 6 + .../po/MaterialInventoryQueryListPO.java | 6 + .../repository/todo/MaterialInventoryDO.java | 9 + .../todo/MaterialInventoryQueryListDO.java | 9 + .../MaterialInventoryDomainService.java | 12 +- .../materialBaseInfo/MaterialBaseInfoDTO.java | 16 ++ .../MaterialInventoryDTO.java | 7 + .../MaterialInventoryQueryListDTO.java | 7 + .../MaterialBaseInfoMapper.xml | 7 +- .../MaterialInventoryMapper.xml | 76 +++++- 54 files changed, 1052 insertions(+), 81 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 c46ed32b1..567a2a6c7 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 @@ -70,6 +70,6 @@ public interface BmsServiceFeign { @PostMapping("/businessDocumentApi/wholeRentSynchronizationZXF") public AjaxResult wholeRentSynchronizationZXF(@RequestBody BusinessDataPushDTO businessDataPushDTO); - @PostMapping("/businessDocumentApi/save") + @PostMapping("/businessDocumentApi/feignSave") public AjaxResult feignSaveBusinessDocument(@RequestBody BusinessDocumentFeign businessDocumentFeign); } \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/BusinessDocumentFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/BusinessDocumentFeign.java index a25cdc40c..d460e8f3f 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/BusinessDocumentFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/BusinessDocumentFeign.java @@ -194,4 +194,10 @@ public class BusinessDocumentFeign extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; + + @ApiModelProperty("是否推送") + private Integer isPush; + + @ApiModelProperty("仓库类型") + private String warehouseType; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/pom.xml b/mhd-modules/mhd-system/pom.xml index 505d9822a..cb2dcc86f 100644 --- a/mhd-modules/mhd-system/pom.xml +++ b/mhd-modules/mhd-system/pom.xml @@ -111,6 +111,11 @@ 2.24 + + com.xuxueli + xxl-job-core + 2.4.0 + diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java index b785649b5..ff7c71714 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/contractManage/ContractManageApplicationService.java @@ -18,6 +18,8 @@ import com.mhd.basic.domain.contractManageDetail.repository.po.ContractManageDet import com.mhd.basic.domain.contractManageDetail.repository.todo.ContractManageDetailDO; import com.mhd.basic.domain.contractManageDetail.service.ContractManageDetailDomainService; import com.mhd.basic.domain.contractManageParameters.entity.ContractManageParameters; +import com.mhd.basic.domain.contractManageParameters.repository.facade.IContractManageParametersService; +import com.mhd.basic.domain.contractManageParameters.repository.mapper.ContractManageParametersMapper; import com.mhd.basic.domain.contractManageParameters.repository.po.ContractManageParametersPO; import com.mhd.basic.domain.contractManageParameters.repository.todo.ContractManageParametersDO; import com.mhd.basic.domain.contractManageParameters.service.ContractManageParametersDomainService; @@ -38,6 +40,8 @@ import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.BmsServiceFeign; import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.BusinessDocumentFeign; +import com.mhd.system.api.domain.MaterialInventoryPO; import com.mhd.system.api.domain.SysDictData; import com.mhd.system.api.model.LoginUser; import com.mhd.system.service.ISysDictTypeService; @@ -86,6 +90,10 @@ public class ContractManageApplicationService { @Autowired private ContractManageParametersAssembler contractManageParametersAssembler; + @Autowired + private ContractManageParametersMapper contractManageParametersMapper; + @Autowired + private IContractManageParametersService contractManageParametersService; /** @@ -1275,4 +1283,95 @@ public class ContractManageApplicationService { } return exportList; } + + /* + * 获取结算对象 + * */ + public SettlementCustomersPO getSettlementCustomers(Long shipperId) { + try { + Long topOrganizationId = null; + AjaxResult ajaxResult = bmsServiceFeign.getCustomersInfoBySettlementEntityId(shipperId, topOrganizationId); + if (ajaxResult == null || !"200".equals(String.valueOf(ajaxResult.get("code"))) || ajaxResult.get("data") == null) { + log.warn("按 settlementEntityId 查询结算对象未成功:shipperId={}, code={}", shipperId, ajaxResult != null ? ajaxResult.get("code") : null); + return null; + } + return JSON.parseObject(JSON.toJSONString(ajaxResult.get("data")), SettlementCustomersPO.class); + } catch (Exception e) { + log.warn("按 settlementEntityId 查询结算对象异常,shipperId={}", shipperId, e); + return null; + } + } + + public void pushContractManageToBms(String shipperId) { + SettlementCustomersPO settlementCustomers = getSettlementCustomers(Long.valueOf(shipperId)); + if (settlementCustomers == null) { + log.warn("pushContractManageToBms 未找到结算对象,shipperId={}", shipperId); + return; + } + Long settlementCustomersId = settlementCustomers.getSettlementCustomersId(); + List contractManages = contractManageMapper.selectList(new LambdaQueryWrapper() + .eq(ContractManage::getContractRentType, "NORMAL") + .eq(ContractManage::getContractState, 2) + .eq(ContractManage::getDelFlag, 1) + .eq(ContractManage::getSettlementCustomersId, settlementCustomers.getSettlementCustomersId())); + if (contractManages == null || contractManages.isEmpty()) { + log.warn("未找到正式合同"); + return; + } + for (ContractManage contractManage : contractManages) { + Long contractManageId = contractManage.getContractManageId(); + ContractManageParameters contractManageParameters = contractManageParametersService.getOne(new LambdaQueryWrapper() + .eq(ContractManageParameters::getContractManageId, contractManageId),false); + if (contractManageParameters == null) { + continue; + } + String parametersJson = contractManageParameters.getParametersJson(); + Map parametersMap = JSON.parseObject(parametersJson, new TypeReference>() {}); + //合约价 + BigDecimal hyj = (BigDecimal) parametersMap.get("hyj"); + buildBusinessDocument(hyj,settlementCustomers,contractManage,"","",""); + } + } + + private void buildBusinessDocument(BigDecimal fee, SettlementCustomersPO settlementCustomers,ContractManage contractManage, String code, String name, String warehouseType) { + + Long settlementCustomersId = settlementCustomers.getSettlementCustomersId(); + Long settlementEntityId = settlementCustomers.getSettlementEntityId(); + String settlementEntity = settlementCustomers.getSettlementEntity(); + String settlementCustomersCode = settlementCustomers.getSettlementCustomersCode(); + BusinessDocumentFeign businessDocumentFeign = new BusinessDocumentFeign(); + businessDocumentFeign.setBillAmount(fee); + businessDocumentFeign.setOrganizationId(contractManage.getOrganizationId()); + businessDocumentFeign.setOrganizationName(contractManage.getOrganizationName()); + businessDocumentFeign.setTopOrganizationId(contractManage.getTopOrganizationId()); + businessDocumentFeign.setBelongModuleCode("wms"); + businessDocumentFeign.setBelongModule("WMS"); + businessDocumentFeign.setDataSources(1); + businessDocumentFeign.setSettlementEntity(settlementEntity); + businessDocumentFeign.setSettlementCustomersId(settlementCustomersId); + businessDocumentFeign.setSettlementCustomersCode(settlementCustomersCode); + businessDocumentFeign.setDocumentTypeId(4l); + businessDocumentFeign.setDocumentTypeCode("CM_ZL"); + businessDocumentFeign.setDocumentType("仓库租赁单"); + businessDocumentFeign.setFirstSubjectCode(code); + businessDocumentFeign.setFirstSubjectName(name); + businessDocumentFeign.setBillingTime(new Date()); + businessDocumentFeign.setServiceItemsCode("GC_CZ"); + businessDocumentFeign.setServiceItemsName("干仓仓租费用"); + businessDocumentFeign.setSettlementWay(1); + businessDocumentFeign.setOriginalBusinessNum(contractManage.getContractNumber()); + businessDocumentFeign.setWarehouseType(warehouseType); + String contractName = contractManage.getContractName(); + String contractNumber = contractManage.getContractNumber(); + Long contractManageId = contractManage.getContractManageId(); + businessDocumentFeign.setContractName(contractName); + businessDocumentFeign.setContractNumber(contractNumber); + businessDocumentFeign.setContractManageId(contractManageId); + businessDocumentFeign.setBusinessFlow(OrderSequence.getOrderCode("LS")); + businessDocumentFeign.setIsPush(1); + AjaxResult ajaxResult = bmsServiceFeign.feignSaveBusinessDocument(businessDocumentFeign); + if (ajaxResult == null || !"200".equals(String.valueOf(ajaxResult.get("code")))) { + log.error("保存业务单据失败: {}", ajaxResult != null ? ajaxResult.get("msg") : "feign调用异常"); + } + } } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/contractManage/service/ContractManageDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/contractManage/service/ContractManageDomainService.java index 6d1606e88..36e39fc07 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/contractManage/service/ContractManageDomainService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/contractManage/service/ContractManageDomainService.java @@ -23,10 +23,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -244,4 +241,8 @@ public class ContractManageDomainService { } return contractManagePO; } + + public Map getSettlementCustomers(String shipperId) { + + } } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/entity/MaterialBaseInfo.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/entity/MaterialBaseInfo.java index 95a81b9dd..0fa2435d5 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/entity/MaterialBaseInfo.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/entity/MaterialBaseInfo.java @@ -413,4 +413,20 @@ public class MaterialBaseInfo extends BaseVOEntity{ @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java index b876cb1c2..b07470a04 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java @@ -399,4 +399,20 @@ public class MaterialBaseInfoPO extends BaseVOEntity{ @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java index d1e95243e..98e8e43d3 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java @@ -405,4 +405,20 @@ public class MaterialBaseInfoDO extends BaseVOEntity{ @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/entity/MaterialClassify.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/entity/MaterialClassify.java index 081c81727..1fe580b67 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/entity/MaterialClassify.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/entity/MaterialClassify.java @@ -82,4 +82,20 @@ public class MaterialClassify extends BaseVOEntity{ @Excel(name = "单位") private String unit; + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; + } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/po/MaterialClassifyPO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/po/MaterialClassifyPO.java index 276e24432..4968f3cf1 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/po/MaterialClassifyPO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/po/MaterialClassifyPO.java @@ -89,4 +89,20 @@ public class MaterialClassifyPO extends BaseVOEntity{ @Excel(name = "单位") private String unit; + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; + } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/todo/MaterialClassifyDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/todo/MaterialClassifyDO.java index 9cc61a2fa..e325f813f 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/todo/MaterialClassifyDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/materialClassify/repository/todo/MaterialClassifyDO.java @@ -89,4 +89,20 @@ public class MaterialClassifyDO extends BaseVOEntity{ @ApiModelProperty("单位") @Excel(name = "单位") private String unit; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java index 9ab26e7a9..c3d8800d4 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java @@ -385,4 +385,19 @@ public class MaterialBaseInfoDTO extends BaseVOEntity{ @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialClassify/MaterialClassifyDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialClassify/MaterialClassifyDTO.java index 36a18c532..f33082987 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialClassify/MaterialClassifyDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/materialClassify/MaterialClassifyDTO.java @@ -89,4 +89,20 @@ public class MaterialClassifyDTO extends BaseVOEntity{ @ApiModelProperty("单位") @Excel(name = "单位") private String unit; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/contractManage/ContractManageApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/contractManage/ContractManageApi.java index 3f671c56d..bbc4bc538 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/contractManage/ContractManageApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/contractManage/ContractManageApi.java @@ -9,6 +9,8 @@ import com.mhd.basic.interfaces.dto.contractManage.ContractManageExportVO; import com.mhd.basic.interfaces.dto.contractManage.SubjectAndPriceDTO; import com.mhd.basic.interfaces.dto.contractManage.SubjectAndPriceReturn; import com.mhd.system.api.domain.ContractManageFeignDTO; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -250,4 +252,23 @@ public class ContractManageApi extends BaseController{ util.exportExcel(response, list, "合同导出"); } + + /** + * 1. 简单任务示例(Bean模式) + * 这里的 demoJobHandler 必须和调度中心配置一致 + */ + @XxlJob("pushContractManageToBms") + public void pushContractManageToBms() { + // 获取任务参数(货主id) + String shipperId = XxlJobHelper.getJobParam(); + logger.info("XXL-JOB 开始入库业务单推送bms计费流水,货主id参数:{}", shipperId); + try { + // 设置任务执行结果 + XxlJobHelper.handleSuccess("入库业务单推送bms计费流水执行成功"); + } catch (Exception e) { + logger.error("XXL-JOB 执行失败", e); + XxlJobHelper.handleFail("入库业务单推送bms计费流水执行失败:" + e.getMessage()); + } + } + } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/materialClassify/MaterialClassifyMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/materialClassify/MaterialClassifyMapper.xml index c6879ab23..b1feefbcc 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/materialClassify/MaterialClassifyMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/materialClassify/MaterialClassifyMapper.xml @@ -27,13 +27,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + select material_classify_id, organization_id, organization_name, top_organization_id, code, name, level, parent_code, parent_name, code_path, name_path, remark, nullify, create_time, create_by, create_by_name, update_time, update_by, - update_by_name, del_flag,CHARGE_STANDARD,unit + update_by_name, del_flag,CHARGE_STANDARD,unit, + monthly_warehouse_rent, half_month_warehouse_rent, monthly_warehouse_rent_unit, half_month_warehouse_rent_unit from material_classify diff --git a/mhd_bms/pom.xml b/mhd_bms/pom.xml index 7ecf1ce39..fa731f470 100644 --- a/mhd_bms/pom.xml +++ b/mhd_bms/pom.xml @@ -94,6 +94,12 @@ DmJdbcDriver18 8.1.1.193 + + + com.xuxueli + xxl-job-core + 2.4.0 + com.alibaba diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java index 28104f719..909567b9f 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/billingStatement/BillingStatementApplicationService.java @@ -3,17 +3,27 @@ package com.mhd.bms.application.server.billingStatement; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mhd.bms.application.server.billManage.BillManageApplicationService; import com.mhd.bms.domain.billManage.repository.po.BillManagePO; import com.mhd.bms.domain.billManage.service.BillManageDomainService; +import com.mhd.bms.domain.billingStatement.entity.BillingStatement; +import com.mhd.bms.domain.billingStatement.repository.facade.IBillingStatementService; +import com.mhd.bms.domain.billingStatement.repository.mapper.BillingStatementMapper; +import com.mhd.bms.domain.billingStatement.repository.po.BillingStatementADDVO; import com.mhd.bms.domain.billingStatement.repository.po.BillingStatementCollectPO; import com.mhd.bms.domain.billingStatement.repository.po.BillingStatementPO; import com.mhd.bms.domain.billingStatement.repository.todo.BillingStatementCollectDO; import com.mhd.bms.domain.billingStatement.repository.todo.BillingStatementDO; import com.mhd.bms.domain.billingStatement.service.BillingStatementDomainService; +import com.mhd.bms.domain.businessDocument.entity.BusinessDocument; +import com.mhd.bms.domain.businessDocument.repository.facade.IBusinessDocumentService; import com.mhd.bms.domain.businessDocument.repository.po.BusinessDocumentPO; import com.mhd.bms.domain.settlementCustomers.entity.SettlementCustomers; +import com.mhd.bms.domain.settlementCustomers.repository.mapper.SettlementCustomersMapper; import com.mhd.bms.domain.settlementCustomers.service.SettlementCustomersDomainService; +import com.mhd.bms.domain.settlementCustomersParameters.entity.SettlementCustomersParameters; +import com.mhd.bms.domain.settlementCustomersParameters.repository.mapper.SettlementCustomersParametersMapper; import com.mhd.bms.infrastructure.feign.vo.ContractManagePO; import com.mhd.bms.infrastructure.feign.vo.ExpenseAccountPO; import com.mhd.bms.interfaces.assembler.billingStatement.BillingStatementAssembler; @@ -39,6 +49,7 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -64,6 +75,16 @@ public class BillingStatementApplicationService { private BillManageApplicationService billManageApplicationService; @Autowired private BillManageDomainService billManageDomainService; + @Autowired + private IBusinessDocumentService businessDocumentService; + @Autowired + private IBillingStatementService billingStatementService; + @Autowired + private BillingStatementMapper billingStatementMapper; + @Autowired + private SettlementCustomersMapper settlementCustomersMapper; + @Autowired + private SettlementCustomersParametersMapper settlementCustomersParametersMapper; /** @@ -631,4 +652,108 @@ public class BillingStatementApplicationService { } return billingStatementDomainService.getBillDetailsList(billingStatementDO); } + + public void pushBillManage(String shipperId) { + SettlementCustomers settlementCustomers = settlementCustomersMapper.selectOne(new LambdaQueryWrapper() + .eq(SettlementCustomers::getSettlementEntityId, shipperId) + .eq(SettlementCustomers::getDelFlag, 1)); + if (ObjectUtil.isNull(settlementCustomers)) { + //未找到结算对象 + return; + } + Long settlementCustomersId = settlementCustomers.getSettlementCustomersId(); + SettlementCustomersParameters settlementCustomersParameters = settlementCustomersParametersMapper.selectOne(new LambdaQueryWrapper() + .eq(SettlementCustomersParameters::getSettlementEntityId, settlementCustomersId)); + if (ObjectUtil.isNull(settlementCustomersParameters)) { + //结算对象未配置参数 + return; + } + String content = settlementCustomersParameters.getContent(); + Map contentMap = JSON.parseObject(content, Map.class); + //主费用开票策略 + String zfycl = (String) contentMap.get("zfycl"); + //附加费用开票策略 + String fjfykpcl = (String) contentMap.get("fjfykpcl"); + //合并开票 + Integer hbcp = (Integer) contentMap.get("hbcp"); + Boolean isMerge = false; + if (hbcp == 1) { + //判断是否合并开票 + isMerge = true; + } + + if (!isMerge) { + List list = businessDocumentService.list(new LambdaQueryWrapper() + .eq(BusinessDocument::getIsPush, 1) + .eq(BusinessDocument::getSettlementCustomersId, settlementCustomersId) + .eq(BusinessDocument::getBusinessState, 3) + .eq(BusinessDocument::getDelFlag, 1)); + Map> groupedMap = list.stream() + .collect(Collectors.groupingBy(BusinessDocument::getOriginalBusinessNum)); + for (Map.Entry> entry : groupedMap.entrySet()) { + List groupList = entry.getValue(); + String originalBusinessNum = entry.getKey(); + for (BusinessDocument businessDocument : groupList) { + String businessFlow = businessDocument.getBusinessFlow(); + List billingStatements = billingStatementService.list(new LambdaQueryWrapper() + .eq(BillingStatement::getBusinessFlow, businessFlow) + .eq(BillingStatement::getBillingState, 1) + .eq(BillingStatement::getDelFlag, 1)); + if (billingStatements != null && billingStatements.size() > 0) { + List billingStatementADDVOS = new ArrayList<>(); + List billingStatementIdList = new ArrayList<>(); + BigDecimal allAmount = BigDecimal.ZERO; + BigDecimal allFreeFee = BigDecimal.ZERO; + String settlementCurrency = "MOP"; + for (BillingStatement billingStatement : billingStatements) { + settlementCurrency = billingStatement.getSettlementCurrency(); + String firstSubjectCode = billingStatement.getFirstSubjectCode(); + String firstSubjectName = billingStatement.getFirstSubjectName(); + Long organizationId = billingStatement.getOrganizationId(); + Map taxRateMap = billingStatementMapper.getTaxRate(organizationId, firstSubjectCode, firstSubjectName); + //未找到费用科目 + if (taxRateMap == null) continue; + Double taxRate = (Double) taxRateMap.get("taxRate"); + Long billingStatementId = billingStatement.getBillingStatementId(); + BillingStatementDTO billingStatementDTO = new BillingStatementDTO(); + billingStatementDTO.setBillingStatementIds(String.valueOf(billingStatementId)); + billingStatementDTO.setAuditOperation(1); + //审核通过 + reviewBilling(billingStatementDTO); + + BillingStatementADDVO billingStatementADDVO = new BillingStatementADDVO(); + BigDecimal amount = billingStatementDTO.getBillingAmount(); + BigDecimal taxAmount = amount.divide(BigDecimal.ONE.add(new BigDecimal(taxRate).divide(BigDecimal.valueOf(100))), 10, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(taxRate).divide(BigDecimal.valueOf(100))).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal taxFreeFee = amount.subtract(taxAmount); + allAmount.add(amount); + allFreeFee.add(taxFreeFee); + billingStatementADDVO.setBillingStatementId(String.valueOf(billingStatementId)); + billingStatementADDVO.setTaxRate(taxRate); + billingStatementADDVO.setTaxAmount(taxAmount); + billingStatementADDVO.setTaxFreeFee(taxFreeFee); + billingStatementADDVO.setFeeType(billingStatement.getServiceItemsName()); + billingStatementADDVO.setInvoiceItem(billingStatement.getFirstSubjectCode()); + billingStatementADDVO.setInvoiceItemName(billingStatement.getFirstSubjectName()); + billingStatementADDVOS.add(billingStatementADDVO); + + billingStatementIdList.add(String.valueOf(billingStatementId)); + } + String ids = String.join(",", billingStatementIdList); + BillingStatementDTO billingStatementDTO1 = new BillingStatementDTO(); + billingStatementDTO1.setBillingStatementIds(ids); + billingStatementDTO1.setBelongModuleCode("wms"); + billingStatementDTO1.setTaxAmount(allAmount); + billingStatementDTO1.setBillingAmount(allAmount); + billingStatementDTO1.setTaxFreeFee(allFreeFee); + billingStatementDTO1.setSettlementCurrency(settlementCurrency); + billingStatementDTO1.setBillingStatementList(billingStatementADDVOS); + //生成账单 + generateBills(billingStatementDTO1); + } + } + } + } else { + + } + } } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java index 9b622d0eb..5b8f83044 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomers/SettlementCustomersApplicationService.java @@ -151,7 +151,7 @@ public class SettlementCustomersApplicationService { settlementCustomersDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); Boolean insert = settlementCustomersDomainService.insert(settlementCustomersDO); if (insert) { - List settlementCustomersNcConfigDTOList = settlementCustomersDO.getSettlementCustomersNcConfigDTOList(); + List settlementCustomersNcConfigDTOList = settlementCustomersDO.getSettlementCustomersNcConfigs(); if (CollectionUtil.isNotEmpty(settlementCustomersNcConfigDTOList)) { for (SettlementCustomersNcConfigDTO settlementCustomersNcConfigDTO : settlementCustomersNcConfigDTOList) { SettlementCustomersNcConfig settlementCustomersNcConfig = new SettlementCustomersNcConfig(); @@ -163,7 +163,7 @@ public class SettlementCustomersApplicationService { settlementCustomersNcConfigService.save(settlementCustomersNcConfig); } } - List settlementCustomersParametersDTOList = settlementCustomersDO.getSettlementCustomersParametersDTOList(); + List settlementCustomersParametersDTOList = settlementCustomersDO.getSettlementCustomersParameters(); if (CollectionUtil.isNotEmpty(settlementCustomersParametersDTOList)) { for (SettlementCustomersParametersDTO settlementCustomersParametersDTO : settlementCustomersParametersDTOList) { SettlementCustomersParameters settlementCustomersParameters = new SettlementCustomersParameters(); @@ -260,7 +260,7 @@ public class SettlementCustomersApplicationService { //处理数据字典 handleDict(settlementCustomersDO); - List settlementCustomersNcConfigDTOList = settlementCustomersDO.getSettlementCustomersNcConfigDTOList(); + List settlementCustomersNcConfigDTOList = settlementCustomersDO.getSettlementCustomersNcConfigs(); if (CollectionUtil.isNotEmpty(settlementCustomersNcConfigDTOList)) { settlementCustomersNcConfigService.remove(new LambdaQueryWrapper() .eq(SettlementCustomersNcConfig::getSettlementCustomersId, settlementCustomersDO.getSettlementCustomersId())); @@ -274,7 +274,7 @@ public class SettlementCustomersApplicationService { settlementCustomersNcConfigService.save(settlementCustomersNcConfig); } } - List settlementCustomersParametersDTOList = settlementCustomersDO.getSettlementCustomersParametersDTOList(); + List settlementCustomersParametersDTOList = settlementCustomersDO.getSettlementCustomersParameters(); if (CollectionUtil.isNotEmpty(settlementCustomersParametersDTOList)) { settlementCustomersParametersService.remove(new LambdaQueryWrapper() .eq(SettlementCustomersParameters::getSettlementCustomersId, settlementCustomersDO.getSettlementCustomersId())); diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/entity/BillingStatement.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/entity/BillingStatement.java index 98d69bbcf..421de5430 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/entity/BillingStatement.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/entity/BillingStatement.java @@ -222,4 +222,7 @@ public class BillingStatement extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; + + @ApiModelProperty("仓储单号") + private String wmsNumber; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/mapper/BillingStatementMapper.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/mapper/BillingStatementMapper.java index f9541d496..48ebf8d60 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/mapper/BillingStatementMapper.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/mapper/BillingStatementMapper.java @@ -1,6 +1,8 @@ package com.mhd.bms.domain.billingStatement.repository.mapper; import java.util.List; +import java.util.Map; + import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mhd.bms.domain.billingStatement.entity.BillingStatement; import com.mhd.bms.domain.billingStatement.repository.po.BillingStatementCollectPO; @@ -42,4 +44,9 @@ public interface BillingStatementMapper extends BaseMapper * 根据账单id,查询流水明细列表 */ List getDetailsByManageId(@Param("billManageId") Long billManageId); -} + + /** + * 查询税率 + */ + Map getTaxRate(@Param("organizationId") Long organizationId, @Param("subjectCode") String subjectCode, @Param("subjectName") String subjectName); +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/po/BillingStatementPO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/po/BillingStatementPO.java index 6a5d308c7..1814d6c10 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/po/BillingStatementPO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/po/BillingStatementPO.java @@ -236,4 +236,6 @@ public class BillingStatementPO extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; + @ApiModelProperty("仓储单号") + private String wmsNumber; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/todo/BillingStatementDO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/todo/BillingStatementDO.java index 23fc1d687..4e7aeb159 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/todo/BillingStatementDO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/repository/todo/BillingStatementDO.java @@ -254,4 +254,6 @@ public class BillingStatementDO extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; + @ApiModelProperty("仓储单号") + private String wmsNumber; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/service/BillingStatementDomainService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/service/BillingStatementDomainService.java index 74392e216..4f517b8da 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/service/BillingStatementDomainService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billingStatement/service/BillingStatementDomainService.java @@ -396,7 +396,7 @@ public class BillingStatementDomainService { public Boolean generateFlow(BusinessDocumentPO businessDocumentPO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (ObjectUtil.isNull(loginUser)) { - throw new DigitalLogisticsException(UserError.TIMEOUT); +// throw new DigitalLogisticsException(UserError.TIMEOUT); } BillingStatementDO billingStatementDO = new BillingStatementDO(); String[] ignroreFields = new String[]{"billingStatementId","dataSources","createBy","createByName","createTime","updateBy","updateByName","updateTime"}; @@ -414,13 +414,24 @@ public class BillingStatementDomainService { billingStatementDO.setBillingAmount(businessDocumentPO.getBillAmount()); billingStatementDO.setBillingState(1); billingStatementDO.setDataSources(1); - billingStatementDO.setCreateBy(loginUser.getUserPo().getUserId()); - billingStatementDO.setCreateByName(loginUser.getUserPo().getUserName()); - billingStatementDO.setCreateTime(new Date()); - billingStatementDO.setBillingFlow(businessDocumentPO.getBusinessFlow()); - billingStatementDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); - billingStatementDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); - billingStatementDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + if (loginUser==null) { + billingStatementDO.setCreateBy(businessDocumentPO.getCreateBy()); + billingStatementDO.setCreateByName(businessDocumentPO.getCreateByName()); + billingStatementDO.setCreateTime(new Date()); + billingStatementDO.setBillingFlow(businessDocumentPO.getBusinessFlow()); + billingStatementDO.setTopOrganizationId(businessDocumentPO.getTopOrganizationId()); + billingStatementDO.setOrganizationId(businessDocumentPO.getOrganizationId()); + billingStatementDO.setOrganizationName(businessDocumentPO.getOrganizationName()); + } else { + billingStatementDO.setCreateBy(loginUser.getUserPo().getUserId()); + billingStatementDO.setCreateByName(loginUser.getUserPo().getUserName()); + billingStatementDO.setCreateTime(new Date()); + billingStatementDO.setBillingFlow(businessDocumentPO.getBusinessFlow()); + billingStatementDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + billingStatementDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + billingStatementDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + } + //收款帐户信息 billingStatementDO.setPaymentAccountId(businessDocumentPO.getPaymentAccountId()); //收款帐户ID billingStatementDO.setPaymentAccountName(businessDocumentPO.getPaymentAccountName()); //收款帐户名称 diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/entity/BusinessDocument.java b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/entity/BusinessDocument.java index dd740c80f..be7d9c194 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/entity/BusinessDocument.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/entity/BusinessDocument.java @@ -194,4 +194,9 @@ public class BusinessDocument extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; + + @ApiModelProperty("是否推送") + private Integer isPush; + @ApiModelProperty("仓库类型") + private String warehouseType; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/po/BusinessDocumentPO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/po/BusinessDocumentPO.java index 66e8a517e..9a4c449c2 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/po/BusinessDocumentPO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/po/BusinessDocumentPO.java @@ -198,4 +198,9 @@ public class BusinessDocumentPO extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; + + @ApiModelProperty("是否推送") + private Integer isPush; + @ApiModelProperty("仓库类型") + private String warehouseType; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/todo/BusinessDocumentDO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/todo/BusinessDocumentDO.java index 8b2e0e056..fed91cd49 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/todo/BusinessDocumentDO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/repository/todo/BusinessDocumentDO.java @@ -218,6 +218,9 @@ public class BusinessDocumentDO extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; - private Long billManageId; + @ApiModelProperty("是否推送") + private Integer isPush; + @ApiModelProperty("仓库类型") + private String warehouseType; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/service/BusinessDocumentDomainService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/service/BusinessDocumentDomainService.java index 2ffc4383f..249b8e596 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/service/BusinessDocumentDomainService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/businessDocument/service/BusinessDocumentDomainService.java @@ -121,7 +121,13 @@ public class BusinessDocumentDomainService { public Boolean takeEffectByIds(List businessDocumentIdLongList) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (ObjectUtil.isNull(loginUser)) { - throw new DigitalLogisticsException(UserError.TIMEOUT); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(BusinessDocument::getBusinessState,2); +// updateWrapper.set(BusinessDocument::getUpdateBy,loginUser.getUserPo().getUserId()); +// updateWrapper.set(BusinessDocument::getUpdateTime,new Date()); +// updateWrapper.set(BusinessDocument::getUpdateByName,loginUser.getUserPo().getUserName()); + updateWrapper.in(BusinessDocument::getBusinessDocumentId,businessDocumentIdLongList); + return businessDocumentService.update(updateWrapper); } if(businessDocumentIdLongList != null && businessDocumentIdLongList.size() > 0){ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); @@ -160,7 +166,20 @@ public class BusinessDocumentDomainService { public Boolean auditByIds(List businessDocumentIdLongList, BusinessDocumentDTO businessDocumentDTO) { LoginUser loginUser = SecurityUtils.getLoginUser(); if (ObjectUtil.isNull(loginUser)) { - throw new DigitalLogisticsException(UserError.TIMEOUT); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + if(businessDocumentDTO.getAuditOperation() == 1){ + //同意 + updateWrapper.set(BusinessDocument::getBusinessState,3); + }else { + //驳回 + updateWrapper.set(BusinessDocument::getBusinessState,4); + } + updateWrapper.set(BusinessDocument::getReviewRemarks,businessDocumentDTO.getReviewRemarks()); +// updateWrapper.set(BusinessDocument::getUpdateBy,loginUser.getUserPo().getUserId()); +// updateWrapper.set(BusinessDocument::getUpdateTime,new Date()); +// updateWrapper.set(BusinessDocument::getUpdateByName,loginUser.getUserPo().getUserName()); + updateWrapper.in(BusinessDocument::getBusinessDocumentId,businessDocumentIdLongList); + return businessDocumentService.update(updateWrapper); } if(businessDocumentIdLongList != null && businessDocumentIdLongList.size() > 0){ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomers/repository/todo/SettlementCustomersDO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomers/repository/todo/SettlementCustomersDO.java index 6c90e5c4e..f2753742f 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomers/repository/todo/SettlementCustomersDO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomers/repository/todo/SettlementCustomersDO.java @@ -136,9 +136,9 @@ public class SettlementCustomersDO extends BaseVOEntity{ @ApiModelProperty(name = "组织代码") private String orgCode; @ApiModelProperty("结算对象参数") - private List settlementCustomersParametersDTOList; + private List settlementCustomersParameters; @ApiModelProperty("结算对象nc配置") - private List settlementCustomersNcConfigDTOList; + private List settlementCustomersNcConfigs; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingStatement/BillingStatementDTO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingStatement/BillingStatementDTO.java index 855e5040b..1a032f659 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingStatement/BillingStatementDTO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingStatement/BillingStatementDTO.java @@ -264,5 +264,6 @@ public class BillingStatementDTO extends BaseVOEntity{ private BigDecimal billingUnitPrice; @ApiModelProperty("nc科目编码") private String ncSubjectCode; - + @ApiModelProperty("仓储单号") + private String wmsNumber; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/businessDocument/BusinessDocumentDTO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/businessDocument/BusinessDocumentDTO.java index 3e6a93304..d33f80eef 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/businessDocument/BusinessDocumentDTO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/businessDocument/BusinessDocumentDTO.java @@ -215,4 +215,8 @@ public class BusinessDocumentDTO extends BaseVOEntity{ private String paymentAccountName; private Long billManageId; + @ApiModelProperty("仓库类型") + private String warehouseType; + @ApiModelProperty("是否推送") + private Integer isPush; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/settlementCustomers/SettlementCustomersDTO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/settlementCustomers/SettlementCustomersDTO.java index ec4c2a180..7c3c7e22a 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/settlementCustomers/SettlementCustomersDTO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/settlementCustomers/SettlementCustomersDTO.java @@ -137,7 +137,7 @@ public class SettlementCustomersDTO extends BaseVOEntity{ private String orgCode; @ApiModelProperty("结算对象参数") - private List settlementCustomersParametersDTOList; + private List settlementCustomersParameters; @ApiModelProperty("结算对象nc配置") - private List settlementCustomersNcConfigDTOList; + private List settlementCustomersNcConfigs; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillingStatementApi.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillingStatementApi.java index 774f4988d..c1f898c9b 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillingStatementApi.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BillingStatementApi.java @@ -21,6 +21,8 @@ import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.utils.StringUtils; import com.mhd.common.redis.enums.RedisLockTypeEnum; import com.mhd.common.redis.service.RedisLock; +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.redisson.RedissonMultiLock; import org.redisson.api.RLock; @@ -327,4 +329,23 @@ public class BillingStatementApi extends BaseController { return getDataTable(list); } -} + /** + * 1. 简单任务示例(Bean模式) + * 这里的 demoJobHandler 必须和调度中心配置一致 + */ + @XxlJob("pushBillManage") + public void pushBillManage() { + // 获取任务参数(货主id) + String shipperId = XxlJobHelper.getJobParam(); + logger.info("XXL-JOB 开始入库业务单推送bms计费流水,货主id参数:{}", shipperId); + try { + billingStatementApplicationService.pushBillManage(shipperId); + // 设置任务执行结果 + XxlJobHelper.handleSuccess("入库业务单推送bms计费流水执行成功"); + } catch (Exception e) { + logger.error("XXL-JOB 执行失败", e); + XxlJobHelper.handleFail("入库业务单推送bms计费流水执行失败:" + e.getMessage()); + } + } + +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BusinessDocumentApi.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BusinessDocumentApi.java index ad94d9f94..1a3decb57 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BusinessDocumentApi.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/BusinessDocumentApi.java @@ -1,10 +1,15 @@ package com.mhd.bms.interfaces.facadeApi; +import java.util.ArrayList; import java.util.List; import com.mhd.bms.application.server.businessDocument.BusinessDocumentApplicationService; +import com.mhd.bms.domain.businessDocument.entity.BusinessDocument; +import com.mhd.bms.domain.businessDocument.repository.facade.IBusinessDocumentService; +import com.mhd.bms.domain.businessDocument.repository.mapper.BusinessDocumentMapper; import com.mhd.common.core.domain.dto.BusinessDataPushDTO; import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.system.api.domain.BusinessDocumentFeign; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +46,9 @@ public class BusinessDocumentApi extends BaseController{ @Resource private BusinessDocumentAssembler businessDocumentAssembler; + @Autowired + private IBusinessDocumentService businessDocumentService; + /** * 分页查询业务单据列表 */ @@ -79,6 +87,33 @@ public class BusinessDocumentApi extends BaseController{ } + + @ApiOperation("保存业务单据") + @PostMapping("/feignSave") + public AjaxResult feignSave(@RequestBody BusinessDocumentFeign businessDocumentFeign) + { + try { + BusinessDocument businessDocumentDO = new BusinessDocument(); + BeanUtils.copyProperties(businessDocumentFeign,businessDocumentDO); + boolean save = businessDocumentService.save(businessDocumentDO); + if (save) { + Long businessDocumentId = businessDocumentDO.getBusinessDocumentId(); + BusinessDocumentDTO businessDocumentDTO = new BusinessDocumentDTO(); + businessDocumentDTO.setBusinessDocumentIds(String.valueOf(businessDocumentId)); + //生效 + takeEffectByIds(businessDocumentDTO); + businessDocumentDTO.setAuditOperation(1); + //审核 + auditByIds(businessDocumentDTO); + } + return toAjax(save); + } catch (ServiceException e) { + return AjaxResult.error(e.getMessage()); + } catch (Exception e){ + return AjaxResult.error("保存业务单据失败:" + e.getMessage()); + } + } + /** * 保存业务单据 */ diff --git a/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml b/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml index a7a274c01..82ebab40d 100644 --- a/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml +++ b/mhd_bms/src/main/resources/mapper/BillingStatementMapper.xml @@ -271,4 +271,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java index ffb191f0c..1bae47fdf 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java @@ -23,6 +23,8 @@ import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrder import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService; +import com.mhd.wms.application.service.materialInventory.MaterialInventoryApplicationService; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryParamDO; import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; @@ -33,6 +35,7 @@ import org.springframework.stereotype.Service; import java.text.ParseException; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -58,6 +61,9 @@ public class HandoverTaskOrderApplicationService { @Autowired private IStockOutOrderService stockOutOrderService; + @Autowired + private MaterialInventoryApplicationService materialInventoryApplicationService; + /** * 分页查询交接作业单列表 @@ -200,7 +206,12 @@ public class HandoverTaskOrderApplicationService { * @return Boolean */ public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO){ - return handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO); + Boolean result = handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO); + List clearoutParamDOs = handoverTaskOrderDomainService.getLastClearoutParamDOs(); + for (MaterialInventoryParamDO paramDO : clearoutParamDOs) { + materialInventoryApplicationService.pushBillingRecordClearout(paramDO.getMaterialInventoryId(), paramDO.getQuantity()); + } + return result; } @@ -297,6 +308,10 @@ public class HandoverTaskOrderApplicationService { completeDO.setHandoverTaskOrderIds(handoverTaskOrderIds.stream().map(String::valueOf).collect(Collectors.toList())); completeDO.setBillingJson(handoverTaskOrderDO.getBillingJson()); handoverTaskOrderDomainService.completeHandover(completeDO); + List clearoutParamDOs = handoverTaskOrderDomainService.getLastClearoutParamDOs(); + for (MaterialInventoryParamDO paramDO : clearoutParamDOs) { + materialInventoryApplicationService.pushBillingRecordClearout(paramDO.getMaterialInventoryId(), paramDO.getQuantity()); + } } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java index ef042c5cc..ef0fa1a07 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONObject; import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.StringUtils; import com.mhd.common.core.web.domain.AjaxResult; @@ -18,6 +19,7 @@ import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; import com.mhd.system.api.model.LoginUser; import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; @@ -33,6 +35,7 @@ import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailM import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; import com.mhd.wms.util.BatchNoTokenUtil; +import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -43,6 +46,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; @@ -886,16 +890,36 @@ public class MaterialInventoryApplicationService { } } - public void pushBillingRecord(String shipperId) { - //非首次推送 - List materialInventoryPOS = materialInventoryDomainService.queryPushBms(shipperId); - if (materialInventoryPOS==null || materialInventoryPOS.size()==0) return; - for (MaterialInventoryPO materialInventoryPO : materialInventoryPOS) { - Date createTime = materialInventoryPO.getCreateTime(); - Long materialBaseInfoId = materialInventoryPO.getMaterialBaseInfoId(); - String lotNumber = materialInventoryPO.getLotNumber(); - String inOrderNumber = materialInventoryPO.getInOrderNumber(); + //推送清仓计费记录 + public void pushBillingRecordClearout(Long materialInventoryId,BigDecimal quantity) { + + MaterialInventory materialInventory = materialInventoryMapper.selectById(materialInventoryId); + MaterialInventoryPO materialInventoryPO = new MaterialInventoryPO(); + BeanUtils.copyProperties(materialInventory, materialInventoryPO); + //未查询到库存记录 + Long shipperId = materialInventoryPO.getShipperId(); + Date createTime = materialInventoryPO.getCreateTime(); + Long materialBaseInfoId = materialInventoryPO.getMaterialBaseInfoId(); + String lotNumber = materialInventoryPO.getLotNumber(); + String inOrderNumber = materialInventoryPO.getInOrderNumber(); + Long warehouseId = materialInventoryPO.getWarehouseId(); + Date lastBillingTime = materialInventoryPO.getLastBillingTime(); + if (warehouseId==19) {//干仓计费 + Map shipperParameters = materialInventoryDomainService.queryShipperParameters(shipperId,"干仓计费配置"); + //客户未配置干仓计费配置 + if (shipperParameters == null || shipperParameters.size()==0) return; + Long contractManageId = (Long) shipperParameters.get("contractManageId"); + Long settlementCustomersId = (Long) shipperParameters.get("settlementCustomersId"); + String contractNumber = (String) shipperParameters.get("contractNumber"); + String content = (String) shipperParameters.get("content"); + Map contentMap = content != null ? JSON.parseObject(content, Map.class) : new HashMap<>(); + Integer sfzdcz = (Integer) contentMap.get("sfzdcz"); + //客户未配置或是否自动推送设置为否 + if (sfzdcz==null) return; + if (sfzdcz!=1) return; + //计算费用 List> monthFee = materialInventoryDomainService.getMonthFee(inOrderNumber, materialBaseInfoId,lotNumber); + //入库业务单未设置每月仓租 if (monthFee == null || monthFee.size()==0) return; Map feeMap = monthFee.get(0); //半月仓租 @@ -912,7 +936,7 @@ public class MaterialInventoryApplicationService { if (isYesterday) { //首次计费 需要夫力费 //库存数量 - BigDecimal inventoryQuantity = materialInventoryPO.getInventoryQuantity(); + BigDecimal inventoryQuantity = quantity; //仓租 BigDecimal totalWarehouseRent = inventoryQuantity.multiply(monthlyWarehouseFee); //夫力费 @@ -921,7 +945,9 @@ public class MaterialInventoryApplicationService { BigDecimal unitPrice = materialBaseInfo.getUnitPrice(); //火险保费 BigDecimal fireInsureFee = unitPrice.multiply(inventoryQuantity).multiply(new BigDecimal("0.0003")); - + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","干仓仓租费用",contractManageId,"干仓"); + buildBusinessDocument(manpowerFee, materialInventoryPO,"0D082","夫力费",contractManageId,"干仓"); + buildBusinessDocument(fireInsureFee, materialInventoryPO,"0D083","火险保费",contractManageId,"干仓"); } else { //期间付费 不需要夫力费 @@ -933,13 +959,188 @@ public class MaterialInventoryApplicationService { BigDecimal unitPrice = materialBaseInfo.getUnitPrice(); //火险保费 BigDecimal fireInsureFee = unitPrice.multiply(inventoryQuantity).multiply(new BigDecimal("0.0003")); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","干仓仓租费用",contractManageId,"冻仓"); + buildBusinessDocument(fireInsureFee, materialInventoryPO,"0D083","火险保费",contractManageId,"冻仓"); + } + } else if (warehouseId==20) {//冻仓计费 + Map shipperParameters = materialInventoryDomainService.queryShipperParameters(Long.valueOf(shipperId),"冻仓计费配置"); + if (shipperParameters == null || shipperParameters.size()==0) return; + Long contractManageId = (Long) shipperParameters.get("contractManageId"); + Long settlementCustomersId = (Long) shipperParameters.get("settlementCustomersId"); + String contractNumber = (String) shipperParameters.get("contractNumber"); + String content = (String) shipperParameters.get("content"); + Map contentMap = content != null ? JSON.parseObject(content, Map.class) : new HashMap<>(); + Integer sfzdcz = (Integer) contentMap.get("sfzdcz"); + //客户未配置或是否自动推送设置为否 + if (sfzdcz==null) return; + if (sfzdcz!=1) return; + //计算费用 + MaterialBaseInfo materialBaseInfo = materialBaseInfoMapper.selectById(materialBaseInfoId); + BigDecimal unitPrice = materialBaseInfo.getUnitPrice(); + String materialClassifyId = materialBaseInfo.getMaterialClassifyId(); + BigDecimal weightLimit = materialBaseInfo.getWeightLimit(); + Map materialClassify = materialInventoryDomainService.queryMaterialClassify(Long.valueOf(materialClassifyId)); + //物料分类不存在 + if (materialClassify == null || materialClassify.size()==0) return; + BigDecimal monthlyWarehouseRent = (BigDecimal) materialClassify.get("monthlyWarehouseRent"); + BigDecimal halfMonthWarehouseRent = (BigDecimal) materialClassify.get("halfMonthWarehouseRent"); + String monthlyWarehouseRentUnit = (String) materialClassify.get("monthlyWarehouseRentUnit"); + String halfMonthWarehouseRentUnit = (String) materialClassify.get("halfMonthWarehouseRentUnit"); + //半月仓租 + BigDecimal halfMonthWhFee = halfMonthWarehouseRent; + //整月仓租 + BigDecimal monthlyWarehouseFee = monthlyWarehouseRent; + long daysDiff = 0; + if (lastBillingTime != null) { + LocalDate lastBillingDate = lastBillingTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + daysDiff = ChronoUnit.DAYS.between(lastBillingDate, LocalDate.now()); + } else { + daysDiff = -1; + } + BigDecimal inventoryQuantity = quantity; + if (daysDiff < 15) { + // 不足半月: 收半月仓租 + BigDecimal totalWarehouseRent = inventoryQuantity.multiply(halfMonthWhFee).multiply(weightLimit); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","冻仓仓租费用",contractManageId,"冻仓"); + } else { + // 大于等于半月: 收整月仓租 + BigDecimal totalWarehouseRent = inventoryQuantity.multiply(monthlyWarehouseFee).multiply(weightLimit); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","冻仓仓租费用",contractManageId,"冻仓"); + } + //更新最后计费时间 + Long id = materialInventoryPO.getMaterialInventoryId(); + MaterialInventory Inventory = materialInventoryMapper.selectById(id); + Inventory.setLastBillingTime(new Date()); + materialInventoryMapper.updateById(Inventory); + } + } + public void pushBillingRecord(String shipperId) { + + List materialInventoryPOS = materialInventoryDomainService.queryPushBms(shipperId); + //未查询到库存记录 + if (materialInventoryPOS==null || materialInventoryPOS.size()==0) return; + for (MaterialInventoryPO materialInventoryPO : materialInventoryPOS) { + Date createTime = materialInventoryPO.getCreateTime(); + Long materialBaseInfoId = materialInventoryPO.getMaterialBaseInfoId(); + String lotNumber = materialInventoryPO.getLotNumber(); + String inOrderNumber = materialInventoryPO.getInOrderNumber(); + Long warehouseId = materialInventoryPO.getWarehouseId(); + Date lastBillingTime = materialInventoryPO.getLastBillingTime(); + if (warehouseId==19) {//干仓计费 + Map shipperParameters = materialInventoryDomainService.queryShipperParameters(Long.valueOf(shipperId),"干仓计费配置"); + //客户未配置干仓计费配置 + if (shipperParameters == null || shipperParameters.size()==0) continue; + Long contractManageId = (Long) shipperParameters.get("contractManageId"); + Long settlementCustomersId = (Long) shipperParameters.get("settlementCustomersId"); + String contractNumber = (String) shipperParameters.get("contractNumber"); + String content = (String) shipperParameters.get("content"); + Map contentMap = content != null ? JSON.parseObject(content, Map.class) : new HashMap<>(); + Integer sfzdcz = (Integer) contentMap.get("sfzdcz"); + //客户未配置或是否自动推送设置为否 + if (sfzdcz==null) continue; + if (sfzdcz!=1) continue; + //计算费用 + List> monthFee = materialInventoryDomainService.getMonthFee(inOrderNumber, materialBaseInfoId,lotNumber); + //入库业务单未设置每月仓租 + if (monthFee == null || monthFee.size()==0) continue; + Map feeMap = monthFee.get(0); + //半月仓租 + BigDecimal halfMonthWhFee = (BigDecimal) feeMap.get("halfMonthWhFee"); + //整月仓租 + BigDecimal monthlyWarehouseFee = (BigDecimal) feeMap.get("monthlyWarehouseFee"); + // 判断是否为昨天 + boolean isYesterday = false; + if (createTime != null) { + LocalDate yesterday = LocalDate.now().minusDays(1); + LocalDate createDate = createTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + isYesterday = yesterday.isEqual(createDate); + } + if (isYesterday) { + //首次计费 需要夫力费 + //库存数量 + BigDecimal inventoryQuantity = materialInventoryPO.getInventoryQuantity(); + //仓租 + BigDecimal totalWarehouseRent = inventoryQuantity.multiply(monthlyWarehouseFee); + //夫力费 + BigDecimal manpowerFee = totalWarehouseRent.multiply(new BigDecimal("0.2")); + MaterialBaseInfo materialBaseInfo = materialBaseInfoMapper.selectById(materialBaseInfoId); + BigDecimal unitPrice = materialBaseInfo.getUnitPrice(); + //火险保费 + BigDecimal fireInsureFee = unitPrice.multiply(inventoryQuantity).multiply(new BigDecimal("0.0003")); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","干仓仓租费用",contractManageId,"干仓"); + buildBusinessDocument(manpowerFee, materialInventoryPO,"0D082","夫力费",contractManageId,"干仓"); + buildBusinessDocument(fireInsureFee, materialInventoryPO,"0D083","火险保费",contractManageId,"干仓"); + + } else { + //期间付费 不需要夫力费 + //库存数量 + BigDecimal inventoryQuantity = materialInventoryPO.getInventoryQuantity(); + //仓租 + BigDecimal totalWarehouseRent = inventoryQuantity.multiply(monthlyWarehouseFee); + MaterialBaseInfo materialBaseInfo = materialBaseInfoMapper.selectById(materialBaseInfoId); + BigDecimal unitPrice = materialBaseInfo.getUnitPrice(); + //火险保费 + BigDecimal fireInsureFee = unitPrice.multiply(inventoryQuantity).multiply(new BigDecimal("0.0003")); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","干仓仓租费用",contractManageId,"干仓"); + buildBusinessDocument(fireInsureFee, materialInventoryPO,"0D083","火险保费",contractManageId,"干仓"); + } + } else if (warehouseId==20) {//冻仓计费 + Map shipperParameters = materialInventoryDomainService.queryShipperParameters(Long.valueOf(shipperId),"冻仓计费配置"); + if (shipperParameters == null || shipperParameters.size()==0) continue; + Long contractManageId = (Long) shipperParameters.get("contractManageId"); + Long settlementCustomersId = (Long) shipperParameters.get("settlementCustomersId"); + String contractNumber = (String) shipperParameters.get("contractNumber"); + String content = (String) shipperParameters.get("content"); + Map contentMap = content != null ? JSON.parseObject(content, Map.class) : new HashMap<>(); + Integer sfzdcz = (Integer) contentMap.get("sfzdcz"); + //客户未配置或是否自动推送设置为否 + if (sfzdcz==null) continue; + if (sfzdcz!=1) continue; + //计算费用 + MaterialBaseInfo materialBaseInfo = materialBaseInfoMapper.selectById(materialBaseInfoId); + BigDecimal unitPrice = materialBaseInfo.getUnitPrice(); + String materialClassifyId = materialBaseInfo.getMaterialClassifyId(); + BigDecimal weightLimit = materialBaseInfo.getWeightLimit(); + Map materialClassify = materialInventoryDomainService.queryMaterialClassify(Long.valueOf(materialClassifyId)); + //物料分类不存在 + if (materialClassify == null || materialClassify.size()==0) continue; + BigDecimal monthlyWarehouseRent = (BigDecimal) materialClassify.get("monthlyWarehouseRent"); + BigDecimal halfMonthWarehouseRent = (BigDecimal) materialClassify.get("halfMonthWarehouseRent"); + String monthlyWarehouseRentUnit = (String) materialClassify.get("monthlyWarehouseRentUnit"); + String halfMonthWarehouseRentUnit = (String) materialClassify.get("halfMonthWarehouseRentUnit"); + //半月仓租 + BigDecimal halfMonthWhFee = halfMonthWarehouseRent; + //整月仓租 + BigDecimal monthlyWarehouseFee = monthlyWarehouseRent; + long daysDiff = 0; + if (lastBillingTime != null) { + LocalDate lastBillingDate = lastBillingTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + daysDiff = ChronoUnit.DAYS.between(lastBillingDate, LocalDate.now()); + } else { + daysDiff = -1; + } + BigDecimal inventoryQuantity = materialInventoryPO.getInventoryQuantity(); + if (daysDiff < 15) { + // 不足半月: 收半月仓租 + BigDecimal totalWarehouseRent = inventoryQuantity.multiply(halfMonthWhFee).multiply(weightLimit); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","冻仓仓租费用",contractManageId,"冻仓"); + } else { + // 大于等于半月: 收整月仓租 + BigDecimal totalWarehouseRent = inventoryQuantity.multiply(monthlyWarehouseFee).multiply(weightLimit); + buildBusinessDocument(totalWarehouseRent, materialInventoryPO,"0D081","冻仓仓租费用",contractManageId,"冻仓"); + } + //更新最后计费时间 + Long materialInventoryId = materialInventoryPO.getMaterialInventoryId(); + MaterialInventory materialInventory = materialInventoryMapper.selectById(materialInventoryId); + materialInventory.setLastBillingTime(new Date()); + materialInventoryMapper.updateById(materialInventory); } } } - private void buildBusinessDocument(BigDecimal fee, MaterialInventoryPO materialInventoryPO) { + private void buildBusinessDocument(BigDecimal fee, MaterialInventoryPO materialInventoryPO,String code,String name,Long contractManageId,String warehouseType) { Long shipperId = materialInventoryPO.getShipperId(); Map shipper = materialInventoryMapper.querySetlleByShipperId(shipperId); if (shipper == null) { @@ -960,23 +1161,27 @@ public class MaterialInventoryApplicationService { businessDocumentFeign.setSettlementEntity(settlementEntity); businessDocumentFeign.setSettlementCustomersId(settlementCustomersId); businessDocumentFeign.setSettlementCustomersCode(settlementCustomersCode); - businessDocumentFeign.setDocumentTypeId(5l); - businessDocumentFeign.setDocumentTypeCode("CM_SZ"); - businessDocumentFeign.setDocumentType("仓码散租"); - businessDocumentFeign.setFirstSubjectCode("0D81"); - businessDocumentFeign.setFirstSubjectName("仓租费"); + businessDocumentFeign.setDocumentTypeId(4l); + businessDocumentFeign.setDocumentTypeCode("CM_ZL"); + businessDocumentFeign.setDocumentType("仓库租赁单"); + businessDocumentFeign.setFirstSubjectCode(code); + businessDocumentFeign.setFirstSubjectName(name); businessDocumentFeign.setBillingTime(new Date()); - businessDocumentFeign.setServiceItemsCode("CMCZ"); - businessDocumentFeign.setServiceItemsName("干仓仓租"); + businessDocumentFeign.setServiceItemsCode("GC_CZ"); + businessDocumentFeign.setServiceItemsName("干仓仓租费用"); businessDocumentFeign.setSettlementWay(1); - Map contract = materialInventoryDomainService.queryContract(materialInventoryPO.getShipperId()); + businessDocumentFeign.setOriginalBusinessNum(materialInventoryPO.getInOrderNumber()); + businessDocumentFeign.setWarehouseType(warehouseType); + businessDocumentFeign.setOriginalBusinessNum(materialInventoryPO.getInOrderNumber()); + Map contract = materialInventoryDomainService.queryContract(contractManageId); if (contract == null) {return;} String contractName = (String) contract.get("contractName"); String contractNumber = (String) contract.get("contractNumber"); - Long contractManageId = (Long) contract.get("contractManageId"); businessDocumentFeign.setContractName(contractName); businessDocumentFeign.setContractNumber(contractNumber); businessDocumentFeign.setContractManageId(contractManageId); + businessDocumentFeign.setBusinessFlow(OrderSequence.getOrderCode("LS")); + businessDocumentFeign.setIsPush(1); AjaxResult ajaxResult = bmsServiceFeign.feignSaveBusinessDocument(businessDocumentFeign); if (ajaxResult == null || !"200".equals(String.valueOf(ajaxResult.get("code")))) { log.error("保存业务单据失败: {}", ajaxResult != null ? ajaxResult.get("msg") : "feign调用异常"); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java index e9ecea6d7..458e444e0 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java @@ -351,7 +351,7 @@ public class HandoverTaskOrderDomainService { } LoginUser loginUser = SecurityUtils.getLoginUser(); //修改库存 - xgkc(handoverTaskOrderIds,loginUser); + List clearoutParamDOs = xgkc(handoverTaskOrderIds,loginUser); //推送oms(需报关的单子等海关确认放行后再推) for (Long handoverTaskOrderId : handoverTaskOrderIds) { // HandoverTaskOrder hto = handoverTaskOrderService.getById(handoverTaskOrderId); @@ -371,6 +371,7 @@ public class HandoverTaskOrderDomainService { } HandoverTaskOrder handoverTaskOrder = handoverTaskOrderService.getById(handoverTaskOrderIds.get(0)); stockOutOrderService.update(null,new UpdateWrapper().lambda().set(StockOutOrder::getBillingJson,handoverTaskOrderDO.getBillingJson()).eq(StockOutOrder::getOutOrderNumber,handoverTaskOrder.getOrderNumber())); + this.lastClearoutParamDOs = clearoutParamDOs; return handoverTaskOrderService.update(null, new UpdateWrapper().lambda() .set(HandoverTaskOrder::getStatus, 2) .set(HandoverTaskOrder::getUpdateBy, loginUser.getUserid()) @@ -398,11 +399,18 @@ public class HandoverTaskOrderDomainService { @Autowired private ICopyCodeReferenceService copyCodeReferenceService; - public synchronized void xgkc(List handoverTaskOrderIds,LoginUser loginUser) { + private List lastClearoutParamDOs = new ArrayList<>(); + + public List getLastClearoutParamDOs() { + return lastClearoutParamDOs; + } + + public synchronized List xgkc(List handoverTaskOrderIds,LoginUser loginUser) { + List allClearoutParamDOs = new ArrayList<>(); for (Long handoverTaskOrderId : handoverTaskOrderIds) { HandoverTaskOrder handoverTaskOrder = handoverTaskOrderService.getById(handoverTaskOrderId); if (handoverTaskOrder == null) { - return; + continue; } //交接完成节点修改库存 String orderNumber = handoverTaskOrder.getOrderNumber(); @@ -422,15 +430,17 @@ public class HandoverTaskOrderDomainService { //完成交接状态改为已出库 stockOutOrder.setStatus(9); stockOutOrderMapper.updateById(stockOutOrder); - doStockOutDeduct(orderNumber, stockOutOrder, loginUser); + allClearoutParamDOs.addAll(doStockOutDeduct(orderNumber, stockOutOrder, loginUser)); } + return allClearoutParamDOs; } /** * 出库扣减:同步OMS明细 + 联单状态 + 扣实物库存 + 推OMS库存 * (从 xgkc 抽取,供「不需报关交接」和「海关确认」两处复用) */ - private void doStockOutDeduct(String orderNumber, StockOutOrder stockOutOrder, LoginUser loginUser) { + private List doStockOutDeduct(String orderNumber, StockOutOrder stockOutOrder, LoginUser loginUser) { + List clearoutParamDOs = new ArrayList<>(); List outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() .eq(OutMaterialDetail::getOutOrderNumber, orderNumber) .eq(OutMaterialDetail::getDelFlag, 1)); @@ -489,16 +499,17 @@ public class HandoverTaskOrderDomainService { materialInventoryOmsParamDO.setLoginUser(loginUser); if (stockOutOrder != null && !"yang_pin_chu_ku".equals(stockOutOrder.getBusinessType())) { materialInventoryService.kctzjl(materialInventoryParamDO,"出库",loginUser); - materialInventoryService.xgkc(materialInventoryParamDO); + clearoutParamDOs.addAll(materialInventoryService.xgkc(materialInventoryParamDO)); //库存推送oms omsServiceFeign.omsEdit(materialInventoryOmsParamDO); } } } + return clearoutParamDOs; } // /** -// * 定时任务入口:每小时整点扫描「已交接(13)」状态的需报关出库单,调 sendDec 查报关结果, +// * 定时任务入口 // * 放行/结关的 → 状态 13→9 + 扣库存 + 推OMS;未放行 → 跳过下次再查。 // * 由 @Scheduled 触发,无需在 sys_job 表配置。 // */ 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 a227976e3..f81f97f5b 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 @@ -243,4 +243,20 @@ public class MaterialBaseInfo extends BaseVOEntity { @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; + } \ 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 0f7b436ba..7181779d5 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 @@ -292,4 +292,20 @@ public class MaterialBaseInfoPO extends BaseVOEntity { @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ 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 a0976ccac..c27b6eb77 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 @@ -265,4 +265,20 @@ public class MaterialBaseInfoDO extends BaseVOEntity { @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java index 22cd47527..6fd394b4b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java @@ -236,4 +236,10 @@ public class MaterialInventory extends BaseVOEntity { @Excel(name = "LOT编号") private String lotNumber; + @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 lastBillingTime; + } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java index c0da6ea7c..7168ca15b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java @@ -15,6 +15,7 @@ import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; import java.math.BigDecimal; import java.util.List; import java.util.Map; +import java.util.Set; /** * 物料库存Service接口 @@ -118,7 +119,7 @@ public interface IMaterialInventoryService extends IService * type 类型(1:上架2:分配3:取消分配4:出库交接5:移位6:库存调整7:库存冻结) * materialInventoryId 物料库存ID * */ - public void xgkc(MaterialInventoryParamDO materialInventoryParamDO); + public List xgkc(MaterialInventoryParamDO materialInventoryParamDO); public void kctzjl(MaterialInventoryParamDO materialInventoryParamDO,String adjustAction,LoginUser loginUser); @@ -130,5 +131,9 @@ public interface IMaterialInventoryService extends IService public Map querySetlleByShipperId(Long ShipperId); - public Map queryContract(Long shipperId); + public Map queryContract(Long contractManageId); + + public Map queryShipperParameters(Long shipperId,String parametersName); + + Map queryMaterialClassify(Long id); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java index e2a308915..7e0ed1acc 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java @@ -135,5 +135,9 @@ public interface MaterialInventoryMapper extends BaseMapper public Map querySetlleByShipperId(@Param("shipperId") Long shipperId); - public Map queryContract(@Param("shipperId") Long shipperId); + public Map queryContract(@Param("contractManageId") Long contractManageId); + + public Map queryShipperParameters(@Param("shipperId") Long shipperId,@Param("parametersName") String parametersName); + + public Map queryMaterialClassify(@Param("id") Long id); } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java index 9112fc962..d60537952 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java @@ -544,7 +544,7 @@ public class MaterialInventoryImpl extends ServiceImpl xgkc(MaterialInventoryParamDO materialInventoryParamDO) { BigDecimal netWeight = materialInventoryParamDO.getNetWeight() != null ? materialInventoryParamDO.getNetWeight() : BigDecimal.ZERO; BigDecimal grossWeight = materialInventoryParamDO.getGrossWeight() != null ? materialInventoryParamDO.getGrossWeight() : BigDecimal.ZERO; BigDecimal volume = materialInventoryParamDO.getVolume() != null ? materialInventoryParamDO.getVolume() : BigDecimal.ZERO; @@ -552,6 +552,7 @@ public class MaterialInventoryImpl extends ServiceImpl clearoutList = new ArrayList<>(); //类型(1:上架2:分配3:取消分配4:出库交接5:移位6:库存调整7:库存冻结) switch (type) { @@ -569,7 +570,10 @@ public class MaterialInventoryImpl extends ServiceImpl queryContract(Long shipperId) { - return materialInventoryMapper.queryContract(shipperId); + public Map queryContract(Long contractManageId) { + return materialInventoryMapper.queryContract(contractManageId); + } + + public Map queryShipperParameters(Long shipperId,String parametersName) { + return materialInventoryMapper.queryShipperParameters(shipperId,parametersName); + } + + @Override + public Map queryMaterialClassify(Long id) { + return materialInventoryMapper.queryMaterialClassify(id); } } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java index dd8fafbb0..15bd2ecff 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java @@ -233,4 +233,10 @@ public class MaterialInventoryPO extends MaterialBasePO { @ApiModelProperty("规格型号") @Excel(name = "规格型号") private String specificationModel; + + @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 lastBillingTime; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java index 92005c41f..09a74729f 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java @@ -288,4 +288,10 @@ public class MaterialInventoryQueryListPO extends MaterialBasePO { @ApiModelProperty("总面积(SQM),PDA 表单区显示") private BigDecimal totalArea; + + @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 lastBillingTime; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java index a5b752277..e022564df 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java @@ -271,4 +271,13 @@ public class MaterialInventoryDO extends MaterialBaseDO { @ApiModelProperty("库存分配匹配:Batch Ref NO's token 列表(默认不启用,仅显式赋值时参与匹配)") private List batchRefNoList; + + @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 lastBillingTime; + + private String lastBillingTimeStart; + private String lastBillingTimeEnd; } \ 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 f9b6056f6..092a25075 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 @@ -268,4 +268,13 @@ public class MaterialInventoryQueryListDO extends MaterialBaseDO { private String updateTimeStart; private String updateTimeEnd; + + @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 lastBillingTime; + + private String lastBillingTimeStart; + private String lastBillingTimeEnd; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java index 41db880e6..95a0b8718 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java @@ -138,7 +138,15 @@ public class MaterialInventoryDomainService { return materialInventoryService.querySetlleByShipperId(shipperId); } - public Map queryContract(Long shipperId) { - return materialInventoryService.queryContract(shipperId); + public Map queryContract(Long contractManageId) { + return materialInventoryService.queryContract(contractManageId); + } + + public Map queryShipperParameters(Long shipperId,String parametersName) { + return materialInventoryService.queryShipperParameters(shipperId,parametersName); + } + + public Map queryMaterialClassify(Long id) { + return materialInventoryService.queryMaterialClassify(id); } } \ No newline at end of file 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 85c38d9e5..a7d894c67 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 @@ -316,4 +316,20 @@ public class MaterialBaseInfoDTO extends BaseVOEntity { private String orgId; @ApiModelProperty(name = "是否正常物料: 0-是 1-否") private Integer isNormalMaterial; + + @ApiModelProperty("每月仓租") + @Excel(name = "每月仓租") + private BigDecimal monthlyWarehouseRent; + + @ApiModelProperty("半月仓租") + @Excel(name = "半月仓租") + private BigDecimal halfMonthWarehouseRent; + + @ApiModelProperty("每月仓租单位") + @Excel(name = "每月仓租单位") + private String monthlyWarehouseRentUnit; + + @ApiModelProperty("半月仓租单位") + @Excel(name = "半月仓租单位") + private String halfMonthWarehouseRentUnit; } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java index 2c5009552..86f9df456 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -203,4 +204,10 @@ public class MaterialInventoryDTO extends MaterialBaseDTO { private String updateTimeStart; private String updateTimeEnd; + @ApiModelProperty("上次计费时间") + private Date lastBillingTime; + + private String lastBillingTimeStart; + private String lastBillingTimeEnd; + } \ No newline at end of file diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java index 490d8c868..e6b8e0f46 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.Date; import java.util.List; /** @@ -201,4 +202,10 @@ public class MaterialInventoryQueryListDTO extends MaterialBaseDTO { private String updateTimeStart; private String updateTimeEnd; + + @ApiModelProperty("上次计费时间") + private Date lastBillingTime; + + private String lastBillingTimeStart; + private String lastBillingTimeEnd; } \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml index 7f4bc7e12..da19ff069 100644 --- a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml @@ -69,6 +69,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + @@ -78,7 +82,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" material_shape_name, a.material_size, a.material_length, a.material_width, a.material_height, a.remark, a.nullify, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.common, sku_code, a.unit_price, a.currency, a.origin_country, a.hs_code, a.declaration_unit, a.statutory_unit, a.statutory_second_unit, a.copy_code, a.push_status,a.push_time,a.push_by,a.goods_type,a.gross_weight,a.push_by_name,a.unit,a.INSURE_AMOUNT,a.CHARGE_STANDARD, - specification_model as specification_model,nvl(b.stock_qty,0) as stock_quantity,c.charge_standard as charge_standard_class,a.is_normal_material + specification_model as specification_model,nvl(b.stock_qty,0) as stock_quantity,c.charge_standard as charge_standard_class,a.is_normal_material, + a.monthly_warehouse_rent, a.half_month_warehouse_rent, a.monthly_warehouse_rent_unit, a.half_month_warehouse_rent_unit from material_base_info a left join ( select material_base_info_id, sum(INVENTORY_QUANTITY) as stock_qty from MATERIAL_INVENTORY group by material_base_info_id diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml index 557093b5e..1c2c95561 100644 --- a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -65,6 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -88,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.BATCH_REF_NO, a.SHEET_REF_NO, a.BOX_PALLET_NO,nvl(a.unit_name,b.unit_name) as unit_name, a.bar_code as inv_bar_code, a.in_order_number,a.lot_number, + a.last_billing_time, CASE WHEN IFNULL(sum(a.inventory_quantity), 0) = 0 THEN 1 ELSE 0 END as sort_order @@ -112,6 +114,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.BATCH_REF_NO, a.SHEET_REF_NO, a.BOX_PALLET_NO,nvl(a.unit_name,b.unit_name) as unit_name, a.bar_code as inv_bar_code, a.in_order_number,a.lot_number, + a.last_billing_time, CASE WHEN IFNULL(sum(a.inventory_quantity), 0) = 0 THEN 1 ELSE 0 END as sort_order @@ -263,6 +266,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and a.expiry_date DATEADD(DAY, 1, #{expiryDateEnd}) + + and a.last_billing_time >= #{lastBillingTimeStart} + + + and a.last_billing_time DATEADD(DAY, 1, #{lastBillingTimeEnd}) + @@ -381,6 +390,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and mi.BOX_PALLET_NO like concat('%', #{boxPalletNo}, '%') + + and mi.last_billing_time >= #{lastBillingTimeStart} + + + and mi.last_billing_time DATEADD(DAY, 1, #{lastBillingTimeEnd}) + @@ -1725,21 +1743,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + \ No newline at end of file