Jelajahi Sumber

工信局APP项目字段整理;查询指定项目的指定月份月报、周报

张维明 2 bulan lalu
induk
melakukan
bdaa2c697e

+ 20 - 4
projects-service/src/main/java/com/rtrh/projects/modules/projects/dao/SubInfoDao.java

@@ -412,16 +412,17 @@ public class SubInfoDao extends EntityServiceImpl<SubInfo> {
 		}
 
 
-		//每年1月份, 投资为0  2月5号之前 投资为0
+		//每年1月份, 投资为0  2月5号之前 投资为0 , d.title as manageName
 		if ("01".equals(month)||("02".equals(month)&&calendar_1.getTime().getTime()>date.getTime())){
-			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,'0' AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, d.title as manageName, e.title subjectId ");
+			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,'0' AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, e.title subjectId ");
 
 		}else {
-			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,IF (sa.yearAmt != 0,ROUND((src.yearAmtSj - sa.yearAmt) * 100 / sa.yearAmt,2),NULL) AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, d.title as manageName, e.title subjectId ");
+			//, d.title as manageName
+			sql.append(" select sa.yearAmt,src.yearAmtSj,src.yearAmtRt,IF (sa.yearAmt != 0,ROUND((src.yearAmtSj - sa.yearAmt) * 100 / sa.yearAmt,2),NULL) AS `offset`,sqi.title problemReason,IF (us.id IS NULL, 0, 1) AS isBl,a.*,b.title as unitName,f.title as mainName, c.title as indusName, e.title subjectId ");
 		}
 		sql.append(" from "+subInfoTableName+" a ");
 		sql.append(" left join j_unit b on a.unit_id = b.id ");
-		sql.append(" LEFT JOIN j_unit d ON a.manage_id = d.id ");
+//		sql.append(" LEFT JOIN j_unit d ON a.manage_id = d.id ");
 		sql.append(" LEFT JOIN j_unit f ON a.main_id = f.id ");
 		sql.append(" left join t_systable c on a.indus_kind = c.id ");
 		sql.append(" left join t_systable e on a.subject_id = e.id ");
@@ -1517,4 +1518,19 @@ public class SubInfoDao extends EntityServiceImpl<SubInfo> {
 		List<SubInfo> list = find(detachedCriteria);
 		return list;
 	}
+
+	public List<SubInfo> findByIndusKindAndAddress(String indusKind, String address){
+		DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SubInfo.class);
+		Criterion criterion = Restrictions.eq("logicDeleteFlag", 0);
+		if(StringUtils.isNotBlank(indusKind)){
+			criterion = Restrictions.and(criterion, Restrictions.eq("indusKind", indusKind));
+		}
+		if(StringUtils.isNotBlank(address)){
+			criterion = Restrictions.and(criterion, Restrictions.eq("subjectId", address));
+		}
+		detachedCriteria.add(criterion);
+
+		List<SubInfo> list = find(detachedCriteria);
+		return list;
+	}
 }

+ 3 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/RptContMapper.java

@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -84,4 +85,6 @@ public interface RptContMapper {
 
     @Update("UPDATE sub_rpt_cont SET logic_delete_flag = '1' WHERE id = #{id} ")
     void deleteById(@Param("id") String id);
+
+    List<RptCont> getContBySubIdAndKindApp(@Param("subId") String subId, @Param("kind") String kind,@Param("startDate")Date startDate, @Param("endDate")Date endDate);
 }

+ 28 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/mapper/RptContMapper.xml

@@ -13,4 +13,32 @@
 			kind = '1'
 		  	AND kj_month LIKE concat(#{year}, '%')
 	</select>
+
+	<select id="getContBySubIdAndKindApp" resultType="com.rtrh.projects.modules.projects.po.RptCont">
+		select id,kind,year,week,begin_date beginDate,end_date endDate
+		       ,sub_id subId,sub_plan_id subPlanId,num_bl numBl, amt,content
+				,reason,kj_month kjMonth,amt_last amtLast,amt_rt amtRt
+		from sub_rpt_cont
+		where
+			logic_delete_flag = 0
+		and sub_id = #{subId}
+
+		<if test="kind != null and kind != ''">
+			and kind =  #{kind}
+		</if>
+		<if test="startDate != null ">
+			and begin_date >=  #{startDate}
+		</if>
+		<if test="endDate != null ">
+			<choose>
+				<when test="kind == '2'">
+					and end_date &lt;=  #{endDate}
+				</when>
+				<otherwise>
+					and begin_date &lt;=  #{endDate}
+				</otherwise>
+			</choose>
+		</if>
+		order by begin_date desc
+	</select>
 </mapper>

+ 21 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/po/SubInfo.java

@@ -452,6 +452,11 @@ public class SubInfo extends TableBaseColomn {
 	// 建设性质:1-储备 2-新建 3-在建 9-投产
 	private String statusName;
 
+	//是否停工
+	private Integer boolLockout;
+
+	private Integer isRg;
+
 
 
 	public Integer getSort1() {
@@ -1057,4 +1062,20 @@ public class SubInfo extends TableBaseColomn {
 	public void setStatusLamp(String statusLamp) {
 		this.statusLamp = statusLamp;
 	}
+
+	public Integer getBoolLockout() {
+		return boolLockout;
+	}
+
+	public void setBoolLockout(Integer boolLockout) {
+		this.boolLockout = boolLockout;
+	}
+
+	public Integer getIsRg() {
+		return isRg;
+	}
+
+	public void setIsRg(Integer isRg) {
+		this.isRg = isRg;
+	}
 }

+ 4 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubInfoService.java

@@ -7,12 +7,14 @@ import java.util.Map;
 
 import com.rtrh.core.repository.Page;
 import com.rtrh.core.vo.Message;
+import com.rtrh.projects.modules.projects.dto.QTDTO;
 import com.rtrh.projects.modules.projects.po.SubInfo;
 import com.rtrh.projects.modules.projects.po.SubInfoGxj;
 import com.rtrh.projects.modules.projects.po.SubLabel;
 import com.rtrh.projects.modules.projects.vo.*;
 import com.rtrh.projects.modules.projects.vo.export.*;
 import com.rtrh.projects.modules.system.vo.LoginUserVO;
+import com.rtrh.projects.outapi.vo.StaticsVO;
 import com.rtrh.projects.vo.subject.MoveDbParamVo;
 import com.rtrh.projects.vo.subject.SubinfoPreQueryVo;
 import org.apache.ibatis.annotations.Param;
@@ -460,4 +462,6 @@ public interface SubInfoService {
 	void removeFour(MoveDbParamVo vo, LoginUserVO loginUser);
 
 	void cancelRemove(MoveDbParamVo vo, LoginUserVO loginUser);
+
+	StaticsVO statics(QTDTO qtdto);
 }

+ 1 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/SubRptContService.java

@@ -19,6 +19,7 @@ public interface SubRptContService {
 	List<RptCont> getListBySub(String subId, String year, RptContKindEnum kind);
 
 	List<RptCont> getListBySubId(String subId, RptContKindEnum kind,Date startDate,Date endDate);
+	List<RptCont> getListBySubIdApp(String subId, RptContKindEnum kind, Date startDate, Date endDate);
 
 	List<Map<String, Object>> ListQuery(String varkind, String varbegin, String varend, String vardesc, String varstatus, String varjsdd, String varlogin,Integer varpage, Integer varnum, Integer outtotal);
 

+ 70 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -2,6 +2,7 @@ package com.rtrh.projects.modules.projects.service.impl;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.DecimalFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -10,6 +11,7 @@ import java.util.stream.Collectors;
 
 import com.rtrh.core.vo.Message;
 import com.rtrh.projects.modules.projects.dao.*;
+import com.rtrh.projects.modules.projects.dto.QTDTO;
 import com.rtrh.projects.modules.projects.enums.*;
 import com.rtrh.projects.modules.projects.mapper.SubInfoMapper;
 import com.rtrh.projects.modules.projects.po.*;
@@ -21,6 +23,7 @@ import com.rtrh.projects.modules.system.dao.TSystableDao;
 import com.rtrh.projects.modules.system.po.*;
 import com.rtrh.projects.modules.system.service.ISubInduService;
 import com.rtrh.projects.modules.utils.DateUtils;
+import com.rtrh.projects.outapi.vo.StaticsVO;
 import com.rtrh.projects.util.TargetDataSource;
 import com.rtrh.projects.vo.SubIdVO;
 import com.rtrh.projects.vo.subject.MoveDbParamVo;
@@ -690,6 +693,10 @@ public class SubInfoServiceImpl implements SubInfoService {
     @Override
     public Map<String, Object> getSubInfoById(String id, String queryYear) {
         Map<String, Object> data = subInfoDao.getSubInfoById(id, queryYear);
+        if(data == null){
+            System.out.println("查询到数据为空的ID:"+id);
+            return null;
+        }
         String kindName = "";
         if (data.get("kind") != null) {
             String[] kind = data.get("kind").toString().split(",");
@@ -5952,4 +5959,67 @@ public class SubInfoServiceImpl implements SubInfoService {
         return labelList;
     }
 
+    public StaticsVO statics(QTDTO qtdto){
+
+        StaticsVO vo =new StaticsVO();
+        List<SubInfo> subInfoList = subInfoDao.findByIndusKindAndAddress(qtdto.getVarhy(), qtdto.getVarqx());
+
+        List<SubInfo> cbList = subInfoList.stream().filter(f -> "1".equals(f.getStatus())).collect(Collectors.toList());
+        vo.setReserveCount(cbList.size());
+        Map<String,Object> map = new HashMap<>();
+        //计算正在谋划,正在洽谈,已签约,已备案,已核准
+        long planningCount = cbList.stream().filter(f -> "1".equals(f.getCbStatus())).count();
+        map.put("planning",planningCount);
+        vo.setPlanning(planningCount);
+
+        long negotiateCount = cbList.stream().filter(f -> "2".equals(f.getCbStatus())).count();
+        map.put("negotiate",negotiateCount);
+        vo.setNegotiate(negotiateCount);
+        long signedCount = cbList.stream().filter(f -> "3".equals(f.getCbStatus())).count();
+        map.put("signed",signedCount);
+        vo.setSigned(signedCount);
+        long filedCount = cbList.stream().filter(f -> "4".equals(f.getCbStatus())).count();
+        map.put("filed",filedCount);
+        vo.setFiled(filedCount);
+        long newBuildCount = subInfoList.stream().filter(f -> "2".equals(f.getStatus())).count();
+        vo.setNewBuildCount(newBuildCount);
+        long buildingCount = subInfoList.stream().filter(f -> "3".equals(f.getStatus())).count();
+        vo.setBuildingCount(buildingCount);
+        long commissioningCount = subInfoList.stream().filter(f -> "9".equals(f.getStatus())).count();
+        vo.setCommissioningCount(commissioningCount);
+        long startWorkCount = buildingCount + commissioningCount;
+        map.put("startWorkCount",startWorkCount);
+        vo.setStartWorkCount(startWorkCount);
+        long stopWorkCount = subInfoList.stream().filter(f -> f.getBoolLockout() !=null && 1 == f.getBoolLockout()).count();
+        map.put("stopWorkCount",stopWorkCount);
+        vo.setStopWorkCount(stopWorkCount);
+        long all = newBuildCount + startWorkCount;
+        vo.setStartRate(calculateRate(startWorkCount,all));
+        long rgCount = subInfoList.stream().filter(f -> f.getIsRg()!=null && 1 == f.getIsRg()).count();
+        map.put("rgCount",rgCount);
+        vo.setRgCount(rgCount);
+        long unRgCount = all - rgCount;
+        map.put("unRgCount",unRgCount);
+        vo.setUnRgCount(unRgCount);
+        vo.setRgRate(calculateRate(rgCount,all));
+        vo.setCommissioningRare(calculateRate(commissioningCount,all));
+        return vo;
+    }
+
+    /**
+     * 计算比率并保留一位小数
+     * @param numerator 分子
+     * @param denominator 分母
+     * @return 计算后的比率
+     */
+    private static BigDecimal calculateRate(long numerator, long denominator) {
+        if (denominator == 0) {
+            return BigDecimal.ZERO;
+        }
+        BigDecimal num = BigDecimal.valueOf(numerator);
+        BigDecimal den = BigDecimal.valueOf(denominator);
+        return num.divide(den, 3, RoundingMode.HALF_UP) // 先保留三位小数进行计算
+                .multiply(BigDecimal.valueOf(100))
+                .setScale(1, RoundingMode.HALF_UP); // 最终结果保留一位小数
+    }
 }

+ 11 - 0
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubRptContServiceImpl.java

@@ -100,6 +100,17 @@ public class SubRptContServiceImpl implements SubRptContService {
 		return datas;
 	}
 
+	@Override
+	@TargetDataSource("secondary")
+	public List<RptCont> getListBySubIdApp(String subId, RptContKindEnum kind, Date startDate, Date endDate) {
+		if("2"==kind.getCode()){
+			endDate = DateUtil.endOfDay(endDate);
+		}
+		//转变 按月查询时间。
+		List<RptCont> datas = rptContMapper.getContBySubIdAndKindApp(subId,kind.getCode(),startDate,endDate);
+		return datas;
+	}
+
 	@Override
 	@TargetDataSource("secondary")
 	public List<Map<String, Object>> ListQuery(String varkind, String varbegin, String varend, String vardesc, String varstatus, String varjsdd, String varlogin,Integer varpage, Integer varnum, Integer outtotal) {

+ 41 - 0
projects-service/src/main/java/com/rtrh/projects/outapi/vo/StaticsVO.java

@@ -0,0 +1,41 @@
+package com.rtrh.projects.outapi.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class StaticsVO {
+
+    @ApiModelProperty("储备项目数量")
+    private Integer reserveCount;
+    @ApiModelProperty("新建项目数量")
+    private Long newBuildCount;
+    @ApiModelProperty("在建项目数量")
+    private Long buildingCount;
+    @ApiModelProperty("投产项目数量")
+    private Long commissioningCount;
+    @ApiModelProperty("开工项目数量")
+    private Long startWorkCount;
+    @ApiModelProperty("开工率")
+    private BigDecimal startRate;
+    @ApiModelProperty("停工项目数量")
+    private Long stopWorkCount;
+    @ApiModelProperty("入规数")
+    private Long rgCount;
+    @ApiModelProperty("未入规数")
+    private Long unRgCount;
+    @ApiModelProperty("入规率")
+    private BigDecimal rgRate;
+    @ApiModelProperty("投产率")
+    private BigDecimal commissioningRare;
+    @ApiModelProperty("正在谋划")
+    private Long planning;
+    @ApiModelProperty("正在洽谈")
+    private Long negotiate;
+    @ApiModelProperty("已签约")
+    private Long signed;
+    @ApiModelProperty("已备案,已核准")
+    private Long filed;
+}

+ 22 - 0
projects/src/main/java/com/rtrh/projects/outapi/controller/MonthReportApiController.java

@@ -240,6 +240,28 @@ public class MonthReportApiController extends BaseOutApiController {
         return result;
     }
 
+    @TokenAuthenticate
+    @PostMapping("queryReportMonth/app")
+    @ApiOperation("查询指定项目的指定月份月报")
+    public JsonResult queryReportMonthApp(@RequestBody ReportMonthVO monthVO) {
+        JsonResult result = new JsonResult();
+        try {
+            Calendar begin = Calendar.getInstance();
+            begin.setTime(monthVO.getBeginDate());
+            begin.set(Calendar.DAY_OF_MONTH, 1);
+
+            Calendar end = Calendar.getInstance();
+            end.setTime(monthVO.getEndDate());
+            end.set(Calendar.DAY_OF_MONTH, 1);
+            List<RptCont> list = subRptContService.getListBySubIdApp(monthVO.getSubId(), RptContKindEnum.MONTH, begin.getTime(), end.getTime());
+            result.setData("list", list);
+        } catch (Exception e) {
+            logger.error("", e);
+            result.setCode(ResultCode.SYSTEM_ERROR, e.getMessage());
+        }
+        return result;
+    }
+
     /**
      * 月报录入
      */

+ 14 - 0
projects/src/main/java/com/rtrh/projects/outapi/controller/WeekReportApiController.java

@@ -212,6 +212,20 @@ public class WeekReportApiController extends BaseOutApiController {
         return result;
     }
 
+    @TokenAuthenticate
+    @PostMapping("queryReportWeek/app")
+    public JsonResult queryReportWeekApp(@RequestBody ReportMonthVO weekVO) {
+        JsonResult result = new JsonResult();
+        try {
+            List<RptCont> list=subRptContService.getListBySubIdApp(weekVO.getSubId(),RptContKindEnum.WEEK,weekVO.getBeginDate(),weekVO.getEndDate());
+            result.setData("list",list);
+        } catch (Exception e) {
+            logger.error("",e);
+            result.setCode(ResultCode.SYSTEM_ERROR, e.getMessage());
+        }
+        return result;
+    }
+
     /**
      * 周报录入
      */

+ 33 - 6
projects/src/main/java/com/rtrh/projects/outapi/controller/projects/ProjectsApiController.java

@@ -21,10 +21,12 @@ import com.rtrh.projects.modules.system.po.JUnit;
 import com.rtrh.projects.modules.system.po.TSystable;
 import com.rtrh.projects.modules.system.service.JUnitService;
 import com.rtrh.projects.modules.utils.DateUtils;
+import com.rtrh.projects.outapi.vo.StaticsVO;
 import com.rtrh.projects.vo.statics.NewStaticsQueryVO;
 import com.rtrh.projects.vo.subject.SubinfoPreQueryVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -255,8 +257,8 @@ public class ProjectsApiController extends BaseOutApiController {
                 if (statusEnum != null) {
                     map.put("status", statusEnum.getDesc());
                 }
-                String propKindName = tSysTableService.getTitleByKindAndCode(SysTableKind.JSXZ, map.get("propKind").toString());
-                map.put("propKindName", propKindName);
+//                String propKindName = tSysTableService.getTitleByKindAndCode(SysTableKind.JSXZ, map.get("propKind").toString());
+//                map.put("propKindName", propKindName);
                 String indusKindName = tSysTableService.getTitleByKindAndCode(SysTableKind.HYFL, map.get("indusKind") == null ? "0" : map.get("indusKind").toString());
                 map.put("indusKindName", indusKindName);
 
@@ -2068,9 +2070,12 @@ public class ProjectsApiController extends BaseOutApiController {
     public JsonResult gxjAppStaticsManage(@RequestBody QTDTO dto) {
         JsonResult result = new JsonResult();
         try {
+            //这里是PC端使用的存储过程
             List<Map<String, Object>> data = qtService.getDPGxjQtData(dto);
 
-            result.setData(data);
+            //添加数据,这是APP端自己查询的数据
+            StaticsVO statics = subInfoService.statics(dto);
+            result.setData("list",statics);
 
         } catch (Exception e) {
             logger.error("", e);
@@ -2085,7 +2090,18 @@ public class ProjectsApiController extends BaseOutApiController {
         JsonResult result = new JsonResult();
         try {
             List<Map<String, Object>> data = qtService.getDPGxjHyData(dto);
-            result.setData(data);
+            List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>();
+            if(CollectionUtils.isNotEmpty(data)){
+                for(Map<String,Object> m : data){
+                    Map<String,Object> map = new HashMap<>();
+                    map.put("unit_name",m.get("title"));
+                    map.put("unit_id",m.get("id"));
+                    map.put("amt_sj",m.get("amt"));
+                    map.put("num_bl",m.get("zb"));
+                    resultList.add(map);
+                }
+            }
+            result.setData("list",resultList);
 
         } catch (Exception e) {
             logger.error("", e);
@@ -2101,7 +2117,18 @@ public class ProjectsApiController extends BaseOutApiController {
         JsonResult result = new JsonResult();
         try {
             List<Map<String, Object>> data = qtService.getDPGxjAddreData(dto);
-            result.setData(data);
+            List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>();
+            if(CollectionUtils.isNotEmpty(data)){
+                for(Map<String,Object> m : data){
+                    Map<String,Object> map = new HashMap<>();
+                    map.put("jsddName",m.get("title"));
+                    map.put("subjectId",m.get("id"));
+                    map.put("amt",m.get("amt"));
+                    map.put("totalNum",m.get("num"));
+                    resultList.add(map);
+                }
+            }
+            result.setData("list",resultList);
 
         } catch (Exception e) {
             logger.error("", e);
@@ -2117,7 +2144,7 @@ public class ProjectsApiController extends BaseOutApiController {
         JsonResult result = new JsonResult();
         try {
             List<Map<String, Object>> data = qtService.getDPGxjGmData(dto);
-            result.setData(data);
+            result.setData("list",data);
 
         } catch (Exception e) {
             logger.error("", e);