Browse Source

看板1.2

master
Jinyuanyuan 4 months ago
parent
commit
98339b977a
  1. 13
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java
  2. 10
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java
  3. 86
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml
  4. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java
  5. 31
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java
  6. 99
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java
  7. 66
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageOV.java
  8. 64
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageResponse.java
  9. 6
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/NewFundOV.java
  10. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectProgressOV.java
  11. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/TypeResponseOV.java

13
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java

@ -189,14 +189,19 @@ public class HuzhouProjectController {
} }
/** /**
* 状态更新 * 测试
* @param * @param
* @param * @param
*/ */
@GetMapping("/acount") @GetMapping("/acount")
public Result<?> acount(){ public Result<?> acount(HuzhouProjectinfo projectInfo,
NewFundOV result = projectinfoService.getFundByType(); @RequestParam(name="current", defaultValue="1") Integer pageNo,
return Result.OK(result); @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="orderBy", defaultValue="duty_workplace") String orderBy,
@RequestParam(name="orderDir", defaultValue="desc") String orderDir){
IPage<DimensionPageResponse> dimensionPage = projectinfoService.getDimensionPage(projectInfo, pageNo, pageSize, orderBy, orderDir);
return Result.OK(dimensionPage);
} }
} }

10
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java

@ -1,7 +1,9 @@
package com.easy.admin.modules.huzhou.dao; package com.easy.admin.modules.huzhou.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easy.admin.modules.huzhou.vo.DimensionPageOV;
import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV; import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
@ -48,4 +50,12 @@ public interface HuzhouProjectinfoMapper extends BaseMapper<HuzhouProjectinfo> {
Integer updateType(); Integer updateType();
/**
* 获取项目信息和子项目信息列表(排序)
* @param info 查询条件
* @return List<HuzhouProjectinfoOV>
*/
IPage<DimensionPageOV> getPageSorted(Page page, @Param("info") HuzhouProjectinfo info, @Param("orderBy") String orderBy, @Param("orderDir") String orderDir);
} }

86
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml

@ -54,6 +54,15 @@
<result property="stage" column="sub_stage" jdbcType="VARCHAR"/> <result property="stage" column="sub_stage" jdbcType="VARCHAR"/>
<result property="workplaceProperties" column="sub_workplace_properties" jdbcType="VARCHAR"/> <result property="workplaceProperties" column="sub_workplace_properties" jdbcType="VARCHAR"/>
</resultMap> </resultMap>
<resultMap id="dimensionPageMap" type="com.easy.admin.modules.huzhou.vo.DimensionPageOV">
<result property="dutyWorkplace" column="dutyWorkplace" jdbcType="VARCHAR"/>
<result property="adminDivision" column="adminDivision" jdbcType="VARCHAR"/>
<result property="workplaceProperties" column="workplaceProperties" jdbcType="VARCHAR"/>
<result property="superLeader" column="superLeader" jdbcType="VARCHAR"/>
<result property="totalMoney" column="totalMoney" jdbcType="NUMERIC"/>
<result property="centralMoney" column="centralMoney" jdbcType="NUMERIC"/>
<result property="provincialMoney" column="provincialMoney" jdbcType="NUMERIC"/>
</resultMap>
<sql id="selectAuthSql"> <sql id="selectAuthSql">
(1=1 (1=1
<if test="info.projectContacts!=null and info.projectContacts!=''"> <if test="info.projectContacts!=null and info.projectContacts!=''">
@ -213,4 +222,81 @@ order by create_date desc
SET type = "0" SET type = "0"
WHERE type = "2" and (central_money!='' or provincial_money!='') WHERE type = "2" and (central_money!='' or provincial_money!='')
</update> </update>
<select id="getPageSorted" resultMap="dimensionPageMap" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo">
SELECT duty_workplace as dutyWorkplace,admin_division as adminDivision,workplace_properties as workplaceProperties,super_leader as superLeader,
sum(total_money) as totalMoney,
sum(central_money) as centralMoney,
sum(provincial_money) as provincialMoney from huzhou_projectinfo
<where>
<include refid="selectAuthSql"/>
<if test="info.projectName!=null and info.projectName!=''">
<bind name="tempStr" value="'%' + info.projectName + '%'" />
and project_name like #{tempStr}
</if>
<if test="info.adminDivision!=null and info.adminDivision!=''">
<bind name="tempStr" value="'%' + info.adminDivision + '%'" />
and admin_division like #{tempStr}
</if>
<if test="info.dutyWorkplace!=null and info.dutyWorkplace!=''">
<bind name="tempStr" value="'%' + info.dutyWorkplace + '%'" />
and duty_workplace like #{tempStr}
</if>
<if test="info.workplaceProperties!=null and info.workplaceProperties!=''">
<bind name="tempStr" value="'%' + info.workplaceProperties + '%'" />
and workplace_properties like #{tempStr}
</if>
<if test="info.dutyWorkplace!=null and info.dutyWorkplace!=''">
<bind name="tempStr" value="'%' + info.dutyWorkplace + '%'" />
and duty_workplace like #{tempStr}
</if>
<if test="info.reformName!=null and info.reformName!=''">
and reform_name = #{info.reformName}
</if>
<if test="info.superLeader!=null and info.superLeader!=''">
and super_leader = #{info.superLeader}
</if>
</where>
group by duty_workplace,admin_division,workplace_properties,super_leader
order by ${orderBy} ${orderDir}
</select>
<select id="getPageSorted" resultMap="dimensionPageMap" parameterType="com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo">
SELECT duty_workplace as dutyWorkplace,admin_division as adminDivision,workplace_properties as workplaceProperties,super_leader as superLeader,
sum(total_money) as totalMoney,
sum(central_money) as centralMoney,
sum(provincial_money) as provincialMoney from huzhou_projectinfo
<where>
<include refid="selectAuthSql"/>
<if test="info.projectName!=null and info.projectName!=''">
<bind name="tempStr" value="'%' + info.projectName + '%'" />
and project_name like #{tempStr}
</if>
<if test="info.adminDivision!=null and info.adminDivision!=''">
<bind name="tempStr" value="'%' + info.adminDivision + '%'" />
and admin_division like #{tempStr}
</if>
<if test="info.dutyWorkplace!=null and info.dutyWorkplace!=''">
<bind name="tempStr" value="'%' + info.dutyWorkplace + '%'" />
and duty_workplace like #{tempStr}
</if>
<if test="info.workplaceProperties!=null and info.workplaceProperties!=''">
<bind name="tempStr" value="'%' + info.workplaceProperties + '%'" />
and workplace_properties like #{tempStr}
</if>
<if test="info.dutyWorkplace!=null and info.dutyWorkplace!=''">
<bind name="tempStr" value="'%' + info.dutyWorkplace + '%'" />
and duty_workplace like #{tempStr}
</if>
<if test="info.reformName!=null and info.reformName!=''">
and reform_name = #{info.reformName}
</if>
<if test="info.superLeader!=null and info.superLeader!=''">
and super_leader = #{info.superLeader}
</if>
</where>
group by duty_workplace,admin_division,workplace_properties,super_leader
order by ${orderBy} ${orderDir}
</select>
</mapper> </mapper>

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java

@ -151,5 +151,7 @@ public class HuzhouProjectinfo extends BaseEntity {
private String type; private String type;
} }

31
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java

@ -122,6 +122,7 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo> {
*/ */
CountOV countByProperties(); CountOV countByProperties();
/** /**
* 更新状态 * 更新状态
* *
@ -130,22 +131,46 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo> {
Boolean updateType(); Boolean updateType();
/** /**
* 返回项目总数量入库项目id列表配套项目id列表 * 返回项目总数量入库项目id列表配套项目id列表(不涉及子项目)
*
* @param
*/
public TypeResponseOV getIds();
/**
* 返回项目总数量入库项目id列表配套项目id列表(涉及子项目)
* *
* @param * @param
*/ */
TypeResponseOV getIdsByType(); TypeResponseOV getIdsByType();
//返回入库项目的进度 //不涉及子项目
ProjectProgressOV getProgress(List<String> Ids);
//返回入库项目的进度(涉及子项目)
ProjectProgressOV getProgressByType(); ProjectProgressOV getProgressByType();
/** /**
* 根据id列表返回项目总进度和资金拨付情况 * 根据id列表返回项目总进度和资金拨付情况(不涉及子项目)
*
* @param
*/
NewFundOV getFund(List<String> Ids);
/**
* 根据id列表返回项目总进度和资金拨付情况涉及子项目
* *
* @param * @param
*/ */
NewFundOV getFundByType(); NewFundOV getFundByType();
/**
* 分维度返回page
*
* @param
*/
IPage<DimensionPageResponse> getDimensionPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize,String orderBy,String orderDir);
} }

99
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -40,6 +40,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -707,6 +708,20 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return result; return result;
} }
@Override
public TypeResponseOV getIds() {
HuzhouProjectinfo projectInfo =new HuzhouProjectinfo();
projectInfo.setStage("0");
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo);
List<HuzhouProjectinfoOV> projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(projectInfoAuthSelect);
Map<String, List<HuzhouProjectinfoOV>> zxmMap = projectAndChildInfoPageList.stream().collect(Collectors.groupingBy(HuzhouProjectinfo::getType));
int total = projectAndChildInfoPageList.size();
List<String> rkIds = zxmMap.get("1").stream().map(x -> x.getId()).collect(Collectors.toList());
List<String> ptIds= zxmMap.get("2").stream().map(x -> x.getId()).collect(Collectors.toList());
TypeResponseOV.TypeResponseOVBuilder result = TypeResponseOV.builder().total(total).rkIdsList(rkIds).ptIdsList(ptIds).pageList(projectAndChildInfoPageList);
return null;
}
@Override @Override
public TypeResponseOV getIdsByType() { public TypeResponseOV getIdsByType() {
HuzhouProjectinfo projectInfo =new HuzhouProjectinfo(); HuzhouProjectinfo projectInfo =new HuzhouProjectinfo();
@ -717,12 +732,10 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
List<HuzhouSubProjectinfo> cxm = new ArrayList<>(); List<HuzhouSubProjectinfo> cxm = new ArrayList<>();
for(HuzhouProjectinfoOV info:projectAndChildInfoPageList){ for(HuzhouProjectinfoOV info:projectAndChildInfoPageList){
if(info.getChildren()!=null){ if(info.getChildren()!=null){
for(HuzhouSubProjectinfo child:info.getChildren()){ cxm.addAll(info.getChildren());
cxm.add(child);
}
} }
} }
Map<String, List<HuzhouSubProjectinfo>> cxmMap = cxm.stream().collect(Collectors.groupingBy(HuzhouProjectinfo::getType)); Map<String, List<HuzhouSubProjectinfo>> cxmMap = cxm.stream().collect(Collectors.groupingBy(x->x.getType()));
int zxmNum=0; int zxmNum=0;
int cxmNum=0; int cxmNum=0;
for (String key:zxmMap.keySet()) { for (String key:zxmMap.keySet()) {
@ -741,6 +754,25 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return result; return result;
} }
@Override
public ProjectProgressOV getProgress(List<String> Ids) {
int fininshNum=0;
int unfininshNum=0;
BigDecimal progress = new BigDecimal("0.00");
if(Ids.size()!=0){
List<HuzhouPlaninfo> planInfoList = planinfoService.listByProjectIds(Ids);
fininshNum = (int) planInfoList.stream().filter(x -> (x.getIsfinish().equals("2"))).count();
unfininshNum = planInfoList.size()-fininshNum;
progress= BigDecimal.valueOf(((double) fininshNum/planInfoList.size()));
}
ProjectProgressOV result = ProjectProgressOV.builder().fininshNum(fininshNum)
.unfininshNum(unfininshNum)
.projectProgress(String.valueOf(progress)).build();
return result;
}
@Override @Override
public ProjectProgressOV getProgressByType() { public ProjectProgressOV getProgressByType() {
int fininshNum=0; int fininshNum=0;
@ -761,6 +793,33 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
} }
@Override
public NewFundOV getFund(List<String> Ids) {
NewFundOV result = null;
if(Ids.size()!=0){
Map<String, BigDecimal> totalMap = contractinfoMapper.getTotalByProjectIds(Ids);
Map<String, BigDecimal> paymentMap = contractinfoMapper.getPaymentsByProjectIds(Ids);
BigDecimal totalAmount = totalMap.get("totalAcount");
BigDecimal totalCentral = totalMap.get("centralAcount");
BigDecimal totalProvincial = totalMap.get("provincialAcount");
BigDecimal payAmount = paymentMap.get("totalPayment");
BigDecimal payCentral = paymentMap.get("centralPayment");
BigDecimal payProvincial = paymentMap.get("provincialPayment");
//资金执行率
BigDecimal paymentExecutionRate = payAmount.divide(totalAmount, 2, RoundingMode.HALF_UP);
BigDecimal SuperiorFundPayment = payCentral.add(payProvincial);
BigDecimal SuperiorFundTotal = totalCentral.add(totalProvincial);
//上级资金执行率
BigDecimal superiorFundExecutionRate = SuperiorFundPayment.divide(SuperiorFundTotal, 2, RoundingMode.HALF_UP);
result=NewFundOV.builder().totalMoney(String.valueOf(totalAmount)).payAmount(String.valueOf(payAmount))
.totalCentral(String.valueOf(totalCentral)).payCentral(String.valueOf(payCentral))
.totalProvincial(String.valueOf(totalProvincial)).payProvincial(String.valueOf(payProvincial))
.paymentExecutionRate(String.valueOf(paymentExecutionRate))
.superiorFundExecutionRate(String.valueOf(superiorFundExecutionRate)).build();
}
return result;
}
@Override @Override
public NewFundOV getFundByType() { public NewFundOV getFundByType() {
List<String> projectIds = this.getIdsByType().getRkIdsList(); List<String> projectIds = this.getIdsByType().getRkIdsList();
@ -783,6 +842,38 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return result; return result;
} }
@Override
public IPage<DimensionPageResponse> getDimensionPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize,String orderBy,String orderDir) {
Page page = new Page(pageNo, pageSize);
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo);
IPage<DimensionPageOV> pageSorted = projectinfoMapper.getPageSorted(page, projectInfoAuthSelect, orderBy, orderDir);
List<DimensionPageOV> records = pageSorted.getRecords();
List<DimensionPageResponse> newRecords = new ArrayList<>();
IPage<DimensionPageResponse> result=new Page<>();
LambdaQueryWrapper<HuzhouProjectinfo> queryWrapper = new LambdaQueryWrapper<>();
List<String> projectIds=new ArrayList<>();
DimensionPageResponse build = DimensionPageResponse.builder().build();
for(DimensionPageOV r:records) {
queryWrapper.eq(HuzhouProjectinfo::getDutyWorkplace, r.getDutyWorkplace()).eq(HuzhouProjectinfo::getAdminDivision, r.getAdminDivision())
.eq(HuzhouProjectinfo::getWorkplaceProperties, r.getWorkplaceProperties()).eq(HuzhouProjectinfo::getSuperLeader, r.getSuperLeader());
projectIds.addAll(projectinfoMapper.selectList(queryWrapper).stream().map(x -> x.getId()).collect(Collectors.toList()));
NewFundOV fund = this.getFund(projectIds);
ProjectProgressOV progress = this.getProgress(projectIds);
BeanUtils.copyProperties(build,r);
build.setTotalMoney(String.valueOf(r.getTotalMoney())).setCentralMoney(String.valueOf(r.getCentralMoney()))
.setProvincialMoney(String.valueOf(r.getProvincialMoney()))
.setPaymentExecutionRate(fund.getPaymentExecutionRate())
.setSuperiorFundExecutionRate(fund.getSuperiorFundExecutionRate())
.setProjectProgress(progress.getProjectProgress());
newRecords.add(build);
}
result.setSize(pageSorted.getSize()).setCurrent(pageSorted.getCurrent()).setRecords(newRecords).setTotal(pageSorted.getTotal());
return result;
}
} }

66
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageOV.java

@ -0,0 +1,66 @@
package com.easy.admin.modules.huzhou.vo;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@Builder(toBuilder = true)
public class DimensionPageOV {
/**
* 责任单位
*/
private String dutyWorkplace;
/**
* 行政区划
*/
private String adminDivision;
/**
* 单位属性
*/
private String workplaceProperties;
/**
* 上级指导处室
*/
private String superLeader;
/**
* 总投资
*/
private Double totalMoney;
// /**
// * 合同支付执行率
// */
// private Double paymentExecutionRate;
/**
* 中央资金
*/
private Double centralMoney;
/**
* 省级资金
*/
private Double provincialMoney;
// /**
// * 合同支付执行率
// */
// private Double superiorFundExecutionRate;
//
// /**
// * 项目总进度
// */
// private Double projectProgress;
}

64
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageResponse.java

@ -0,0 +1,64 @@
package com.easy.admin.modules.huzhou.vo;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@Builder(toBuilder = true)
public class DimensionPageResponse extends DimensionPageOV{
/**
* 责任单位
*/
private String dutyWorkplace;
/**
* 行政区划
*/
private String adminDivision;
/**
* 单位属性
*/
private String workplaceProperties;
/**
* 上级指导处室
*/
private String superLeader;
/**
* 总投资
*/
private String totalMoney;
/**
* 合同支付执行率
*/
private String paymentExecutionRate;
/**
* 中央资金
*/
private String centralMoney;
/**
* 省级资金
*/
private String provincialMoney;
/**
* 合同支付执行率
*/
private String superiorFundExecutionRate;
/**
* 项目总进度
*/
private String projectProgress;
}

6
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/NewFundOV.java

@ -4,6 +4,8 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.math.BigDecimal;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@Builder(toBuilder = true) @Builder(toBuilder = true)
@ -16,4 +18,8 @@ public class NewFundOV {
private String payAmount; private String payAmount;
private String payCentral; private String payCentral;
private String payProvincial; private String payProvincial;
private String paymentExecutionRate;
private String superiorFundExecutionRate;
} }

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectProgressOV.java

@ -10,4 +10,6 @@ import lombok.experimental.Accessors;
public class ProjectProgressOV { public class ProjectProgressOV {
private Integer fininshNum; private Integer fininshNum;
private Integer unfininshNum; private Integer unfininshNum;
private String projectProgress;
} }

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/TypeResponseOV.java

@ -17,4 +17,6 @@ public class TypeResponseOV {
//子项目中的入库项目id列表 //子项目中的入库项目id列表
List<String> crkIdsList; List<String> crkIdsList;
List<String> ptIdsList; List<String> ptIdsList;
List<HuzhouProjectinfoOV> pageList;
} }

Loading…
Cancel
Save