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 252a6a5d2..caf732f29 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 @@ -72,4 +72,10 @@ public interface BmsServiceFeign { @PostMapping("/businessDocumentApi/feignSave") public AjaxResult feignSaveBusinessDocument(@RequestBody BusinessDocumentFeign businessDocumentFeign); + + /** + * 根据结算对象id查询结算对象参数列表 + */ + @GetMapping("/settlementCustomersParametersApi/getListBySettlementCustomersId") + AjaxResult getListBySettlementCustomersId(@RequestParam("settlementCustomersId") Long settlementCustomersId); } \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteBmsFeignFallbackFactory.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteBmsFeignFallbackFactory.java index 091297e45..e6b97690d 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteBmsFeignFallbackFactory.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteBmsFeignFallbackFactory.java @@ -72,6 +72,11 @@ public class RemoteBmsFeignFallbackFactory implements FallbackFactory getSettlementCustomersParameters(Long settlementCustomersId) { + try { + AjaxResult ajaxResult = bmsServiceFeign.getListBySettlementCustomersId(settlementCustomersId); + if (ajaxResult == null || !"200".equals(String.valueOf(ajaxResult.get("code"))) || ajaxResult.get("data") == null) { + log.warn("按 settlementCustomersId 查询结算对象参数未成功:settlementCustomersId={}, code={}", settlementCustomersId, ajaxResult != null ? ajaxResult.get("code") : null); + return null; + } + return JSON.parseArray(JSON.toJSONString(ajaxResult.get("data")), SettlementCustomersParametersPO.class); + } catch (Exception e) { + log.warn("按 settlementCustomersId 查询结算对象参数异常,settlementCustomersId={}", settlementCustomersId, e); + return null; + } + } + public void pushContractManageToBms(String shipperId) { SettlementCustomersPO settlementCustomers = getSettlementCustomers(Long.valueOf(shipperId)); if (settlementCustomers == null) { @@ -1309,31 +1326,65 @@ public class ContractManageApplicationService { 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("未找到正式合同"); + List parametersList = getSettlementCustomersParameters(settlementCustomersId); + if (parametersList == null || parametersList.isEmpty()) { + log.warn("pushContractManageToBms 未找到结算对象参数,settlementCustomersId={}", settlementCustomersId); return; } - for (ContractManage contractManage : contractManages) { - Long contractManageId = contractManage.getContractManageId(); - ContractManageParameters contractManageParameters = contractManageParametersService.getOne(new LambdaQueryWrapper() - .eq(ContractManageParameters::getContractManageId, contractManageId),false); - if (contractManageParameters == null) { + + for (SettlementCustomersParametersPO param : parametersList) { + String parametersName = param.getParametersName(); + String content = param.getContent(); + if (StringUtils.isEmpty(content)) { + log.warn("结算对象参数 content 为空,parametersName={}, settlementCustomersId={}", parametersName, settlementCustomersId); continue; } - String parametersJson = contractManageParameters.getParametersJson(); - Map parametersMap = JSON.parseObject(parametersJson, new TypeReference>() {}); - //合约价 - BigDecimal hyj = (BigDecimal) parametersMap.get("hyj"); - buildBusinessDocument(hyj,settlementCustomers,contractManage,"","",""); + Map contentMap = JSON.parseObject(content, new TypeReference>() {}); + Integer sfzdcz = Integer.valueOf(contentMap.get("sfzdcz").toString()); + if (sfzdcz != 1) { + log.info("结算对象参数 sfzdcz 不为1,跳过推送,parametersName={}, sfzdcz={}", parametersName, sfzdcz); + continue; + } + + String warehouseTempLayerType; + String serviceItemsName; + if ("冻仓计费配置".equals(parametersName)) { + warehouseTempLayerType = "DC"; + serviceItemsName = "冻仓仓租费用"; + } else if ("干仓计费配置".equals(parametersName)) { + warehouseTempLayerType = "GC"; + serviceItemsName = "干仓仓租费用"; + } else { + log.warn("未知的结算对象参数类型,parametersName={}", parametersName); + continue; + } + + List contractManages = contractManageMapper.selectList(new LambdaQueryWrapper() + .eq(ContractManage::getContractRentType, "NORMAL") + .eq(ContractManage::getContractState, 2) + .eq(ContractManage::getDelFlag, 1) + .eq(ContractManage::getSettlementCustomersId, settlementCustomersId) + .eq(ContractManage::getWarehouseTempLayerType, warehouseTempLayerType)); + if (contractManages == null || contractManages.isEmpty()) { + log.warn("未找到正式合同,warehouseTempLayerType={}, settlementCustomersId={}", warehouseTempLayerType, settlementCustomersId); + continue; + } + 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, "0D081", "干仓仓租费用", warehouseTempLayerType, serviceItemsName); + } } } - private void buildBusinessDocument(BigDecimal fee, SettlementCustomersPO settlementCustomers,ContractManage contractManage, String code, String name, String warehouseType) { + private void buildBusinessDocument(BigDecimal fee, SettlementCustomersPO settlementCustomers, ContractManage contractManage, String code, String name, String warehouseType, String serviceItemsName) { Long settlementCustomersId = settlementCustomers.getSettlementCustomersId(); Long settlementEntityId = settlementCustomers.getSettlementEntityId(); @@ -1357,7 +1408,7 @@ public class ContractManageApplicationService { businessDocumentFeign.setFirstSubjectName(name); businessDocumentFeign.setBillingTime(new Date()); businessDocumentFeign.setServiceItemsCode("GC_CZ"); - businessDocumentFeign.setServiceItemsName("干仓仓租费用"); + businessDocumentFeign.setServiceItemsName(serviceItemsName); businessDocumentFeign.setSettlementWay(1); businessDocumentFeign.setOriginalBusinessNum(contractManage.getContractNumber()); businessDocumentFeign.setWarehouseType(warehouseType); 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 36e39fc07..d48b02d9e 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 @@ -242,7 +242,5 @@ 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/interfaces/facade/contractManage/ContractManageApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/contractManage/ContractManageApi.java index bbc4bc538..71b3dde17 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 @@ -263,6 +263,7 @@ public class ContractManageApi extends BaseController{ String shipperId = XxlJobHelper.getJobParam(); logger.info("XXL-JOB 开始入库业务单推送bms计费流水,货主id参数:{}", shipperId); try { + contractManageApplicationService.pushContractManageToBms(shipperId); // 设置任务执行结果 XxlJobHelper.handleSuccess("入库业务单推送bms计费流水执行成功"); } catch (Exception e) { diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomersParameters/SettlementCustomersParametersApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomersParameters/SettlementCustomersParametersApplicationService.java index 47959ecc6..3863fb2d7 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomersParameters/SettlementCustomersParametersApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/settlementCustomersParameters/SettlementCustomersParametersApplicationService.java @@ -84,4 +84,11 @@ public class SettlementCustomersParametersApplicationService { Long[] ids = idSet.stream().map(Long::valueOf).toArray(Long[]::new); return settlementCustomersParametersDomainService.delete(ids); } -} + + /** + * 根据结算对象id查询结算对象参数列表 + */ + public List getListBySettlementCustomersId(Long settlementCustomersId) { + return settlementCustomersParametersDomainService.getListBySettlementCustomersId(settlementCustomersId); + } +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/facade/ISettlementCustomersParametersService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/facade/ISettlementCustomersParametersService.java index 97a8a3840..68b91c32e 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/facade/ISettlementCustomersParametersService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/facade/ISettlementCustomersParametersService.java @@ -39,4 +39,9 @@ public interface ISettlementCustomersParametersService extends IService getListBySettlementCustomersId(Long settlementCustomersId); +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/persistence/SettlementCustomersParametersImpl.java b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/persistence/SettlementCustomersParametersImpl.java index 51f397a5c..60b582c73 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/persistence/SettlementCustomersParametersImpl.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/repository/persistence/SettlementCustomersParametersImpl.java @@ -1,5 +1,6 @@ package com.mhd.bms.domain.settlementCustomersParameters.repository.persistence; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mhd.bms.domain.settlementCustomersParameters.entity.SettlementCustomersParameters; import com.mhd.bms.domain.settlementCustomersParameters.repository.facade.ISettlementCustomersParametersService; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 结算对象参数Service业务层处理 @@ -78,4 +80,16 @@ public class SettlementCustomersParametersImpl extends ServiceImpl getListBySettlementCustomersId(Long settlementCustomersId) { + List list = this.list(new LambdaQueryWrapper() + .eq(SettlementCustomersParameters::getSettlementCustomersId, settlementCustomersId) + .eq(SettlementCustomersParameters::getDelFlag, 1)); + return list.stream().map(item -> { + SettlementCustomersParametersPO po = new SettlementCustomersParametersPO(); + BeanUtils.copyProperties(item, po); + return po; + }).collect(Collectors.toList()); + } +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/service/SettlementCustomersParametersDomainService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/service/SettlementCustomersParametersDomainService.java index 683bde910..69012b64b 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/service/SettlementCustomersParametersDomainService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/settlementCustomersParameters/service/SettlementCustomersParametersDomainService.java @@ -56,4 +56,11 @@ public class SettlementCustomersParametersDomainService { public SettlementCustomersParametersPO getInfo(Long id) { return settlementCustomersParametersService.getInfo(id); } -} + + /** + * 根据结算对象id查询结算对象参数列表 + */ + public List getListBySettlementCustomersId(Long settlementCustomersId) { + return settlementCustomersParametersService.getListBySettlementCustomersId(settlementCustomersId); + } +} \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/SettlementCustomersParametersApi.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/SettlementCustomersParametersApi.java index 8e0a67ca9..8d24ecfb3 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/SettlementCustomersParametersApi.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/facadeApi/SettlementCustomersParametersApi.java @@ -89,4 +89,13 @@ public class SettlementCustomersParametersApi extends BaseController { public AjaxResult getInfoById(SettlementCustomersParametersDTO settlementCustomersParametersDTO) { return AjaxResult.success(settlementCustomersParametersApplicationService.getInfo(settlementCustomersParametersDTO.getId())); } -} + + /** + * 根据结算对象id查询结算对象参数列表 + */ + @ApiOperation("根据结算对象id查询结算对象参数列表") + @GetMapping(value = "/getListBySettlementCustomersId") + public AjaxResult getListBySettlementCustomersId(@RequestParam("settlementCustomersId") Long settlementCustomersId) { + return AjaxResult.success(settlementCustomersParametersApplicationService.getListBySettlementCustomersId(settlementCustomersId)); + } +} \ No newline at end of file