From 2a570fbefc168b451ebc39b17706cfdf7aa3e0ff Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Wed, 25 Feb 2026 19:56:10 +0800 Subject: [PATCH] =?UTF-8?q?wms=E7=A7=9F=E8=B5=81=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A8=E9=80=81=E5=88=B0bms=EF=BC=88?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=20=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=B2=A1=E6=9C=89=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=BA=BA=20=E9=9C=80=E8=A6=81=E6=94=B9=E9=80=A0=E5=90=8E?= =?UTF-8?q?=E9=9D=A2=E6=96=B9=E6=B3=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mhd/system/api/BmsServiceFeign.java | 6 + .../mhd/system/api/SystemServiceFeign.java | 9 + .../mhd/system/api/domain/MaterialBasePO.java | 65 ++++++ .../api/domain/MaterialInventoryPO.java | 217 ++++++++++++++++++ .../api/domain/MaterialMoreDetailPO.java | 79 +++++++ .../RemoteBmsFeignFallbackFactory.java | 5 + .../RemoteSystemFeignFallbackFactory.java | 10 + .../core/domain/dto/BusinessDataPushDTO.java | 9 + .../com/mhd/job/task/AppLocationTask.java | 23 ++ .../Lease/LeaseApplicationService.java | 94 +++++++- .../ContractManageApplicationService.java | 11 +- .../service/ExpenseAccountDomainService.java | 4 +- .../contractManage/ContractManageApi.java | 9 +- .../interfaces/facadeApi/lease/LeaseApi.java | 10 + .../CostCalculationApplicationService.java | 23 +- .../BusinessDocumentApplicationService.java | 80 ++++++- .../dto/billingRules/CostCalculationDTO.java | 5 + .../businessDocument/BusinessDocumentDTO.java | 4 + .../facadeApi/BusinessDocumentApi.java | 21 ++ 19 files changed, 668 insertions(+), 16 deletions(-) create mode 100644 mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBasePO.java create mode 100644 mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryPO.java create mode 100644 mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialMoreDetailPO.java 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 78dd95d66..e378a2f5b 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 @@ -49,4 +49,10 @@ public interface BmsServiceFeign { */ @GetMapping("/documentTypeApi/getDocumentInfoByCodeSet") AjaxResult getDocumentInfoByCodeSet(@RequestParam("documentTypeCodeSet") Set documentTypeCodeSet); + + /** + * 定时任务整租推送到bms + */ + @PostMapping("/businessDocumentApi/wholeRentSynchronization") + public AjaxResult businessDocumentApiSave(@RequestBody BusinessDataPushDTO businessDataPushDTO); } diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/SystemServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/SystemServiceFeign.java index 57439c719..ab077d3a2 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/SystemServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/SystemServiceFeign.java @@ -331,7 +331,16 @@ public interface SystemServiceFeign { @GetMapping("/contractManageApi/getInfoByCustomer") public AjaxResult getInfoByCustomer(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType); + /** + * 根据结算主体获取合同信息 + */ + @GetMapping("/contractManageApi/getInfoByCustomer2") + public AjaxResult getInfoByCustomer2(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType,@RequestParam("topOrganizationId") Long topOrganizationId); + @GetMapping("/contractManageApi/queryList") public AjaxResult queryList(); + @GetMapping("/LeaseApi/wholeRentSynchronization") + public AjaxResult wholeRentSynchronization(); + } diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBasePO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBasePO.java new file mode 100644 index 000000000..14a1488e6 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialBasePO.java @@ -0,0 +1,65 @@ +package com.mhd.system.api.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author ZhouGY + * @title MaterialBaseDO + * @description: TODO + * @date 2024/7/5 10:59 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class MaterialBasePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; +} diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryPO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryPO.java new file mode 100644 index 000000000..e40d3b0bb --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialInventoryPO.java @@ -0,0 +1,217 @@ +package com.mhd.system.api.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +@ApiModel(value = "物料库存对象", description = "物料库存响应对象") +public class MaterialInventoryPO extends MaterialBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + + @ApiModelProperty("单位") + @Excel(name = "单位") + private String unit; + + @ApiModelProperty("净重(KG)") + @Excel(name = "净重(KG)") + private BigDecimal netWeight; + + @ApiModelProperty("毛重(KG)") + @Excel(name = "毛重(KG)") + private BigDecimal grossWeight; + + @ApiModelProperty("体积") + @Excel(name = "体积") + private BigDecimal volume; + + @ApiModelProperty("面积") + @Excel(name = "面积") + private BigDecimal area; + + + @ApiModelProperty("Batch Ref NO's") + @Excel(name = "Batch Ref NO's") + private String batchRefNo; + + @ApiModelProperty("Sheet Ref NO's") + @Excel(name = "Sheet Ref NO's") + private String sheetRefNo; + + @ApiModelProperty("箱号/卡板号") + @Excel(name = "箱号/卡板号") + private String boxPalletNo; + + @ApiModelProperty("扩展字段1") + @Excel(name = "扩展字段1") + private String extAttr1; + + @ApiModelProperty("扩展字段2") + @Excel(name = "扩展字段2") + private String extAttr2; + + @ApiModelProperty("生产日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date productionDate; + + @ApiModelProperty("过期日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "过期日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expiryDate; + + @ApiModelProperty("存货日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "存货日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inventoryDate; + + @ApiModelProperty("ExtAttr3") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "ExtAttr3", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date extAttr3; + + @ApiModelProperty("ExtAttr4") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "ExtAttr4", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date extAttr4; + + @ApiModelProperty("物料更多属性列表(批次属性)") + private List materialMoreDetailList; + + @ApiModelProperty("包装名") + @Excel(name = "包装名") + private String packName; + + + @ApiModelProperty("单位名") + @Excel(name = "单位名") + private String unitName; +} \ No newline at end of file diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialMoreDetailPO.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialMoreDetailPO.java new file mode 100644 index 000000000..0354b35e0 --- /dev/null +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/MaterialMoreDetailPO.java @@ -0,0 +1,79 @@ +package com.mhd.system.api.domain; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料更多属性明细对象 material_more_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "物料更多属性明细对象", description = "物料更多属性明细响应对象") +public class MaterialMoreDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialMoreDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次详情id") + @Excel(name = "批次详情id") + private Long batchDetailId; + + @ApiModelProperty("批次标签") + @Excel(name = "批次标签") + private String batchLabels; + + @ApiModelProperty("输入控制: 1-必填 2-可选") + @Excel(name = "输入控制: 1-必填 2-可选") + private String inputControl; + + @ApiModelProperty("属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + @Excel(name = "属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + private String attributeFormat; + + @ApiModelProperty("属性选项") + @Excel(name = "属性选项") + private String attributeOption; + + @ApiModelProperty("属性值") + @Excel(name = "属性值") + private String attributeValue; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} 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 97423467a..debc58c13 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 @@ -51,6 +51,11 @@ public class RemoteBmsFeignFallbackFactory implements FallbackFactory documentTypeCodeSet) { return AjaxResult.error(throwable.getMessage()); } + + @Override + public AjaxResult businessDocumentApiSave(BusinessDataPushDTO businessDataPushDTO) { + return AjaxResult.error(throwable.getMessage()); + } }; } } diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteSystemFeignFallbackFactory.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteSystemFeignFallbackFactory.java index d14acfcc5..ea4105985 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteSystemFeignFallbackFactory.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteSystemFeignFallbackFactory.java @@ -264,10 +264,20 @@ public class RemoteSystemFeignFallbackFactory implements FallbackFactory sysJobs = jobService.selectJobList(sysJob); + try { + jobService.deleteJob(sysJobs.get(0)); + } catch (SchedulerException e) { + throw new RuntimeException(e); + } + } + public void getUserException(){ // log.info("app离线司机任务开始调用,时间{}", DateUtil.date()); //所有在运输的司机 diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java index 7efc00a27..2db4266f3 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/Lease/LeaseApplicationService.java @@ -2,9 +2,9 @@ package com.mhd.basic.application.service.Lease; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mhd.basic.application.service.storageSection.StorageSectionApplicationService; import com.mhd.basic.domain.lease.entity.Lease; @@ -21,12 +21,16 @@ import com.mhd.basic.domain.storageSection.repository.po.StorageSectionPO; import com.mhd.basic.domain.storageSection.repository.todo.StorageSectionDO; import com.mhd.basic.interfaces.dto.lease.LeaseDTO; import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.ShipperLeaseDetailsDTO; +import com.mhd.common.core.domain.dto.BusinessDataPushDTO; import com.mhd.common.core.exception.ServiceException; 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.WmsServiceFeign; +import com.mhd.system.api.domain.BatchDetailFeignPO; import com.mhd.system.api.domain.MaterialInventoryDTO; +import com.mhd.system.api.domain.MaterialInventoryPO; import com.mhd.system.api.domain.WarehouseFeignPO; import com.mhd.system.api.model.LoginUser; import com.mhd.system.service.ISysDictTypeService; @@ -71,6 +75,12 @@ public class LeaseApplicationService { @Autowired private SystemServiceFeign systemServiceFeign; + @Autowired + private BmsServiceFeign bmsServiceFeign; + + @Autowired + private WmsServiceFeign WmsServiceFeign; + /** * 分页查询租赁管理列表 */ @@ -419,6 +429,88 @@ public class LeaseApplicationService { return warehouseOccupancyRatesList; } + + /** + * 定时任务整租推送到bms + */ + public void wholeRentSynchronization() { + log.info("定时任务整租推送到bms触发--开始"); + LeaseDO leaseDO = new LeaseDO(); + leaseDO.setTime(new Date()); + leaseDO.setLeaseType("整租"); + List leasePOList = queryList(leaseDO); + log.info("整租数据{}",JSONObject.toJSONString(leasePOList)); + for (LeasePO leasePO: leasePOList) { + if (leasePO.getShipperId() == null) { + continue; + } + log.info("开始执行{}",JSONObject.toJSONString(leasePOList)); + BusinessDataPushDTO businessDataPushDTO = new BusinessDataPushDTO(); + businessDataPushDTO.setOrganizationId(leasePO.getOrganizationId()); + businessDataPushDTO.setTopOrganizationId(leasePO.getTopOrganizationId()); + businessDataPushDTO.setOrganizationName(leasePO.getOrganizationName()); + businessDataPushDTO.setBelongModuleCode("wms"); +// businessDataPushDTO.setBillAmount();//计费金额 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("lease_area",leasePO.getLeaseArea());//租赁面积 + jsonObject.put("jiecun_cbm",0);//结存体积 + businessDataPushDTO.setDocumentFormJson(jsonObject.toJSONString()); + businessDataPushDTO.setDocumentTypeCode("ckzld"); + businessDataPushDTO.setSettlementEntityId(leasePO.getShipperId()); + businessDataPushDTO.setSecondSubjectCode("26WMS01"); + businessDataPushDTO.setServiceItemsCode("26WMS费用"); + bmsServiceFeign.businessDocumentApiSave(businessDataPushDTO); + } + log.info("定时任务整租推送到bms触发--结束"); + } + + + /** + * 定时任务散租推送到bms + */ + @Scheduled(cron = "0 0 0 * * ?") + public void ScatteredRentalSynchronization() { + LeaseDO leaseDO = new LeaseDO(); + leaseDO.setTime(new Date()); + leaseDO.setLeaseType("散租"); + List leasePOList = queryList(leaseDO); + for (LeasePO leasePO: leasePOList) { + if (leasePO.getShipperId() == null) { + continue; + } + MaterialInventoryDTO materialInventoryDTO = new MaterialInventoryDTO(); + materialInventoryDTO.setShipperId(leasePO.getShipperId()); + BigDecimal totalVolume = BigDecimal.ZERO; + AjaxResult ajaxResult = WmsServiceFeign.materialInventoryApiListAll(materialInventoryDTO); + if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) { + List batchDetailFeignPOList = JSON.parseArray( + com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), MaterialInventoryPO.class); + if (batchDetailFeignPOList != null && batchDetailFeignPOList.size() > 0) { + continue;//没有货跳过 + } + totalVolume = batchDetailFeignPOList.stream() + .map(MaterialInventoryPO::getVolume) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + } + BusinessDataPushDTO businessDataPushDTO = new BusinessDataPushDTO(); + businessDataPushDTO.setOrganizationId(leasePO.getOrganizationId()); + businessDataPushDTO.setTopOrganizationId(leasePO.getTopOrganizationId()); + businessDataPushDTO.setOrganizationName(leasePO.getOrganizationName()); + businessDataPushDTO.setBelongModuleCode("wms"); +// businessDataPushDTO.setBillAmount();//计费金额 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("lease_area",0);//租赁面积 + jsonObject.put("jiecun_cbm",totalVolume);//结存体积 + businessDataPushDTO.setDocumentFormJson(jsonObject.toJSONString()); + businessDataPushDTO.setDocumentTypeCode("ckzld"); + businessDataPushDTO.setSettlementEntityId(leasePO.getShipperId()); + businessDataPushDTO.setSecondSubjectCode("26WMS01"); + businessDataPushDTO.setServiceItemsCode("26WMS费用"); + bmsServiceFeign.businessDocumentApiSave(businessDataPushDTO); + } + } + // /** // * @description 设置数据字典键值 // * @author ZhouGY 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 37ec7c423..a855cffd9 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 @@ -37,6 +37,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestParam; import java.util.*; import java.util.stream.Collectors; @@ -351,14 +352,14 @@ public class ContractManageApplicationService { * @param settlementCustomersCode 结算主体code * @param contractType 合同类型 */ - public ContractManagePO getInfoByCustomer(String settlementCustomersCode,Integer contractType) { + public ContractManagePO getInfoByCustomer(String settlementCustomersCode,Integer contractType, Long topOrganizationId) { /* 首先根据合同类型(仓储、运输),以及结算客户,查询合同信息 如果传了结算主体,则根据结算主体以及当前时间查询有效的特殊合同,如果特殊合同没有,则查询通用合同 */ //获取当前登录人信息 LoginUser loginUser = SecurityUtils.getLoginUser(); - if (ObjectUtil.isNull(loginUser)) { + if (ObjectUtil.isNull(loginUser) && topOrganizationId == null) { throw new DigitalLogisticsException(UserError.TIMEOUT); } if(contractType==null){ @@ -368,7 +369,11 @@ public class ContractManageApplicationService { //查询当前日期在有效期内的合同 ContractManageDO queryParam = new ContractManageDO(); queryParam.setNowDateString(DateUtil.format(new Date(),"yyyy-MM-dd")); - queryParam.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + if (!ObjectUtil.isNull(loginUser)) { + queryParam.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + }else { + queryParam.setTopOrganizationId(topOrganizationId); + } List contractManagePOList = contractManageDomainService.queryList(queryParam); if(contractManagePOList != null && contractManagePOList.size()>0){ if(StringUtils.isNotEmpty(settlementCustomersCode)){ diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/service/ExpenseAccountDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/service/ExpenseAccountDomainService.java index c5f4c5d87..b6525897e 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/service/ExpenseAccountDomainService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/service/ExpenseAccountDomainService.java @@ -81,7 +81,9 @@ public class ExpenseAccountDomainService { public ExpenseAccountPO getInfoByCode(String subjectCode) { ExpenseAccountDO expenseAccountDO = new ExpenseAccountDO(); expenseAccountDO.setSubjectCode(subjectCode); - expenseAccountDO.setTopOrganizationId(SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); + if (SecurityUtils.getLoginUser() != null) { + expenseAccountDO.setTopOrganizationId(SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); + } return expenseAccountService.getInfoByCode(expenseAccountDO); } public List selectExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO){ 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 947573d53..79b1229a2 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 @@ -109,7 +109,14 @@ public class ContractManageApi extends BaseController{ @GetMapping(value = "/getInfoByCustomer") public AjaxResult getInfoByCustomer(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType) { - return AjaxResult.success(contractManageApplicationService.getInfoByCustomer(settlementCustomersCode,contractType)); + return AjaxResult.success(contractManageApplicationService.getInfoByCustomer(settlementCustomersCode,contractType,null)); + } + + @ApiOperation("根据结算主体获取合同信息") + @GetMapping(value = "/getInfoByCustomer2") + public AjaxResult getInfoByCustomer2(@RequestParam("settlementCustomersCode") String settlementCustomersCode,@RequestParam("contractType") Integer contractType,@RequestParam("topOrganizationId") Long topOrganizationId) + { + return AjaxResult.success(contractManageApplicationService.getInfoByCustomer(settlementCustomersCode,contractType,topOrganizationId)); } @ApiOperation("根据合同编码获取合同管理") diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java index 2da0ad39e..818374ffe 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/lease/LeaseApi.java @@ -108,5 +108,15 @@ public class LeaseApi extends BaseController{ return toAjax(leaseApplicationService.nullifyByIds(leaseIds)); } + /** + * 批量作废租赁 + */ + @ApiOperation("整租同步到bms计费单据") + @GetMapping("/wholeRentSynchronization") + public AjaxResult wholeRentSynchronization() + { + leaseApplicationService.wholeRentSynchronization(); + return AjaxResult.success(); + } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/billingRules/CostCalculationApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/billingRules/CostCalculationApplicationService.java index 71c83d8cb..aa7ff7e49 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/billingRules/CostCalculationApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/billingRules/CostCalculationApplicationService.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mhd.bms.domain.billingRules.repository.po.BillingParamsPO; import com.mhd.bms.domain.billingRules.repository.po.BillingRulesPO; import com.mhd.bms.domain.billingRules.service.BillingParamsDomainService; @@ -12,6 +13,7 @@ import com.mhd.bms.domain.costCalculation.entity.BillingOutputEntity; import com.mhd.bms.domain.costCalculation.entity.BillingParamsEntity; import com.mhd.bms.domain.costCalculation.po.BillingCostPo; import com.mhd.bms.domain.documentType.entity.DocumentType; +import com.mhd.bms.domain.documentType.repository.facade.IDocumentTypeService; import com.mhd.bms.domain.documentType.repository.po.DocumentTypePO; import com.mhd.bms.domain.documentType.service.DocumentTypeDomainService; import com.mhd.bms.domain.settlementCustomers.repository.po.SettlementCustomersPO; @@ -77,10 +79,10 @@ public class CostCalculationApplicationService { 3:产生计费任务记录 */ //获取当前登录人信息 - LoginUser loginUser = SecurityUtils.getLoginUser(); - if (ObjectUtil.isNull(loginUser)) { - throw new DigitalLogisticsException(UserError.TIMEOUT); - } +// LoginUser loginUser = SecurityUtils.getLoginUser(); +// if (ObjectUtil.isNull(loginUser)) { +// throw new DigitalLogisticsException(UserError.TIMEOUT); +// } BillingCostPo result = new BillingCostPo(); BeanUtils.copyProperties(costCalculationDTO, result); TaskFlowRecordsDO taskFlowRecordsDO = new TaskFlowRecordsDO(); @@ -104,7 +106,8 @@ public class CostCalculationApplicationService { return result; } - + @Autowired + private IDocumentTypeService documentTypeService; /** * 校验必填,并获取本次计算合适的计费参数公式 * @param costCalculationDTO 计算参数 @@ -125,7 +128,15 @@ public class CostCalculationApplicationService { } //查询单据信息 - DocumentType documentType = documentTypeDomainService.queryByCode(costCalculationDTO.getDocumentTypeCode()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DocumentType::getDocumentTypeCode, costCalculationDTO.getDocumentTypeCode()); + if (SecurityUtils.getLoginUser() != null) { + queryWrapper.eq(DocumentType::getTopOrganizationId, SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); + }else { + queryWrapper.eq(DocumentType::getTopOrganizationId, costCalculationDTO.getTopOrganizationId()); + } + queryWrapper.eq(DocumentType::getDelFlag ,1); + DocumentType documentType = documentTypeService.getOne(queryWrapper); if(documentType == null){ throw new ServiceException("单据类型未找到"); } diff --git a/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java b/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java index d463bf061..4f4729e27 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/application/server/businessDocument/BusinessDocumentApplicationService.java @@ -3,8 +3,10 @@ package com.mhd.bms.application.server.businessDocument; 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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.mhd.bms.application.server.billingRules.CostCalculationApplicationService; +import com.mhd.bms.application.server.settlementCustomers.SettlementCustomersApplicationService; import com.mhd.bms.domain.billingStatement.service.BillingStatementDomainService; import com.mhd.bms.domain.businessDocument.entity.BusinessDocument; import com.mhd.bms.domain.businessDocument.repository.po.BusinessDocumentPO; @@ -13,9 +15,11 @@ import com.mhd.bms.domain.businessDocument.service.BusinessDocumentDomainService import com.mhd.bms.domain.costCalculation.po.BillingCostPo; import com.mhd.bms.domain.documentType.entity.DocumentFromEntity; import com.mhd.bms.domain.documentType.entity.DocumentType; +import com.mhd.bms.domain.documentType.repository.facade.IDocumentTypeService; import com.mhd.bms.domain.documentType.repository.po.DocumentTypePO; import com.mhd.bms.domain.documentType.service.DocumentTypeDomainService; import com.mhd.bms.domain.settlementCustomers.entity.SettlementCustomers; +import com.mhd.bms.domain.settlementCustomers.repository.facade.ISettlementCustomersService; import com.mhd.bms.domain.settlementCustomers.repository.po.SettlementCustomersPO; import com.mhd.bms.domain.settlementCustomers.service.SettlementCustomersDomainService; import com.mhd.bms.infrastructure.feign.vo.ContractManageDetailPO; @@ -76,6 +80,8 @@ public class BusinessDocumentApplicationService { private BillingStatementDomainService billingStatementDomainService; @Autowired private CostCalculationApplicationService costCalculationApplicationService; + @Autowired + private ISettlementCustomersService settlementCustomersService; /** @@ -163,6 +169,8 @@ public class BusinessDocumentApplicationService { return businessDocumentDomainService.insert(businessDocumentDO); } + @Autowired + private IDocumentTypeService documentTypeService; /** * 校验表单单据类型必填 * @param businessDocumentDO @@ -171,7 +179,15 @@ public class BusinessDocumentApplicationService { if(!StringUtils.isNotEmpty(businessDocumentDO.getDocumentTypeCode())){ throw new ServiceException("所选表单不能为空"); } - DocumentType documentType = documentTypeDomainService.queryByCode(businessDocumentDO.getDocumentTypeCode()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DocumentType::getDocumentTypeCode, businessDocumentDO.getDocumentTypeCode()); + if (SecurityUtils.getLoginUser() != null) { + queryWrapper.eq(DocumentType::getTopOrganizationId, SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); + }else { + queryWrapper.eq(DocumentType::getTopOrganizationId, businessDocumentDO.getTopOrganizationId()); + } + queryWrapper.eq(DocumentType::getDelFlag ,1); + DocumentType documentType = documentTypeService.getOne(queryWrapper); if(null == documentType){ throw new ServiceException("表单类型信息未找到"); } @@ -221,7 +237,15 @@ public class BusinessDocumentApplicationService { } //根据单据类型id查询单据类型数据,并赋值 if(StringUtils.isNotEmpty(businessDocumentDO.getDocumentTypeCode())){ - DocumentType documentType = documentTypeDomainService.queryByCode(businessDocumentDO.getDocumentTypeCode()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(DocumentType::getDocumentTypeCode, businessDocumentDO.getDocumentTypeCode()); + if (SecurityUtils.getLoginUser() != null) { + queryWrapper.eq(DocumentType::getTopOrganizationId, SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); + }else { + queryWrapper.eq(DocumentType::getTopOrganizationId, businessDocumentDO.getTopOrganizationId()); + } + queryWrapper.eq(DocumentType::getDelFlag ,1); + DocumentType documentType = documentTypeService.getOne(queryWrapper); if(null != documentType){ businessDocumentDO.setDocumentType(documentType.getDocumentType()); businessDocumentDO.setDocumentTypeCode(documentType.getDocumentTypeCode()); @@ -247,7 +271,15 @@ public class BusinessDocumentApplicationService { //根据结算对象code查询结算对象数据,并赋值 if(StringUtils.isNotEmpty(businessDocumentDO.getSettlementCustomersCode())){ - SettlementCustomers settlementCustomers = settlementCustomersDomainService.queryByCode(businessDocumentDO.getSettlementCustomersCode()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SettlementCustomers::getSettlementCustomersCode, businessDocumentDO.getSettlementCustomersCode()); + if (SecurityUtils.getLoginUser() != null) { + queryWrapper.eq(SettlementCustomers::getTopOrganizationId, SecurityUtils.getLoginUser().getUserPo().getTopOrganizationId()); + }else { + queryWrapper.eq(SettlementCustomers::getTopOrganizationId, businessDocumentDO.getTopOrganizationId()); + } + queryWrapper.eq(SettlementCustomers::getDelFlag, 1); + SettlementCustomers settlementCustomers = settlementCustomersService.getOne(queryWrapper); if(null == settlementCustomers){ throw new ServiceException("结算对象信息未找到"); } @@ -305,7 +337,7 @@ public class BusinessDocumentApplicationService { if(businessDocumentDO.getBelongModuleCode().equals(BelongModuleCode.WMS.getCode())){ contractType = 1; } - AjaxResult ajaxResult = systemServiceFeign.getInfoByCustomer(businessDocumentDO.getSettlementCustomersCode(),contractType); + AjaxResult ajaxResult = systemServiceFeign.getInfoByCustomer2(businessDocumentDO.getSettlementCustomersCode(),contractType,businessDocumentDO.getTopOrganizationId()); if(!"200".equals(String.valueOf(ajaxResult.get("code")))) { throw new ServiceException("合同信息未找到"); } @@ -760,4 +792,44 @@ public class BusinessDocumentApplicationService { } return true; } + + + + @Transactional(rollbackFor = Exception.class) + public Boolean wholeRentSynchronization(BusinessDocumentDO businessDocumentDO) { + log.info("定时任务进入BMS业务单据保存--开始"); + //根据结算主题id查询 结算对象编码 + Long settlementEntityId = businessDocumentDO.getSettlementEntityId(); + List settlementCustomersList = settlementCustomersService.list(new LambdaQueryWrapper() + .eq(SettlementCustomers::getSettlementEntityId, settlementEntityId) + .eq(SettlementCustomers::getDelFlag, 1) + ); + if (settlementCustomersList != null && settlementCustomersList.size() > 0) { + businessDocumentDO.setSettlementCustomersCode(settlementCustomersList.get(0).getSettlementCustomersCode()); + }else { + return false; + } + //校验使用的表单是否必填校验 + checkDoucumentType(businessDocumentDO); + //处理数据 + handleDate(businessDocumentDO); + businessDocumentDO.setDataSources(2); + businessDocumentDO.setBusinessFlow(OrderSequence.getOrderCode("LS")); + businessDocumentDO.setTopOrganizationId(businessDocumentDO.getTopOrganizationId()); + businessDocumentDO.setOrganizationId(businessDocumentDO.getOrganizationId()); + businessDocumentDO.setOrganizationName(businessDocumentDO.getOrganizationName()); + //调用费用计算,计算费用金额进行保存 + CostCalculationDTO costCalculationDTO = new CostCalculationDTO(); + costCalculationDTO.setOriginalBusinessNum(businessDocumentDO.getOriginalBusinessNum()); + costCalculationDTO.setContractNumber(businessDocumentDO.getContractNumber()); + costCalculationDTO.setFormJson(businessDocumentDO.getDocumentFormJson()); + costCalculationDTO.setSubjectCode(StringUtils.isEmpty(businessDocumentDO.getSecondSubjectCode()) ? businessDocumentDO.getFirstSubjectCode():businessDocumentDO.getSecondSubjectCode()); + costCalculationDTO.setDocumentTypeCode(businessDocumentDO.getDocumentTypeCode()); + costCalculationDTO.setTopOrganizationId(businessDocumentDO.getTopOrganizationId()); + BillingCostPo billingCostPo = costCalculationApplicationService.costCalculation(costCalculationDTO); + businessDocumentDO.setEstimatedCost(billingCostPo.getComputationalCost()); + businessDocumentDO.setBillAmount(billingCostPo.getComputationalCost());//计费金额与计算金额一致 + log.info("定时任务进入BMS业务单据保存--结束"); + return businessDocumentDomainService.insert(businessDocumentDO); + } } diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingRules/CostCalculationDTO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingRules/CostCalculationDTO.java index 5f433301f..0f249d083 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingRules/CostCalculationDTO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billingRules/CostCalculationDTO.java @@ -1,5 +1,6 @@ package com.mhd.bms.interfaces.dto.billingRules; +import com.mhd.common.core.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.validation.annotation.Validated; @@ -35,6 +36,10 @@ public class CostCalculationDTO{ @NotBlank(message = "计费参数不能为空") private String formJson; + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + 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 d2f8ba10c..1a625530c 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 @@ -8,6 +8,7 @@ import java.math.BigDecimal; import io.swagger.annotations.ApiModelProperty; import com.mhd.common.core.web.domain.BaseVOEntity; +import javax.validation.constraints.NotNull; import java.util.List; /** @@ -196,4 +197,7 @@ public class BusinessDocumentDTO extends BaseVOEntity{ @ApiModelProperty("重算金额") private BigDecimal recalculateCost; + + @ApiModelProperty("结算主体id") + private Long settlementEntityId; } 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 09968a3a6..5d59d8919 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 @@ -4,6 +4,7 @@ import java.util.List; import com.mhd.bms.application.server.businessDocument.BusinessDocumentApplicationService; import com.mhd.common.core.domain.dto.BusinessDataPushDTO; +import com.mhd.common.core.utils.IgnoreNullUtil; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -75,6 +76,26 @@ public class BusinessDocumentApi extends BaseController{ } + + /** + * 整租推送 + */ + @ApiOperation("整租推送") + @PostMapping("/wholeRentSynchronization") + public AjaxResult wholeRentSynchronization(@RequestBody BusinessDocumentDTO businessDocumentDTO) + { + try { + //转换实体 + BusinessDocumentDO businessDocumentDO = new BusinessDocumentDO(); + // 拷贝 + com.mhd.common.core.utils.bean.BeanUtils.copyProperties(businessDocumentDTO, businessDocumentDO, IgnoreNullUtil.getNullPropertyNames(businessDocumentDTO)); + return toAjax(businessDocumentApplicationService.wholeRentSynchronization(businessDocumentDO)); + }catch (Exception e){ + return AjaxResult.error("保存业务单据失败" +e.getMessage()); + } + + } + /** * 批量删除业务单据 */