Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
ccbed741c7
|
|
@ -99,7 +99,6 @@ public class ClzSltAgreementInfoController extends BaseController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 提交结算清单
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import java.util.List;
|
|||
@Data
|
||||
public class ClzSltApplyDTO extends BaseVO {
|
||||
|
||||
@ApiModelProperty("申请结算单位")
|
||||
@ApiModelProperty("申请结算单位,数组形式")
|
||||
private List<Integer> unitIds;
|
||||
|
||||
@ApiModelProperty("申请结算工程")
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
|
|||
/**
|
||||
* 进行结算审批
|
||||
*
|
||||
* @param sltAgreementApply
|
||||
* @param sltAgreementApply 结算提交信息
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
|
@ -265,24 +265,24 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
// 返回之前对集合做去重处理,根据外层的单位名称去重,保留每个单位名称的第一个
|
||||
Set<String> seen = new HashSet<>();
|
||||
List<MaterialSltInfoVo> dedup = new ArrayList<>(resultVoList.size());
|
||||
for (MaterialSltInfoVo it : resultVoList) {
|
||||
if (it == null) continue;
|
||||
String key = normalize(it.getUnitName());
|
||||
// 若不希望把 null 当作一个有效键,可加:if (key == null) continue;
|
||||
if (key == null) continue;
|
||||
if (seen.add(key)) {
|
||||
dedup.add(it); // 第一次见到该单位名 -> 保留
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return dedup;
|
||||
}
|
||||
|
||||
/**
|
||||
* 去除空行
|
||||
*/
|
||||
private static String normalize(String s) {
|
||||
if (s == null) return null; // 若希望丢弃 null,可直接返回 null 不参与去重键
|
||||
return s.trim(); // 需要忽略大小写可用:s.trim().toLowerCase(Locale.ROOT)
|
||||
|
|
@ -307,9 +307,18 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
|
|||
sltInfoVo.setProjectName(sltInfoVo.getScrapList().get(0).getProjectName());
|
||||
sltInfoVo.setUnitName(sltInfoVo.getScrapList().get(0).getUnitName());
|
||||
}
|
||||
|
||||
// 合计一下总费用
|
||||
sltInfoVo.setTotalCostAll(Optional.ofNullable(sltInfoVo.getLeaseCost()).orElse(BigDecimal.ZERO)
|
||||
.add(Optional.ofNullable(sltInfoVo.getRepairCost()).orElse(BigDecimal.ZERO))
|
||||
.add(Optional.ofNullable(sltInfoVo.getScrapCost()).orElse(BigDecimal.ZERO))
|
||||
.add(Optional.ofNullable(sltInfoVo.getLoseCost()).orElse(BigDecimal.ZERO))
|
||||
);
|
||||
|
||||
resultVoList.add(sltInfoVo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据单位及工程查询待结算费用明细
|
||||
* @param requestApplyDto 工程、班组
|
||||
|
|
@ -339,8 +348,8 @@ public class ClzSltAgreementInfoServiceImpl implements ClzSltAgreementInfoServic
|
|||
// 调用单个结算信息查询方法
|
||||
MaterialSltInfoVo sltInfo = getSltInfo(sltAgreementInfo);
|
||||
|
||||
// 给外层的单位名称/工程名称赋值
|
||||
if (sltInfo != null) {
|
||||
// 给外层的单位名称/工程名称赋值
|
||||
extractInnerNameToOuter(voList, sltInfo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
package com.bonus.material.push.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author : 洪超
|
||||
* @version : 1.0
|
||||
* @time : 2025-10-10 15:03
|
||||
* @Description: 实施单位枚举
|
||||
*/
|
||||
@Getter
|
||||
public enum IwsImpUnitEnum {
|
||||
|
||||
IMP_UNIT_HY(309, "安徽宏源电力建设有限公司"),
|
||||
IMP_UNIT_SA(339, "安徽顺安电网建设有限公司"),
|
||||
IMP_UNIT_BD(333, "变电分公司"),
|
||||
IMP_UNIT_HYBD(309, "宏源变电工程处"),
|
||||
IMP_UNIT_HYSD(309, "宏源送电工程处"),
|
||||
IMP_UNIT_JJ(101, "机具(物流)分公司"),
|
||||
IMP_UNIT_JXHFGS(344, "机械化分公司"),
|
||||
IMP_UNIT_JXSY(337, "检修试验分公司"),
|
||||
IMP_UNIT_JZFGS(338, "建筑分公司(消防分公司)"),
|
||||
IMP_UNIT_SR(102, "送电二分公司"),
|
||||
IMP_UNIT_SY(327, "送电一分公司"),
|
||||
IMP_UNIT_YJFGS(346, "运检分公司(无人机作业中心)");
|
||||
|
||||
private final Integer impUnitId;
|
||||
private final String impUnitName;
|
||||
|
||||
IwsImpUnitEnum(Integer impUnitId, String impUnitName) {
|
||||
this.impUnitId = impUnitId;
|
||||
this.impUnitName = impUnitName;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -37,4 +37,8 @@ public interface ConsProjectLeaseMoneyMapper {
|
|||
List<BmProject> getIwsProjectList();
|
||||
|
||||
void updateIwsProject(@Param("list") List<BmProject> list);
|
||||
|
||||
List<BmProject> getBmProjectIsExist();
|
||||
|
||||
int insertBmProject(@Param("list") List<BmProject> newProjects);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.bonus.material.push.domain.AccProjectLeaseMoneyBean;
|
|||
import com.bonus.material.push.domain.ConsProjectLeaseMoneyBean;
|
||||
import com.bonus.material.push.domain.IwsCostPushBean;
|
||||
import com.bonus.material.push.domain.RentalCostsBean;
|
||||
import com.bonus.material.push.enums.IwsImpUnitEnum;
|
||||
import com.bonus.material.push.mapper.AccProjectLeaseMoneyMapper;
|
||||
import com.bonus.material.push.mapper.ConsProjectLeaseMoneyMapper;
|
||||
import com.bonus.material.push.mapper.IwsCostPushMapper;
|
||||
|
|
@ -88,6 +89,52 @@ public class RentalCostsServiceImpl implements RentalCostsService {
|
|||
consDao.updateIwsProject(list);
|
||||
}
|
||||
|
||||
/***************将没有的工程插入到bm_project表中****************/
|
||||
//1.获取bm_project表中已有的工程
|
||||
List<BmProject> isExistList = consDao.getBmProjectIsExist();
|
||||
//2.筛选出不在bm_project表中的工程
|
||||
List<BmProject> newProjects = new ArrayList<>();
|
||||
if (list != null && !list.isEmpty()) {
|
||||
Set<String> existingExternalIds = isExistList.stream()
|
||||
.map(BmProject::getExternalId) // 从每个 BmProject 对象中提取 externalId(唯一标识)
|
||||
.collect(Collectors.toSet());
|
||||
newProjects = list.stream()
|
||||
.filter(project -> !existingExternalIds.contains(project.getExternalId())) // 判断当前工程的 externalId 是否不在已有 ID 集合中
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
//3.如果有不存在的的工程,则需要将其插入到bm_project表中
|
||||
if (newProjects != null && !newProjects.isEmpty()) {
|
||||
//4.定义实施单位,通过impUnitName确定impUnit
|
||||
for (BmProject project : newProjects) {
|
||||
String impUnitName = project.getImpUnitName(); // 假设项目名称字段为proName
|
||||
if(impUnitName!=null && !impUnitName.isEmpty()) {
|
||||
// 遍历枚举,查找项目名称中包含的单位名称
|
||||
for (IwsImpUnitEnum unitEnum : IwsImpUnitEnum.values()) {
|
||||
if (impUnitName.contains(unitEnum.getImpUnitName())) {
|
||||
project.setImpUnit(String.valueOf(unitEnum.getImpUnitId())); // 假设setImpUnit方法
|
||||
break; // 找到匹配就跳出内层循环
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有匹配到,可以设置一个默认值或保持null
|
||||
if (project.getImpUnit() == null) {
|
||||
project.setImpUnit(null);
|
||||
}
|
||||
}
|
||||
// 5.过滤掉impUnit为null的数据
|
||||
newProjects = newProjects.stream()
|
||||
.filter(project -> project.getImpUnit() != null)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
int res = consDao.insertBmProject(newProjects);
|
||||
if (res == 0) {
|
||||
throw new RuntimeException("新增bm_project失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -280,8 +280,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
SELECT
|
||||
saa.id as id, bai.agreement_id as agreementId, bai.agreement_code as agreementCode, saa.`code` as sltApplyCode,
|
||||
bui.unit_id as unitId, bui.unit_name as unitName, bp.pro_id as projectId, bp.pro_name as projectName,
|
||||
saa.remark, sad.money as costs, saa.audit_time as auditTime,
|
||||
saa.`status` as sltStatus, sad.slt_type as sltType,
|
||||
saa.remark, sad.money as costs, saa.audit_time as auditTime, sad.start_time as startTime, sad.end_time as endTime,
|
||||
saa.`status` as sltStatus, sad.slt_type as sltType, sad.num, sad.price as leasePrice,
|
||||
mt1.type_name as typeName, mt.type_name as modelName, mt.unit_name as mtUnitName
|
||||
FROM
|
||||
clz_slt_agreement_apply saa
|
||||
|
|
|
|||
|
|
@ -1043,32 +1043,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<select id="getTeamInOrOutInfo" resultType="com.bonus.material.clz.domain.TeamVo">
|
||||
SELECT DISTINCT
|
||||
bzgl_bz.ssfbdw AS subcontractor,
|
||||
bzgl_bz.bzmc AS teamName,
|
||||
bzgl_bz.bzz_name AS teamLeaderName,
|
||||
bzgl_bz.bz_status AS teamStatus,
|
||||
CASE bzgl_bz.bz_status
|
||||
WHEN '1' THEN '空闲'
|
||||
WHEN '2' THEN '申报'
|
||||
WHEN '3' THEN '进场'
|
||||
ELSE '未知'
|
||||
END AS teamStatusName,
|
||||
bp.pro_id AS proId,
|
||||
bzgl_bz.project_name AS projectName,
|
||||
org_user.mobile AS teamLeaderPhone,
|
||||
bzgl_bz.sfjs AS isDismiss,
|
||||
CASE bzgl_bz.sfjs
|
||||
WHEN '0' THEN '否'
|
||||
WHEN '1' THEN '是'
|
||||
ELSE '未知'
|
||||
END AS isDismissName,
|
||||
bzgl_bz.sjjcsj AS actualProcessTime,
|
||||
bzgl_bz.sjccsj AS actualExitTime,
|
||||
bp.imp_unit AS impUnit
|
||||
sd.dept_name AS impUnitName,
|
||||
bp.pro_center AS departName,
|
||||
bzgl_bz.ssfbdw AS subcontractor,
|
||||
bzgl_bz.bzmc AS teamName,
|
||||
bzgl_bz.bzz_name AS teamLeaderName,
|
||||
bzgl_bz.bz_status AS teamStatus,
|
||||
CASE bzgl_bz.bz_status
|
||||
WHEN '1' THEN '空闲'
|
||||
WHEN '2' THEN '申报'
|
||||
WHEN '3' THEN '进场'
|
||||
ELSE '未知'
|
||||
END AS teamStatusName,
|
||||
bp.pro_id AS proId,
|
||||
bzgl_bz.project_name AS projectName,
|
||||
org_user.mobile AS teamLeaderPhone,
|
||||
bzgl_bz.sfjs AS isDismiss,
|
||||
CASE bzgl_bz.sfjs
|
||||
WHEN '0' THEN '否'
|
||||
WHEN '1' THEN '是'
|
||||
ELSE '未知'
|
||||
END AS isDismissName,
|
||||
bzgl_bz.sjjcsj AS actualProcessTime,
|
||||
bzgl_bz.sjccsj AS actualExitTime,
|
||||
bp.imp_unit AS impUnit
|
||||
FROM
|
||||
`micro-tool`.bzgl_bz bzgl_bz
|
||||
LEFT JOIN `uni_org`.org_user org_user ON bzgl_bz.bzz_idcard = org_user.id_card
|
||||
LEFT JOIN bm_project bp ON bp.external_id = bzgl_bz.project_id
|
||||
`micro-tool`.bzgl_bz bzgl_bz
|
||||
LEFT JOIN `uni_org`.org_user org_user ON bzgl_bz.bzz_idcard = org_user.id_card
|
||||
LEFT JOIN bm_project bp ON bp.external_id = bzgl_bz.project_id
|
||||
LEFT JOIN sys_dept sd ON sd.dept_id = bp.imp_unit
|
||||
WHERE 1 = 1
|
||||
<if test="proId != null and proId != ''">
|
||||
AND bp.pro_id = #{proId}
|
||||
|
|
@ -1076,6 +1079,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="impUnit != null and impUnit != ''">
|
||||
AND bp.imp_unit = #{impUnit}
|
||||
</if>
|
||||
<if test="impUnitName != null and impUnitName != ''">
|
||||
AND sd.dept_name like concat('%',#{impUnitName},'%')
|
||||
</if>
|
||||
<if test="departName != null and departName != ''">
|
||||
AND bp.pro_center like concat('%',#{departName},'%')
|
||||
</if>
|
||||
<if test="teamName != null and teamName != ''">
|
||||
AND bzgl_bz.bzmc like concat('%',#{teamName},'%')
|
||||
</if>
|
||||
<if test="keyWord != null and keyWord != ''">
|
||||
AND (
|
||||
bzgl_bz.ssfbdw like concat('%',#{keyWord},'%') or
|
||||
|
|
|
|||
|
|
@ -200,6 +200,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<select id="getIwsProjectList" resultType="com.bonus.material.basic.domain.BmProject">
|
||||
select
|
||||
dfs.id as externalId,
|
||||
dfs.name as proName,
|
||||
dfs.project_leader_name as proManager,
|
||||
case dfs.project_type_id
|
||||
when 1 then 0
|
||||
when 2 then 1
|
||||
else ''
|
||||
end as proTypeId,
|
||||
dfs.pc_no as proCode,
|
||||
case dfs.engineer_type
|
||||
when '基建' then 0
|
||||
when '用户工程' then 1
|
||||
when '技改大修' then 2
|
||||
else 3
|
||||
end as proNature,
|
||||
case dfs.project_status
|
||||
when '开工准备' then 0
|
||||
when '在建' then 1
|
||||
|
|
@ -208,7 +222,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
when '竣工' then 4
|
||||
else dfs.project_status
|
||||
end as proStatus,
|
||||
dfs.real_end_date as actualEndDate
|
||||
dfs.contract_body as contractPart,
|
||||
dfs.project_dept as proCenter,
|
||||
dfs.real_start_date as actualStartDate,
|
||||
dfs.real_end_date as actualEndDate,
|
||||
dfs.apply_company as impUnitName
|
||||
from data_center.dx_fb_son dfs
|
||||
</select>
|
||||
|
||||
|
|
@ -221,4 +239,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
WHERE external_id = #{item.externalId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="getBmProjectIsExist" resultType="com.bonus.material.basic.domain.BmProject">
|
||||
select
|
||||
distinct external_id as externalId
|
||||
from bm_project
|
||||
where external_id is not null
|
||||
</select>
|
||||
|
||||
<insert id="insertBmProject">
|
||||
insert into bm_project (pro_name,external_id,pro_type_id,pro_manager,create_by,create_time,del_flag,pro_code,imp_unit,pro_nature,pro_status,contract_part,pro_center,actual_start_date,actual_end_date)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{item.proName},#{item.externalId},#{item.proTypeId},#{item.proManager},1,now(),0,#{item.proCode},#{item.impUnit},#{item.proNature},#{item.proStatus},#{item.contractPart},#{item.proCenter},#{item.actualStartDate},#{item.actualEndDate})
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue