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 8cc8bfd57..e18484e8d 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/BmsServiceFeign.java @@ -18,7 +18,7 @@ import java.util.Set; /** * bms财务结算系统feign调用接口 */ -@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.32:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.3:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface BmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java index 8ef01baad..a2901d876 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody; import java.util.List; import java.util.concurrent.CompletableFuture; -@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.33:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE, url = "http://10.102.192.4:8017",fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface OmsServiceFeign { diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java index d976fcc98..e4a817238 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WlhyServiceFeign.java @@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; -@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.31:8014",configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.30:8014",configuration = FeignAutoConfiguration.class) public interface WlhyServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java index 28bee652c..03401f313 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/WmsServiceFeign.java @@ -21,7 +21,7 @@ import java.util.Map; * @description: TODO * @date 2024/5/10 8:58 **/ -@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.32:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.3:8016",fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface WmsServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java index 238ec5f81..12571141a 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/YmsServiceFeign.java @@ -9,7 +9,7 @@ import com.mhd.system.api.feign.FeignAutoConfiguration; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.*; -@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.33:8018", configuration = FeignAutoConfiguration.class) +@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,url = "http://10.102.192.4:8018",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class) public interface YmsServiceFeign { /** diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrder.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrder.java index f94c49b5d..2ac0c76e6 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrder.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/StockOutOrder.java @@ -50,8 +50,8 @@ public class StockOutOrder extends BaseVOEntity { @Excel(name = "出库单号") private String outOrderNumber; - @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核") - @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核") + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 12-已复核 13-已交接") private Integer status; @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") 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 611298729..689b2dc2e 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 @@ -40,6 +40,14 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi.WarehouseLeaseExportVO; +import com.mhd.common.core.utils.poi.ExcelUtil; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.Map; import java.math.BigDecimal; import java.time.LocalDate; @@ -270,14 +278,15 @@ public class LeaseApplicationService { * 货主租赁明细 * 定时任务:每天凌晨1点执行,计算前一天的货主租赁明细 */ -// @Scheduled(cron = "0 0 1 * * ?") + @Scheduled(cron = "0 0 1 * * ?") public void shipperLeaseDetails() { log.info("开始执行货主租赁明细定时任务"); // 计算前一天的日期,将时间设置为当天的0点0分0秒,只保留日期部分 final Date yesterday = DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -1)); LeaseDO leaseDO = new LeaseDO(); - leaseDO.setTime(yesterday); + leaseDO.setTime(yesterday); // 设置查询时间 + leaseDO.setStatus(1); // 只查询启用状态的租赁,停用的不参与出租率计算 //查询有效期内的租赁 List leasePOS = queryList(leaseDO); List entireUnit = leasePOS.stream() @@ -494,6 +503,103 @@ public class LeaseApplicationService { return warehouseOccupancyRatesList; } + /** + * 导出仓库出租率及客户租赁明细(单 sheet,明细行带仓库当日汇总列) + * 参数与 /warehouseOccupancyRate、/list 一致 + */ + public void exportOccupancyRate(HttpServletResponse response, ShipperLeaseDetailsDO shipperLeaseDetailsDO) throws IOException { + // 注意:本方法不调用 warehouseOccupancyRate(),因为该方法在不传 warehouseId 时 + // totalArea 会算成全系统所有仓库库区面积之和(如 6168),导致导出面积/日租率错误。 + // 这里自行按 (业务日期 + 仓库) 维度计算,保证多仓库导出时每个仓库的面积/日租率正确。 + + // ===== 1. 查全部明细(用副本 DO,避免影响外部)===== + ShipperLeaseDetailsDO detailDO = new ShipperLeaseDetailsDO(); + BeanUtils.copyProperties(shipperLeaseDetailsDO, detailDO); + List detailList = shipperLeaseDetailsService.queryList(detailDO); + if (detailList == null) { + detailList = new ArrayList<>(); + } + + // ===== 2. 预算每个仓库的总面积(启用库区的 storageRegion 累加),建 warehouseId -> totalArea 映射 ===== + Set warehouseIds = detailList.stream() + .map(ShipperLeaseDetailsPO::getWarehouseId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + Map warehouseTotalAreaMap = new HashMap<>(); + for (Long wid : warehouseIds) { + StorageSectionDO storageSectionDO = new StorageSectionDO(); + storageSectionDO.setWarehouseId(wid); + storageSectionDO.setOpeningUp(1); + List sections = storageSectionApplicationService.queryList(storageSectionDO); + BigDecimal area = BigDecimal.ZERO; + for (StorageSectionPO s : sections) { + area = area.add(s.getStorageRegion() == null ? BigDecimal.ZERO : s.getStorageRegion()); + } + warehouseTotalAreaMap.put(wid, area); + } + + // ===== 3. 按 (业务日期 + 仓库ID) 聚合,算每个仓库当天的整租/散租面积 ===== + // summaryMap: key -> [整租面积, 散租面积] + SimpleDateFormat keySdf = new SimpleDateFormat("yyyy-MM-dd"); + Map summaryMap = new HashMap<>(); + for (ShipperLeaseDetailsPO d : detailList) { + String key = (d.getBusinessDate() == null ? "" : keySdf.format(d.getBusinessDate())) + + "_" + d.getWarehouseId(); + BigDecimal[] arr = summaryMap.computeIfAbsent(key, k -> new BigDecimal[]{BigDecimal.ZERO, BigDecimal.ZERO}); + BigDecimal leaseArea = d.getLeaseArea() == null ? BigDecimal.ZERO : d.getLeaseArea(); + if ("整租".equals(d.getLeaseType())) { + arr[0] = arr[0].add(leaseArea); + } else { + arr[1] = arr[1].add(leaseArea); + } + } + + // ===== 4. 明细为主,每行拼上对应仓库当天的汇总(总面积/日租率按仓库单独算)===== + List exportList = new ArrayList<>(); + for (ShipperLeaseDetailsPO d : detailList) { + WarehouseLeaseExportVO vo = new WarehouseLeaseExportVO(); + // 明细列 + vo.setBusinessDate(d.getBusinessDate()); + vo.setOrganizationName(d.getOrganizationName()); + vo.setWarehouseName(d.getWarehouseName()); + vo.setCargoOwnerName(d.getCargoOwnerName()); + vo.setLeaseType(d.getLeaseType()); + vo.setLeaseArea(d.getLeaseArea()); + // 汇总列 + String key = (d.getBusinessDate() == null ? "" : keySdf.format(d.getBusinessDate())) + + "_" + d.getWarehouseId(); + BigDecimal[] arr = summaryMap.get(key); + BigDecimal entireLeaseArea = (arr != null) ? arr[0] : BigDecimal.ZERO; + BigDecimal fractionalLeaseArea = (arr != null) ? arr[1] : BigDecimal.ZERO; + vo.setEntireLeaseArea(entireLeaseArea); + vo.setFractionalLeaseArea(fractionalLeaseArea); + // 该仓库的总面积(按仓库单独算,不再用全局总和) + BigDecimal widTotalArea = warehouseTotalAreaMap.getOrDefault(d.getWarehouseId(), BigDecimal.ZERO); + vo.setTotalArea(widTotalArea); + // 日租率 = (整租+散租) / 总面积 × 100,保留2位小数(直接输出百分比值,如 10.00) + BigDecimal leaseSum = entireLeaseArea.add(fractionalLeaseArea); + BigDecimal dailyRate = widTotalArea.compareTo(BigDecimal.ZERO) == 0 + ? BigDecimal.ZERO + : leaseSum.multiply(new BigDecimal("100")).divide(widTotalArea, 2, BigDecimal.ROUND_HALF_UP); + vo.setDailyRentalRate(dailyRate); + exportList.add(vo); + } + + // ===== 5. 按业务日期降序、仓库名升序排序(null 排最后)===== + exportList.sort(Comparator + .comparing(WarehouseLeaseExportVO::getBusinessDate, Comparator.nullsLast(Comparator.reverseOrder())) + .thenComparing(WarehouseLeaseExportVO::getWarehouseName, Comparator.nullsLast(Comparator.naturalOrder()))); + + // ===== 6. 用 ExcelUtil 导出(项目通用做法,单 sheet)===== + String fileName = URLEncoder.encode("仓库出租率导出", "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + + ExcelUtil util = new ExcelUtil<>(WarehouseLeaseExportVO.class); + util.exportExcel(response, exportList, "仓库出租率"); + } + /** * 定时任务整租推送到bms @@ -581,6 +687,25 @@ public class LeaseApplicationService { } } + /** + * 启用/停用租赁 + * @param leaseIds 租赁ID列表 + * @param status 目标状态:1=启用,0=停用 + */ + public Boolean updateStatus(List leaseIds, Integer status) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long updateBy = loginUser != null ? loginUser.getUserid() : null; + String updateByName = loginUser != null ? loginUser.getUsername() : null; + if (leaseIds == null || leaseIds.isEmpty()) { + throw new ServiceException("租赁ID不能为空"); + } + if (status == null || (status != 0 && status != 1)) { + throw new ServiceException("状态值无效:1=启用,0=停用"); + } + log.info("启用/停用租赁--结束,leaseIds={},状态={},更新人id={},更新人名称={}",leaseIds,status==0?"停用":"启用",updateBy,updateByName); + return leaseDomainService.updateStatus(leaseIds, status, updateBy, updateByName); + } + // /** // * @description 设置数据字典键值 // * @author ZhouGY diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java index fda2a0f89..08586ea17 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/expenseAccount/ExpenseAccountApplicationService.java @@ -30,11 +30,7 @@ import lombok.extern.slf4j.Slf4j; 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.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -580,6 +576,40 @@ public class ExpenseAccountApplicationService { return expenseAccountDomainService.getInfoByCode2(subjectCode,topOrganizationId); } + /** + * 根据编码和组织ID查询 + */ + public ExpenseAccountPO getInfoByOrgAndCode(String subjectCode, Long organizationId) { + if(!StringUtils.isNotEmpty(subjectCode)){ + throw new ServiceException("费用科目编码不能为空"); + } + if(organizationId == null){ + throw new ServiceException("组织ID不能为空"); + } + ExpenseAccountPO expenseAccountPO = expenseAccountDomainService.getInfoByOrgAndCode(subjectCode, organizationId); +// // 组装计费单位列表:单位-单位英文 +// List unit = new ArrayList<>(); +// if (expenseAccountPO != null) { +// unit.add(expenseAccountPO.getBillingUnit() + "-" + expenseAccountPO.getBillingUnitEn()); +// unit.add(expenseAccountPO.getBillingUnit2() + "-" + expenseAccountPO.getBillingUnitEn2()); +// expenseAccountPO.setUnit(unit); +// } + // 组装计费单位列表(数组) + List> unit = new ArrayList<>(); + if (expenseAccountPO != null) { + Map unit1 = new HashMap<>(); + unit1.put("unit", expenseAccountPO.getBillingUnit() + "-" + expenseAccountPO.getBillingUnitEn()); + unit.add(unit1); + + Map unit2 = new HashMap<>(); + unit2.put("unit", expenseAccountPO.getBillingUnit2() + "-" + expenseAccountPO.getBillingUnitEn2()); + unit.add(unit2); + + expenseAccountPO.setUnit(unit); + } + return expenseAccountPO; + } + public List selectExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO){ setDataPermissionForSearch(searchExpenseAccountDO); return expenseAccountDomainService.selectExpenseAccount(searchExpenseAccountDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/facade/IExpenseAccountService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/facade/IExpenseAccountService.java index 471864449..22a775ee1 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/facade/IExpenseAccountService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/facade/IExpenseAccountService.java @@ -58,6 +58,11 @@ public interface IExpenseAccountService extends IService */ ExpenseAccountPO getInfoByCode(ExpenseAccountDO expenseAccountDO); + /** + * 根据费用科目code和组织ID查询费用信息 + */ + ExpenseAccountPO getInfoByOrgAndCode(ExpenseAccountDO expenseAccountDO); + public List selectExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO); public List selectOtherExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/mapper/ExpenseAccountMapper.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/mapper/ExpenseAccountMapper.java index 98bb772a3..4ca46665a 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/mapper/ExpenseAccountMapper.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/mapper/ExpenseAccountMapper.java @@ -39,6 +39,11 @@ public interface ExpenseAccountMapper extends BaseMapper */ ExpenseAccountPO getInfoByCode(@Param("expenseAccountDO") ExpenseAccountDO expenseAccountDO); + /** + * 根据费用科目code和组织ID查询费用信息 + */ + ExpenseAccountPO getInfoByOrgAndCode(@Param("expenseAccountDO") ExpenseAccountDO expenseAccountDO); + public List selectExpenseAccount(@Param("searchExpenseAccountDO") SearchExpenseAccountDO searchExpenseAccountDO); public List selectOtherExpenseAccount(@Param("searchExpenseAccountDO") SearchExpenseAccountDO searchExpenseAccountDO); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/persistence/ExpenseAccountImpl.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/persistence/ExpenseAccountImpl.java index a65c6dd7d..a8d42f8bc 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/persistence/ExpenseAccountImpl.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/expenseAccount/repository/persistence/ExpenseAccountImpl.java @@ -129,6 +129,11 @@ public class ExpenseAccountImpl extends ServiceImpl> unit; + } \ No newline at end of file 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 e19daf17c..c6341a76e 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 @@ -101,6 +101,16 @@ public class ExpenseAccountDomainService { expenseAccountDO.setTopOrganizationId(topOrganizationId); return expenseAccountService.getInfoByCode(expenseAccountDO); } + + /** + * 根据编码和组织ID查询费用科目信息 + */ + public ExpenseAccountPO getInfoByOrgAndCode(String subjectCode, Long organizationId) { + ExpenseAccountDO expenseAccountDO = new ExpenseAccountDO(); + expenseAccountDO.setSubjectCode(subjectCode); + expenseAccountDO.setOrganizationId(organizationId); + return expenseAccountService.getInfoByOrgAndCode(expenseAccountDO); + } public List selectExpenseAccount(SearchExpenseAccountDO searchExpenseAccountDO){ return expenseAccountService.selectExpenseAccount(searchExpenseAccountDO); } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java index 2ebd21a80..55d7175fc 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/entity/Lease.java @@ -96,4 +96,7 @@ public class Lease extends BaseVOEntity{ @ApiModelProperty("业务员ID") private String salesmanId; + + @ApiModelProperty("状态:1=正常,0=停用") + private Integer status; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java index 3bf1cef18..0c67573d5 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/po/LeasePO.java @@ -97,4 +97,7 @@ public class LeasePO extends BaseVOEntity{ @ApiModelProperty("业务员ID") private String salesmanId; + + @ApiModelProperty("状态:1=正常,0=停用") + private Integer status; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java index 27e5621ce..6d20f8f1b 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/repository/todo/LeaseDO.java @@ -113,4 +113,7 @@ public class LeaseDO extends BaseVOEntity{ @ApiModelProperty("业务员ID") private String salesmanId; + + @ApiModelProperty("状态:1=正常,0=停用") + private Integer status; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java index 82ade3d75..1b264e189 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/lease/service/LeaseDomainService.java @@ -89,4 +89,22 @@ public class LeaseDomainService { .in(Lease::getId, leaseIds) .eq(Lease::getDelFlag, 1)); } + + /** + * 启用/停用租赁 + * @param leaseIds 租赁ID列表 + * @param status 目标状态:1=启用,0=停用 + * @param updateBy 操作人ID + * @param updateByName 操作人名称 + */ + public Boolean updateStatus(List leaseIds, Integer status, Long updateBy, String updateByName) { + return leaseService.update(new UpdateWrapper().lambda() + .set(Lease::getStatus, status) + .set(Lease::getUpdateBy, updateBy) + .set(Lease::getUpdateByName, updateByName) + .set(Lease::getUpdateTime, new Date()) + .in(Lease::getId, leaseIds) + .eq(Lease::getDelFlag, 1)); + } + } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/service/WarehouseDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/service/WarehouseDomainService.java index aa2d571e6..4bd24e1f2 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/service/WarehouseDomainService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/warehouse/service/WarehouseDomainService.java @@ -168,9 +168,11 @@ public class WarehouseDomainService { warehouseLinkagePO.setName(warehousePO.getWarehouseName()); StorageSectionDO storageSectionDO = new StorageSectionDO(); storageSectionDO.setWarehouseId(warehousePO.getWarehouseId()); + storageSectionDO.setNullify(1); List storageSectionPOList = storageSectionService.queryList(storageSectionDO); StorageLocationDO storageLocationDO = new StorageLocationDO(); storageLocationDO.setWarehouseId(warehousePO.getWarehouseId()); + storageLocationDO.setNullify(1); List storageLocationPOList = storageLocationService.queryList(storageLocationDO); //根据库区唯一标识进行分组 Map> storageLocationListMap = storageLocationPOList.stream().collect(Collectors.groupingBy(StorageLocationPO::getStorageCode)); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java index 4d045da4b..926b8201c 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/lease/LeaseDTO.java @@ -110,4 +110,7 @@ public class LeaseDTO extends BaseVOEntity{ @ApiModelProperty("业务员ID") private String salesmanId; + + @ApiModelProperty("状态:1=正常,0=停用") + private Integer status; } \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/WarehouseLeaseExportVO.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/WarehouseLeaseExportVO.java new file mode 100644 index 000000000..e18caf1e3 --- /dev/null +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/dto/shipperLeaseDetailsApi/WarehouseLeaseExportVO.java @@ -0,0 +1,65 @@ +package com.mhd.basic.interfaces.dto.shipperLeaseDetailsApi; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 仓库出租率及客户租赁明细 导出VO(单 sheet) + * 明细为主行,附该仓库当日汇总列 + */ +@Data +public class WarehouseLeaseExportVO { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库") + @Excel(name = "仓库") + private String warehouseName; + + @ApiModelProperty("业务日期") + @Excel(name = "业务日期", width = 20, dateFormat = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date businessDate; + + @ApiModelProperty("整租面积(m²)") + @Excel(name = "整租面积(m²)") + private BigDecimal entireLeaseArea; + + @ApiModelProperty("散租面积(m²)") + @Excel(name = "散租面积(m²)") + private BigDecimal fractionalLeaseArea; + + @ApiModelProperty("总面积(m²)") + @Excel(name = "总面积(m²)") + private BigDecimal totalArea; + + @ApiModelProperty("日租率(%)") + @Excel(name = "日租率(%)") + private BigDecimal dailyRentalRate; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String cargoOwnerName; + + @ApiModelProperty("租赁方式") + @Excel(name = "租赁方式") + private String leaseType; + + @ApiModelProperty("租赁面积(m²)") + @Excel(name = "租赁面积(m²)") + private BigDecimal leaseArea; + + // ===== 以下为仓库当日汇总列(同一仓库同一天的多行会重复,属正常)===== + +} \ No newline at end of file diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java index 8810a7c34..8c22cd084 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facade/expenseAccount/ExpenseAccountApi.java @@ -328,5 +328,13 @@ public class ExpenseAccountApi extends BaseController{ return AjaxResult.success(expenseAccountPO); } + @ApiOperation("根据code和组织ID获取数据") + @GetMapping(value = "/getInfoByOrgAndCode") + public AjaxResult getInfoByOrgAndCode(@RequestParam("subjectCode") String subjectCode,@RequestParam("organizationId") Long organizationId) + { + ExpenseAccountPO expenseAccountPO = expenseAccountApplicationService.getInfoByOrgAndCode(subjectCode, organizationId); + return AjaxResult.success(expenseAccountPO.getUnit()); + } + } \ No newline at end of file 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 fe8dc5b3f..a8cd3b53e 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 @@ -130,4 +130,18 @@ public class LeaseApi extends BaseController{ return AjaxResult.success(); } + /** + * 启用/停用租赁 + * @param leaseIds 租赁ID集合 + * @param status 目标状态(启用/停用) + * @return 操作结果 + */ + @ApiOperation("启用/停用租赁") + @PutMapping("/updateStatus/{leaseIds}/{status}") + public AjaxResult updateStatus(@PathVariable("leaseIds") List leaseIds, + @PathVariable("status") Integer status) + { + return toAjax(leaseApplicationService.updateStatus(leaseIds, status)); + } + } diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java index 4f560e24d..f8437e12a 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/interfaces/facadeApi/shipperLeaseDetails/ShipperLeaseDetailsApi.java @@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -157,5 +159,17 @@ public class ShipperLeaseDetailsApi extends BaseController{ return getDataTable(warehouseOccupancyRates); } + /** + * 导出仓库出租率及客户租赁明细 + * 参数与 /warehouseOccupancyRate、/list 一致 + */ + @ApiOperation("导出仓库出租率及客户租赁明细") + @GetMapping(value = "/export", produces = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") + public void export(ShipperLeaseDetailsDTO shipperLeaseDetailsDTO, HttpServletResponse response) throws IOException + { + ShipperLeaseDetailsDO shipperLeaseDetailsDO = shipperLeaseDetailsAssembler.toDO(shipperLeaseDetailsDTO); + leaseApplicationService.exportOccupancyRate(response, shipperLeaseDetailsDO); + } + } diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml index d34d5d030..9be035d7b 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/ExpenseAccountMapper.xml @@ -151,6 +151,22 @@ LIMIT 1 + diff --git a/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml index fc99a9216..831005fdf 100644 --- a/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml +++ b/mhd-modules/mhd-system/src/main/resources/mapper/basic/lease/LeaseMapper.xml @@ -35,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -68,7 +69,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.bill_time, a.salesman_name, a.settlement_currency, - a.salesman_id + a.salesman_id, + a.status from lease a LEFT JOIN warehouse w ON a.warehouse_id = w.warehouse_id AND w.del_flag = 1 @@ -136,6 +138,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND a.start_date <= #{time} AND a.end_date >= #{time} + + + AND a.status = #{status} + and a.del_flag = #{delFlag} diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/entity/BillDetail.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/entity/BillDetail.java index 546cf0e14..6bd28ad64 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/entity/BillDetail.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/entity/BillDetail.java @@ -88,4 +88,10 @@ public class BillDetail extends BaseVOEntity{ private String invoiceItemName; @ApiModelProperty(value = "费用类别") private String feeType; + @ApiModelProperty(value = "计费单位") + private String billingUnit; + @ApiModelProperty(value = "计费数量") + private BigDecimal billingNum; + @ApiModelProperty(value = "计费单价") + private BigDecimal billingUnitPrice; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillDetailPO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillDetailPO.java index 5c4c7bac5..acd96caf2 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillDetailPO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillDetailPO.java @@ -134,5 +134,11 @@ public class BillDetailPO extends BaseVOEntity{ private String invoiceItemName; @ApiModelProperty(value = "费用类别") private String feeType; + @ApiModelProperty(value = "计费单位") + private String billingUnit; + @ApiModelProperty(value = "计费数量") + private BigDecimal billingNum; + @ApiModelProperty(value = "计费单价") + private BigDecimal billingUnitPrice; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillManagePO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillManagePO.java index a4c4e3403..9a3225e96 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillManagePO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/po/BillManagePO.java @@ -262,4 +262,9 @@ public class BillManagePO extends BaseVOEntity{ @ApiModelProperty("收款帐户名称") private String paymentAccountName; private List billDetailList; + + @ApiModelProperty("最近收款时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Excel(name = "最近收款时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date collectionTime; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillDetailDO.java b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillDetailDO.java index e443f47f0..b1d521d77 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillDetailDO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/billManage/repository/todo/BillDetailDO.java @@ -98,4 +98,10 @@ public class BillDetailDO extends BaseVOEntity{ private String invoiceItemName; @ApiModelProperty(value = "费用类别") private String feeType; + @ApiModelProperty(value = "计费单位") + private String billingUnit; + @ApiModelProperty(value = "计费数量") + private BigDecimal billingNum; + @ApiModelProperty(value = "计费单价") + private BigDecimal billingUnitPrice; } \ No newline at end of file diff --git a/mhd_bms/src/main/java/com/mhd/bms/domain/receiptManage/service/ReceiptManageDomainService.java b/mhd_bms/src/main/java/com/mhd/bms/domain/receiptManage/service/ReceiptManageDomainService.java index 93857f3fb..c22c5f92d 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/domain/receiptManage/service/ReceiptManageDomainService.java +++ b/mhd_bms/src/main/java/com/mhd/bms/domain/receiptManage/service/ReceiptManageDomainService.java @@ -180,6 +180,9 @@ public class ReceiptManageDomainService { receiptManageDO.setCreateBy(loginUser.getUserPo().getUserId()); receiptManageDO.setCreateByName(loginUser.getUserPo().getUserName()); receiptManageDO.setCreateTime(new Date()); + if (receiptManageDO.getCollectionTime() == null) { + receiptManageDO.setCollectionTime(new Date()); + } ReceiptManage receiptManage = new ReceiptManage(); BeanUtils.copyProperties(receiptManageDO,receiptManage); Boolean flagTwo = receiptManageService.save(receiptManage); diff --git a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillDetailDTO.java b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillDetailDTO.java index 9c42728a0..acb35ff99 100644 --- a/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillDetailDTO.java +++ b/mhd_bms/src/main/java/com/mhd/bms/interfaces/dto/billManage/BillDetailDTO.java @@ -139,4 +139,10 @@ public class BillDetailDTO extends BaseVOEntity{ private String invoiceItemName; @ApiModelProperty(value = "费用类别") private String feeType; + @ApiModelProperty(value = "计费单位") + private String billingUnit; + @ApiModelProperty(value = "计费数量") + private BigDecimal billingNum; + @ApiModelProperty(value = "计费单价") + private BigDecimal billingUnitPrice; } \ No newline at end of file diff --git a/mhd_bms/src/main/resources/bootstrap.yml b/mhd_bms/src/main/resources/bootstrap.yml index 57159b97e..d68deb6eb 100644 --- a/mhd_bms/src/main/resources/bootstrap.yml +++ b/mhd_bms/src/main/resources/bootstrap.yml @@ -18,15 +18,15 @@ spring: discovery: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 -# server-addr: 10.102.192.30:6848 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 config: # server-addr: 127.0.0.1:8848 # 线上测试环境配置 容器名+端口号 - server-addr: 10.33.0.129:6010 -# server-addr: 10.102.192.30:6848 +# server-addr: 10.33.0.129:6010 + server-addr: 10.102.192.30:6848 username: nacos password: manhuoda@2023 group: DEFAULT_GROUP # 默认分组就是DEFAULT_GROUP,如果使用默认分组可以不配置 diff --git a/mhd_bms/src/main/resources/mapper/BillManageMapper.xml b/mhd_bms/src/main/resources/mapper/BillManageMapper.xml index 398e298ce..c3dae03e5 100644 --- a/mhd_bms/src/main/resources/mapper/BillManageMapper.xml +++ b/mhd_bms/src/main/resources/mapper/BillManageMapper.xml @@ -8,7 +8,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - order by create_time desc + order by lay_date desc, create_time desc @@ -1272,4 +1272,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select PUSH_VERIFY from NGWL_TEST_PRODUCT.SYS_ORGANIZATION where ORGANIZATION_ID = #{organizationId} + + diff --git a/mhd_oms/src/main/resources/mapper/executeOrder/ExecuteOrderMapper.xml b/mhd_oms/src/main/resources/mapper/executeOrder/ExecuteOrderMapper.xml index 82a826d88..f1a46305c 100644 --- a/mhd_oms/src/main/resources/mapper/executeOrder/ExecuteOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/executeOrder/ExecuteOrderMapper.xml @@ -131,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml index cfee42bf1..b671a31eb 100644 --- a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml @@ -356,4 +356,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + \ No newline at end of file diff --git a/sql/20260803_alter_table_lease_add_status.sql b/sql/20260803_alter_table_lease_add_status.sql new file mode 100644 index 000000000..c764a4411 --- /dev/null +++ b/sql/20260803_alter_table_lease_add_status.sql @@ -0,0 +1,27 @@ +-- ============================================================ +-- 功能:租赁表新增 status 状态字段(启用/停用) +-- 数据库:达梦(Dameng)192.168.0.49:5236 +-- 模式:NGWL_TEST_SYSTEM +-- 表名:LEASE +-- 日期:2026-08-03 +-- 说明:status 字段用于控制租赁的启用/停用 +-- 1=启用(参与仓库出租率计算) +-- 0=停用(不参与仓库出租率计算) +-- ============================================================ + +-- 1. 添加字段 +ALTER TABLE NGWL_TEST_SYSTEM.LEASE ADD status TINYINT DEFAULT 1; + +-- 2. 添加注释(达梦必须单独写) +COMMENT ON COLUMN NGWL_TEST_SYSTEM.LEASE.status IS '状态:1=启用,0=停用'; + + + + +-- bms +ALTER TABLE "NGWL_TEST_BMS"."BILL_DETAIL" ADD BILLING_UNIT VARCHAR2(100); +ALTER TABLE "NGWL_TEST_BMS"."BILL_DETAIL" ADD BILLING_NUM NUMBER(18,2); +ALTER TABLE "NGWL_TEST_BMS"."BILL_DETAIL" ADD BILLING_UNIT_PRICE NUMBER(18,2); +COMMENT ON COLUMN "NGWL_TEST_BMS"."BILL_DETAIL".BILLING_UNIT IS '计费单位'; +COMMENT ON COLUMN "NGWL_TEST_BMS"."BILL_DETAIL".BILLING_NUM IS '计费数量'; +COMMENT ON COLUMN "NGWL_TEST_BMS"."BILL_DETAIL".BILLING_UNIT_PRICE IS '计费单价';