diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/ProjUsingRecordExports.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/ProjUsingRecordExports.java new file mode 100644 index 00000000..031f6a19 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/ProjUsingRecordExports.java @@ -0,0 +1,134 @@ +package com.bonus.material.basic; + +import com.bonus.common.core.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** +* @description 综合查询--退料查询 +* @author hay +* @date 2024/2/26 14:51 +*/ +@ApiModel(description = "退料查询") +@Data +public class ProjUsingRecordExports { + + private static final long serialVersionUID = 2227217051604273598L; + + @ApiModelProperty(value = "主键id") + private Integer id; + + @ApiModelProperty(value = "协议号") + private String agreementCode; + + @ApiModelProperty(value = "工程Id") + private Integer proId; + + @ApiModelProperty(value = "工程名称") + @Excel(name = "工程名称") + private String proName; + + @ApiModelProperty(value = "往来单位Id") + private Integer unitId; + + @ApiModelProperty(value = "往来单位") + private String unitName; + + @ApiModelProperty(value = "实施单位") + private String impUnitName; + + @ApiModelProperty(value = "合同主体") + private String contractPart; + + @ApiModelProperty(value = "物资名称") + @Excel(name = "物资名称") + private String typeName; + + @ApiModelProperty(value = "规格ID") + private Integer typeId; + + @ApiModelProperty(value = "规格型号") + @Excel(name = "规格型号") + private String typeModelName; + + @ApiModelProperty(value = "设备编码") + private String maCode; + + @ApiModelProperty(value = "计量单位") + private String unit; + + @ApiModelProperty(value = "领用数量") + private BigDecimal leaseNum; + + @ApiModelProperty(value = "归还数量") + private BigDecimal backNum; + + @ApiModelProperty(value = "需求数量") + private String needNum; + + @ApiModelProperty(value = "已供数量") + private String supplyNum; + + @ApiModelProperty(value = "差值") + private String diffNum; + + @ApiModelProperty(value = "在用数量") + @Excel(name = "在用数量") + private BigDecimal usNum; + + @ApiModelProperty(value = "在库数量") + private BigDecimal storeNum; + + @ApiModelProperty(value = "在修数量") + private BigDecimal repairNum; + + @ApiModelProperty(value = "待入库数量") + private BigDecimal inputNum; + + @ApiModelProperty(value = "总保有量") + private BigDecimal allNum; + + @ApiModelProperty(value = "总在用数量") + private BigDecimal allUsNum; + + + @ApiModelProperty(value = "在用总价值(元)") + private BigDecimal usPrice; + + @ApiModelProperty(value = "投入总价值(元)") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "关键字") + private String keyWord; + + @ApiModelProperty(value="开始时间") + private String startTime; + + @ApiModelProperty(value="结束时间") + private String endTime; + + @ApiModelProperty(value = "数据所属组织") + private Integer companyId; + + @ApiModelProperty(value = "装备管理方式(0编号 1计数)") + private String manageType; + + @ApiModelProperty(value = "是否结算 0否 1是") + private String isSlt; + + @ApiModelProperty(value = "是否结算 0否 1是") + private String isSltName; + + private String externalIds; + @ApiModelProperty(value = "关联外部(第三方)的工程ID") + private String externalId; + + private Long userId; + + @ApiModelProperty(value = "备注") + private String remark; + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/controller/ComplexQueryController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/controller/ComplexQueryController.java index 403131bb..66578848 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/controller/ComplexQueryController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/controller/ComplexQueryController.java @@ -4,10 +4,12 @@ import cn.hutool.core.convert.Convert; import com.alibaba.nacos.common.utils.CollectionUtils; import com.bonus.common.biz.config.ListPagingUtil; import com.bonus.common.core.utils.ServletUtils; +import com.bonus.common.core.utils.bean.BeanUtils; import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.basic.ProjUsingRecordExports; import com.bonus.material.basic.domain.*; import com.bonus.material.basic.domain.vo.MaTypeSelectInfo; import com.bonus.material.basic.service.ComplexQueryService; @@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.List; /** @@ -454,4 +457,69 @@ public class ComplexQueryController extends BaseController { List pageList = complexQueryService.getPersonNum(bean); return AjaxResult.success(getDataTable(pageList)); } + + + /** + * 施工机具需求、供应分析统计表 + * @param bean + * @return + */ + @ApiOperation(value = "施工机具需求、供应分析统计表") + @GetMapping("/getStatisticsList") + public AjaxResult getStatisticsList(ProjUsingRecord bean) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + bean.setUserId(loginUser.getUserid()); + startPage(); + List pageList = complexQueryService.getStatisticsList(bean); + return AjaxResult.success(getDataTable(pageList)); + } + + /** + * 施工机具需求、供应分析统计表二级页面---总在用工程明细 + * @param bean + * @return + */ + @ApiOperation(value = "总在用工程明细") + @GetMapping("/getAllUsDetails") + public AjaxResult getAllUsDetails(ProjUsingRecord bean) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + bean.setUserId(loginUser.getUserid()); + startPage(); + List pageList = complexQueryService.getAllUsDetails(bean); + return AjaxResult.success(getDataTable(pageList)); + } + + + + @ApiOperation("导出施工机具需求、供应分析统计表") + @PostMapping("/exportStatisticsList") + public void exportStatisticsList(HttpServletResponse response, ProjUsingRecord bean) + { + List list = complexQueryService.getStatisticsList(bean); + List exportList = new ArrayList<>(); + //将list复制到exportList + for (ProjUsingRecord projUsingRecord : list) { + ProjUsingRecordExport projUsingRecordExport = new ProjUsingRecordExport(); + BeanUtils.copyProperties(projUsingRecord, projUsingRecordExport); + exportList.add(projUsingRecordExport); + } + ExcelUtil util = new ExcelUtil<>(ProjUsingRecordExport.class); + util.exportExcel(response, exportList, "施工机具需求、供应分析统计表"); + } + + @ApiOperation("导出总在用工程明细") + @PostMapping("/exportAllUsDetails") + public void exportAllUsDetails(HttpServletResponse response, ProjUsingRecord bean) + { + List list = complexQueryService.getAllUsDetails(bean); + List exportList = new ArrayList<>(); + //将list复制到exportList + for (ProjUsingRecord projUsingRecord : list) { + ProjUsingRecordExports projUsingRecordExports = new ProjUsingRecordExports(); + BeanUtils.copyProperties(projUsingRecord, projUsingRecordExports); + exportList.add(projUsingRecordExports); + } + ExcelUtil util = new ExcelUtil<>(ProjUsingRecordExports.class); + util.exportExcel(response, exportList, "总在用工程明细"); + } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecord.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecord.java index 3d0bbf11..dc626c49 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecord.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecord.java @@ -115,4 +115,29 @@ public class ProjUsingRecord { private String externalId; private Long userId; + + @ApiModelProperty(value = "需求数量") + private String needNum; + + @ApiModelProperty(value = "已供数量") + private String supplyNum; + + @ApiModelProperty(value = "差值") + private String diffNum; + + @ApiModelProperty(value = "在库数量") + private BigDecimal storeNum; + + @ApiModelProperty(value = "在修数量") + private BigDecimal repairNum; + + @ApiModelProperty(value = "待入库数量") + private BigDecimal inputNum; + + @ApiModelProperty(value = "总保有量") + private BigDecimal allNum; + + @ApiModelProperty(value = "总在用数量") + private BigDecimal allUsNum; + } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecordExport.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecordExport.java new file mode 100644 index 00000000..bbd076d5 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/domain/ProjUsingRecordExport.java @@ -0,0 +1,144 @@ +package com.bonus.material.basic.domain; + +import com.bonus.common.core.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** +* @description 综合查询--退料查询 +* @author hay +* @date 2024/2/26 14:51 +*/ +@ApiModel(description = "退料查询") +@Data +public class ProjUsingRecordExport { + + private static final long serialVersionUID = 2227217051604273598L; + + @ApiModelProperty(value = "主键id") + private Integer id; + + @ApiModelProperty(value = "协议号") + private String agreementCode; + + @ApiModelProperty(value = "工程Id") + private Integer proId; + + @ApiModelProperty(value = "工程名称") + @Excel(name = "工程名称") + private String proName; + + @ApiModelProperty(value = "往来单位Id") + private Integer unitId; + + @ApiModelProperty(value = "往来单位") + private String unitName; + + @ApiModelProperty(value = "实施单位") + private String impUnitName; + + @ApiModelProperty(value = "合同主体") + private String contractPart; + + @ApiModelProperty(value = "物资名称") + @Excel(name = "物资名称") + private String typeName; + + @ApiModelProperty(value = "规格ID") + private Integer typeId; + + @ApiModelProperty(value = "规格型号") + @Excel(name = "规格型号") + private String typeModelName; + + @ApiModelProperty(value = "设备编码") + private String maCode; + + @ApiModelProperty(value = "计量单位") + @Excel(name = "单位") + private String unit; + + @ApiModelProperty(value = "领用数量") + private BigDecimal leaseNum; + + @ApiModelProperty(value = "归还数量") + private BigDecimal backNum; + + @ApiModelProperty(value = "需求数量") + @Excel(name = "需求数量") + private String needNum; + + @ApiModelProperty(value = "已供数量") + @Excel(name = "已供数量") + private String supplyNum; + + @ApiModelProperty(value = "差值") + @Excel(name = "差值") + private String diffNum; + + @ApiModelProperty(value = "在用数量") + @Excel(name = "在用数量") + private BigDecimal usNum; + + @ApiModelProperty(value = "在库数量") + @Excel(name = "库存数量") + private BigDecimal storeNum; + + @ApiModelProperty(value = "在修数量") + @Excel(name = "在修数量") + private BigDecimal repairNum; + + @ApiModelProperty(value = "待入库数量") + @Excel(name = "待入库数量") + private BigDecimal inputNum; + + @ApiModelProperty(value = "总保有量") + @Excel(name = "总保有量") + private BigDecimal allNum; + + @ApiModelProperty(value = "总在用数量") + @Excel(name = "总在用工程明细") + private BigDecimal allUsNum; + + + @ApiModelProperty(value = "在用总价值(元)") + private BigDecimal usPrice; + + @ApiModelProperty(value = "投入总价值(元)") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "关键字") + private String keyWord; + + @ApiModelProperty(value="开始时间") + private String startTime; + + @ApiModelProperty(value="结束时间") + private String endTime; + + @ApiModelProperty(value = "数据所属组织") + private Integer companyId; + + @ApiModelProperty(value = "装备管理方式(0编号 1计数)") + private String manageType; + + @ApiModelProperty(value = "是否结算 0否 1是") + private String isSlt; + + @ApiModelProperty(value = "是否结算 0否 1是") + private String isSltName; + + private String externalIds; + @ApiModelProperty(value = "关联外部(第三方)的工程ID") + private String externalId; + + private Long userId; + + @ApiModelProperty(value = "备注") + @Excel(name = "备注") + private String remark; + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java index 41c6f6b5..06d79edd 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/mapper/ComplexQueryMapper.java @@ -161,5 +161,33 @@ public interface ComplexQueryMapper { */ List getPersonNum(RetainedEquipmentInfo bean); + /** + * 施工机具需求、供应分析统计表 + * @param bean + * @return + */ + List getStatisticsList(ProjUsingRecord bean); + + /** + * 获取在用数量 + * @param item + * @return + */ + ProjUsingRecord getUsNum(ProjUsingRecord item); + + /** + * 根据typeId查询,总库存数量、总在修数量、总待入库数量、总保有量 + * @param item + * @return + */ + RetainedEquipmentInfo selectInventory(ProjUsingRecord item); + + /** + * 获取所有在用详情 + * @param bean + * @return + */ + List getAllUsDetails(ProjUsingRecord bean); + List batchSelectInfo(@Param("list") Set leaseIds); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/ComplexQueryService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/ComplexQueryService.java index 4b41f387..08b28664 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/ComplexQueryService.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/ComplexQueryService.java @@ -116,4 +116,18 @@ public interface ComplexQueryService { * @return */ List getPersonNum(RetainedEquipmentInfo bean); + + /** + * 施工机具需求、供应分析统计表 + * @param bean + * @return + */ + List getStatisticsList(ProjUsingRecord bean); + + /** + * 总在用工程明细 + * @param bean + * @return + */ + List getAllUsDetails(ProjUsingRecord bean); } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java index 76f0cdc9..1674fb42 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/basic/service/impl/ComplexQueryServiceImpl.java @@ -635,4 +635,52 @@ public class ComplexQueryServiceImpl implements ComplexQueryService { bean.setUserId(userId); return complexQueryMapper.getPersonNum(bean); } + + @Override + public List getStatisticsList(ProjUsingRecord bean) { + try { + //1、查询工程对应的物资名称、型号、需求数量、已供数量 + List list = complexQueryMapper.getStatisticsList(bean); + for (ProjUsingRecord item : list){ + //2、计算需求数量,已供数量的差值 + //使用 BigDecimal 处理小数运算 + BigDecimal needNum = new BigDecimal(item.getNeedNum()); + BigDecimal supplyNum = new BigDecimal(item.getSupplyNum()); + BigDecimal diffNum = needNum.subtract(supplyNum); + item.setDiffNum(diffNum.toString()); + //3、查询该工程设备的在用数量 + ProjUsingRecord projUsingRecord3 = complexQueryMapper.getUsNum(item); + if (projUsingRecord3 != null && projUsingRecord3.getUsNum() != null){ + item.setUsNum(projUsingRecord3.getUsNum()); + } else { + BigDecimal usNum = BigDecimal.ZERO; + item.setUsNum(usNum); + } + //4、根据typeId查询,总库存数量、总在修数量、总待入库数量、总保有量 + RetainedEquipmentInfo bean1 = complexQueryMapper.selectInventory(item); + item.setStoreNum(bean1.getStoreNum()); + item.setRepairNum(bean1.getRepairNum()); + item.setAllUsNum(bean1.getUsNum()); + //使用三元运算符处理null值 + BigDecimal inputNum = bean1.getInputNum() != null ? bean1.getInputNum() : BigDecimal.ZERO; + BigDecimal repairInputNum = bean1.getRepairInputNum() != null ? bean1.getRepairInputNum() : BigDecimal.ZERO; + item.setInputNum(inputNum.add(repairInputNum)); + item.setAllNum(bean1.getAllNum()); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } + + @Override + public List getAllUsDetails(ProjUsingRecord bean) { + try { + return complexQueryMapper.getAllUsDetails(bean); + } catch (Exception e) { + e.printStackTrace(); + return new ArrayList<>(); + } + } } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml index 24e3d687..80fa6e47 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/basic/ComplexQueryMapper.xml @@ -506,6 +506,378 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and mt.type_name like concat('%',#{typeModelName},'%') + + + +