This commit is contained in:
mashuai 2025-10-22 19:22:10 +08:00
parent a765c3fb65
commit 89c6bc6d6a
11 changed files with 201 additions and 60 deletions

View File

@ -113,9 +113,10 @@ public class MaterialLeaseInfoController extends BaseController {
@ApiOperation(value = "查询总站点领料详情数据")
@GetMapping("/getDetailsList")
public AjaxResult getDetailsList(MaterialLeaseApplyInfo leaseApplyInfo) {
startPage();
Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1);
Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10);
List<MaterialLeaseApplyInfo> list = materialLeaseInfoService.getDetailsList(leaseApplyInfo);
return AjaxResult.success(getDataTable(list));
return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list));
}
/**

View File

@ -102,7 +102,7 @@ public class MaterialRetainedEquipmentInfo {
private BigDecimal buyPrice;
@ApiModelProperty(value = "原值")
//@Excel(name = "原值(万元)", cellType = Excel.ColumnType.NUMERIC,align = HorizontalAlignment.RIGHT)
@Excel(name = "原值(万元)", cellType = Excel.ColumnType.NUMERIC,align = HorizontalAlignment.RIGHT)
private BigDecimal totalPrice;
@ApiModelProperty(value = "五年以内成新率")

View File

@ -491,4 +491,11 @@ public interface MaterialLeaseInfoMapper {
* @return
*/
LeaseApplyInfo selectPublishInfo(Long parentId);
/**
* 获取领用数据
* @param leaseApplyInfo
* @return
*/
List<MaterialLeaseApplyInfo> getPublishList(MaterialLeaseApplyInfo leaseApplyInfo);
}

View File

@ -326,7 +326,7 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
.collect(Collectors.toList());
}
// 查询所有未结算的工程
/* // 查询所有未结算的工程
List<String> projectIdList = mapper.getUnsettledProId();
// 使用 HashSet 来加速查找过程
Set<String> unsettledProjectIds = new HashSet<>(projectIdList);
@ -340,7 +340,7 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
if (proId == null || !unsettledProjectIds.contains(proId)) {
iterator.remove();
}
}
}*/
}
return sortedList;
}
@ -548,7 +548,11 @@ public class MaterialLeaseInfoServiceImpl implements MaterialLeaseInfoService {
*/
@Override
public List<MaterialLeaseApplyInfo> getDetailsList(MaterialLeaseApplyInfo leaseApplyInfo) {
return materialLeaseInfoMapper.getDetailsList(leaseApplyInfo);
List<MaterialLeaseApplyInfo> list = materialLeaseInfoMapper.getDetailsList(leaseApplyInfo);
if (CollectionUtils.isEmpty(list)) {
list = materialLeaseInfoMapper.getPublishList(leaseApplyInfo);
}
return list;
}
/**

View File

@ -1014,7 +1014,7 @@ public class MaterialMachineServiceImpl implements MaterialMachineService {
info.setRopeNum(inRopeNum.add(useRopeNum).add(useRopeNumSub));
// 投入费用(万元)
info.setTotalPrice(totalPrice);
/*// 租赁费用(万元)
// 租赁费用(万元)
List<MaterialRetainedEquipmentInfo> leaseInfoList = materialMachineMapper.getLeaseInfo(bean);
if (CollectionUtils.isNotEmpty(leaseInfoList)) {
rentPrice = leaseInfoList.stream()
@ -1025,7 +1025,7 @@ public class MaterialMachineServiceImpl implements MaterialMachineService {
.setScale(3, RoundingMode.HALF_UP);
} else {
info.setRentPrice(BigDecimal.ZERO);
}*/
}
info.setRentPrice(rentPrice);
return info;
}

View File

@ -55,7 +55,7 @@ public class ExpectationsEntity {
private int aboutToExpireCount;
/**
* 超期类别
* 超期类别(0 超期1 临期)
*/
private String status;
/**

View File

@ -27,4 +27,19 @@ public interface ExpectationsMapper {
List<ExpectationsEntity> getListDetails(ExpectationsEntity entity);
/**
* 在用设备量
* @param entity
* @return
*/
@MapKey("name")
Map<String, Objects> getUseCountExpectations(ExpectationsEntity entity);
/**
* 在用设备列表
* @param entity
* @return
*/
List<ExpectationsEntity> getUserList(ExpectationsEntity entity);
}

View File

@ -31,6 +31,10 @@ public class ExpectationsServiceImpl implements ExpectationsService {
public List<ExpectationsEntity> getExpectationsList(ExpectationsEntity entity) {
try {
List<ExpectationsEntity> expectationsList = mapper.getExpectationsList(entity);
if (entity != null && "2".equals(entity.getUseStatus())) {
//在用设备列表
expectationsList = mapper.getUserList(entity);
}
return ObjectUtils.isNotEmpty(expectationsList) ? expectationsList : Collections.emptyList();
} catch (Exception e) {
log.error(e.getMessage());
@ -48,6 +52,10 @@ public class ExpectationsServiceImpl implements ExpectationsService {
public AjaxResult getCountExpectations(ExpectationsEntity entity) {
try {
Map<String, Objects> countExpectations = mapper.getCountExpectations(entity);
if (entity != null && "2".equals(entity.getUseStatus())) {
//在用设备量
countExpectations = mapper.getUseCountExpectations(entity);
}
return ObjectUtils.isNotEmpty(countExpectations) ? AjaxResult.success(countExpectations) : AjaxResult.error();
}catch (Exception e) {
log.error(e.getMessage());

View File

@ -1758,4 +1758,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
parent_id = #{parentId}
LIMIT 1
</select>
<select id="getPublishList" resultType="com.bonus.material.clz.domain.lease.MaterialLeaseApplyInfo">
SELECT
mt.type_name as modelCode,
mt2.type_name AS typeCode,
mt.manage_type AS manageType,
IFNULL( lod.out_num, 0 ) AS preCountNum,
mt.unit_name as unitNames,
mm.ma_code as maCode
FROM
lease_out_details lod
LEFT JOIN ma_machine mm ON lod.ma_id = mm.ma_id
LEFT JOIN ma_type mt ON lod.type_id = mt.type_id
AND mt.`level` = '4' AND mt.del_flag = '0'
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
AND mt2.`level` = '3' AND mt2.del_flag = '0'
LEFT JOIN (SELECT parent_id,code,publish_task from lease_publish_details
GROUP BY publish_task) lpd
ON lod.parent_id = lpd.parent_id
AND lod.publish_task = lpd.publish_task
WHERE
lpd.`code` = #{code}
</select>
</mapper>

View File

@ -2597,7 +2597,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sai.type_id AS typeId,
lai.code AS code,
sai.ma_id AS maId,
bp.pro_name AS proName
bp.pro_name AS proName,
CASE WHEN
lai.direct_id IS NULL
THEN '1' ELSE '0'
END AS directFlag
FROM
slt_agreement_info sai
LEFT JOIN ma_type mt ON mt.type_id = sai.type_id

View File

@ -6,25 +6,136 @@
<select id="getExpectationsList" resultType="com.bonus.material.expectations.domain.ExpectationsEntity">
SELECT
CASE
WHEN mm.ma_status = '2' THEN bu.unit_name
ELSE NULL
END AS unit,
CASE
WHEN mm.ma_status = '2' THEN bp.pro_name
ELSE NULL
END AS project,
mm.type_id AS typeId,
sai.agreement_id AS agreementId,
COUNT(*) AS count,
mt2.type_name AS typeName,
mt1.type_name AS specCode,
COUNT(*) AS count,
GROUP_CONCAT(mm.ma_id ORDER BY mm.ma_id SEPARATOR ',') AS maIds,
CASE
WHEN mm.next_check_time &lt; CURDATE() THEN 'expired'
ELSE 'about_to_expire'
WHEN mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY) THEN 'about_to_expire'
END AS status
FROM
ma_machine mm
LEFT JOIN ma_type mt1 ON mm.type_id = mt1.type_id
LEFT JOIN ma_type mt2 ON mt1.parent_id = mt2.type_id
WHERE
mm.ma_status = #{useStatus}
AND mt2.type_id NOT IN (6032, 6008, 6270, 6012, 6761)
AND mm.next_check_time is not NULL
AND (
mm.next_check_time &lt; CURDATE()
OR mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY)
)
<if test="keyWord != null and keyWord != ''">
AND (
mt2.type_name LIKE CONCAT('%', #{keyWord}, '%') OR
mt1.type_name LIKE CONCAT('%', #{keyWord}, '%')
)
</if>
GROUP BY
mm.type_id,
status
ORDER BY
status,
SUBSTRING( mt2.type_name, 1, 1 ) ASC
</select>
<select id="getCountExpectations" resultType="java.util.Map">
SELECT
CASE
WHEN mm.next_check_time &lt; CURDATE() THEN 'expired'
WHEN mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY) THEN 'aboutToExpire'
END AS name,
COUNT(*) AS count
FROM ma_machine mm
LEFT JOIN ma_type mt ON mm.type_id = mt.type_id
LEFT JOIN ma_type mt2 ON mt.parent_id = mt2.type_id
WHERE mm.ma_status = #{useStatus}
AND mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY)
AND mt2.type_id not in (6032,6008,6270,6012,6761)
GROUP BY name;
</select>
<select id="getListDetails" resultType="com.bonus.material.expectations.domain.ExpectationsEntity">
SELECT
mt2.type_name AS typeName,
mt1.type_name AS specCode,
mm.ma_code AS maCode,
mm.next_check_time AS nextCheckTime
FROM
ma_machine mm
LEFT JOIN ma_type mt1 ON mm.type_id = mt1.type_id
LEFT JOIN ma_type mt2 ON mt1.parent_id = mt2.type_id
LEFT JOIN slt_agreement_info sai ON sai.ma_id = mm.ma_id
<where>
<if test="useStatus == 1">
AND mm.ma_status = #{useStatus}
AND mm.type_id = #{typeId}
<!-- 提取status条件为公共片段减少重复代码 -->
<include refid="statusCondition"/>
</if>
<if test="useStatus == 2">
AND mm.ma_status = #{useStatus}
AND sai.agreement_id = #{agreementId}
AND mm.type_id = #{typeId}
<!-- 提取status条件为公共片段减少重复代码 -->
<include refid="statusCondition"/>
</if>
<if test="keyWord != null and keyWord != ''">
AND mm.ma_code LIKE CONCAT('%', #{keyWord}, '%')
</if>
</where>
GROUP BY
mm.ma_id
</select>
<!-- 定义status条件的公共片段 -->
<sql id="statusCondition">
<if test="status != null">
<choose>
<when test="status == 0">
AND mm.next_check_time &lt; CURDATE()
</when>
<when test="status == 1">
AND mm.next_check_time &gt;= CURDATE()
AND mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY)
</when>
</choose>
</if>
</sql>
<select id="getUseCountExpectations" resultType="java.util.Map">
SELECT
CASE
WHEN mm.next_check_time &lt; CURDATE() THEN 'expired'
WHEN mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY) THEN 'aboutToExpire'
END AS name,
COUNT(*) AS count
FROM ma_machine mm
LEFT JOIN ma_type mt ON mm.type_id = mt.type_id
LEFT JOIN ma_type mt2 ON mt.parent_id = mt2.type_id
LEFT JOIN slt_agreement_info sai ON sai.ma_id = mm.ma_id
WHERE mm.ma_status = #{useStatus}
AND sai.is_slt = '0'
AND sai.`status` = '0'
AND mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY)
AND mt2.type_id not in (6032,6008,6270,6012,6761)
GROUP BY name;
</select>
<select id="getUserList" resultType="com.bonus.material.expectations.domain.ExpectationsEntity">
SELECT
bu.unit_name AS unit,
bp.pro_name AS project,
mm.type_id AS typeId,
COUNT(*) AS count,
mt2.type_name AS typeName,
mt1.type_name AS specCode,
CASE
WHEN mm.next_check_time &lt; CURDATE() THEN 'expired'
WHEN mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY) THEN 'about_to_expire'
END AS status,
sai.agreement_id AS agreementId
FROM
ma_machine mm
LEFT JOIN ma_type mt1 ON mm.type_id = mt1.type_id
LEFT JOIN ma_type mt2 ON mt1.parent_id = mt2.type_id
LEFT JOIN slt_agreement_info sai ON sai.ma_id = mm.ma_id
@ -33,6 +144,10 @@
LEFT JOIN bm_project bp ON bp.pro_id = bai.project_id
WHERE
mm.ma_status = #{useStatus}
AND sai.is_slt = '0'
AND sai.`status` = '0'
AND mt2.type_id NOT IN (6032, 6008, 6270, 6012, 6761)
AND mm.next_check_time is not NULL
AND (
mm.next_check_time &lt; CURDATE()
OR mm.next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY)
@ -48,46 +163,10 @@
GROUP BY
unit,
project,
mt2.type_name,
mt1.type_name,
mm.type_id,
status
ORDER BY
status,
unit,
project
</select>
<select id="getCountExpectations" resultType="java.util.Map">
SELECT
CASE
WHEN next_check_time &lt; CURDATE() THEN 'expired'
WHEN next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY) THEN 'aboutToExpire'
END AS name,
COUNT(*) AS count
FROM ma_machine
WHERE ma_status = #{useStatus}
AND next_check_time &lt; DATE_ADD(CURDATE(), INTERVAL 30 DAY)
GROUP BY name;
</select>
<select id="getListDetails" resultType="com.bonus.material.expectations.domain.ExpectationsEntity">
SELECT
mt2.type_name AS typeName,
mt1.type_name AS specCode,
mm.ma_code AS maCode,
mm.next_check_time AS nextCheckTime
FROM
ma_machine mm
LEFT JOIN ma_type mt1 ON mm.type_id = mt1.type_id
LEFT JOIN ma_type mt2 ON mt1.parent_id = mt2.type_id
LEFT JOIN slt_agreement_info sai ON sai.ma_id = mm.ma_id
WHERE
<choose>
<when test="useStatus == 2">
sai.agreement_id = #{agreementId}
AND sai.type_id = #{typeId}
</when>
<when test="useStatus == 1">
mm.type_id = #{typeId}
</when>
</choose>
SUBSTRING( mt2.type_name, 1, 1 ) ASC
</select>
</mapper>