|
|
@@ -32,6 +32,15 @@ import java.util.*;
|
|
|
@Service
|
|
|
public class StatisticServiceImpl implements StatisticService {
|
|
|
private static final Logger logger = LoggerFactory.getLogger(StatisticServiceImpl.class);
|
|
|
+
|
|
|
+ private static final String USE = "合格";
|
|
|
+
|
|
|
+ private static final String STOP = "停用";
|
|
|
+
|
|
|
+ private static final String LIMITED = "限用";
|
|
|
+
|
|
|
+ private static final String SCRAP = "报废";
|
|
|
+
|
|
|
@Resource
|
|
|
private ICommonDao<?> commonDao;
|
|
|
|
|
|
@@ -163,7 +172,7 @@ public class StatisticServiceImpl implements StatisticService {
|
|
|
// 检验科各个类型设备分布情况
|
|
|
equipDTO.setDistributionDataObj(getEquipType(total));
|
|
|
|
|
|
- // 各组设备总数分布情况
|
|
|
+ // 各组设备总数(包含合格、限用、报废)
|
|
|
equipDTO.setNumDistributionDataObj(getEquipByPosition(total));
|
|
|
|
|
|
// 部门设备寿命情况统计
|
|
|
@@ -173,7 +182,8 @@ public class StatisticServiceImpl implements StatisticService {
|
|
|
equipDTO.setEntiretyData(getEquipEntirety(total));
|
|
|
|
|
|
// 各部门设备完好情况
|
|
|
- equipDTO.setIntactData(getEquipSituation());
|
|
|
+ //equipDTO.setIntactData(getEquipSituation());有bug
|
|
|
+ equipDTO.setIntactData(getNewEquipSituation());
|
|
|
|
|
|
// 各部门设备维护完成情况
|
|
|
equipDTO.setCompleteData(getEquipMaintenanceByDept());
|
|
|
@@ -426,6 +436,69 @@ public class StatisticServiceImpl implements StatisticService {
|
|
|
return finalList;
|
|
|
}
|
|
|
|
|
|
+ private List<EquipIntactDTO> getNewEquipSituation() {
|
|
|
+ List<EquipIntactDTO> intactData = new ArrayList<>();
|
|
|
+ String sql ="SELECT \n" +
|
|
|
+ " pe.name_ AS name_,pe.depth_ as depth_, \n" +
|
|
|
+ " COUNT(s.bian_zhi_bu_men_) AS numAll, \n" +
|
|
|
+ " SUM(CASE WHEN s.she_bei_zhuang_ta = '" + USE + "' THEN 1 ELSE 0 END) AS numR, \n" +
|
|
|
+ " SUM(CASE WHEN s.she_bei_zhuang_ta = '"+ STOP + "' THEN 1 ELSE 0 END) AS numS, \n" +
|
|
|
+ " SUM(CASE WHEN s.she_bei_zhuang_ta = '"+ LIMITED +"' THEN 1 ELSE 0 END) AS numLimit, \n" +
|
|
|
+ " SUM(CASE WHEN s.she_bei_zhuang_ta = '"+ SCRAP + "' THEN 1 ELSE 0 END) AS numScrap \n" +
|
|
|
+ "FROM ibps_party_entity pe \n" +
|
|
|
+ "LEFT JOIN t_sbdj s ON pe.id_ = s.bian_zhi_bu_men_ \n" +
|
|
|
+ "WHERE pe.depth_ >= 3 and path_ like '%%%s%%' \n" +
|
|
|
+ "GROUP BY pe.id_, pe.name_ \n" +
|
|
|
+ "ORDER BY pe.name_;";
|
|
|
+ sql = String.format(sql, getDiDian());
|
|
|
+ List<Map<String, Object>> queryResult = (List<Map<String, Object>>) commonDao.query(sql);
|
|
|
+ for (Map<String, Object> map : queryResult) {
|
|
|
+ EquipIntactDTO intactDTO = new EquipIntactDTO();
|
|
|
+ intactDTO.setOrg(map.get("name_").toString());
|
|
|
+ intactDTO.setDepth(Integer.parseInt(map.get("depth_").toString()));
|
|
|
+ if("3".equals(map.get("depth_").toString())){
|
|
|
+ int totalNumAll = queryResult.stream() .mapToInt(row -> {
|
|
|
+ Object numAllObj = row.get("numAll");
|
|
|
+ return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ int totalNumR = queryResult.stream() .mapToInt(row -> {
|
|
|
+ Object numAllObj = row.get("numR");
|
|
|
+ return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ int totalNumS = queryResult.stream() .mapToInt(row -> {
|
|
|
+ Object numAllObj = row.get("numS");
|
|
|
+ return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ int totalNumLimit = queryResult.stream() .mapToInt(row -> {
|
|
|
+ Object numAllObj = row.get("numLimit");
|
|
|
+ return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ int totalNumScrap = queryResult.stream() .mapToInt(row -> {
|
|
|
+ Object numAllObj = row.get("numScrap");
|
|
|
+ return numAllObj != null ? ((Number) numAllObj).intValue() : 0;
|
|
|
+ }).sum();
|
|
|
+
|
|
|
+ intactDTO.setNumScrap(totalNumScrap);
|
|
|
+ intactDTO.setNumS(totalNumS);
|
|
|
+ intactDTO.setNumR(totalNumR);
|
|
|
+ intactDTO.setNumLimit(totalNumLimit);
|
|
|
+ intactDTO.setNumAll(totalNumAll);
|
|
|
+ }else{
|
|
|
+ intactDTO.setNumScrap(Integer.parseInt(map.get("numScrap").toString()));
|
|
|
+ intactDTO.setNumS(Integer.parseInt(map.get("numS").toString()));
|
|
|
+ intactDTO.setNumR(Integer.parseInt(map.get("numR").toString()));
|
|
|
+ intactDTO.setNumLimit(Integer.parseInt(map.get("numLimit").toString()));
|
|
|
+ intactDTO.setNumAll(Integer.parseInt(map.get("numAll").toString()));
|
|
|
+ }
|
|
|
+ intactData.add(intactDTO);
|
|
|
+ }
|
|
|
+ return intactData;
|
|
|
+ }
|
|
|
+
|
|
|
// 辅助工具类,用于通过反射设置字段值
|
|
|
public static void setField(Object target, String fieldName, Object value) {
|
|
|
try {
|
|
|
@@ -594,12 +667,18 @@ public class StatisticServiceImpl implements StatisticService {
|
|
|
String mCondition = " AND DATE_FORMAT(CREATE_TIME_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0')) ";
|
|
|
// 设备总数
|
|
|
EquipTotalityDTO totalityDTO = new EquipTotalityDTO();
|
|
|
+ String countSql = "SELECT COUNT(*) as nums from t_sbdj WHERE she_bei_zhuang_ta='%s' and di_dian_='%s'";
|
|
|
+ //总数
|
|
|
totalityDTO.setSum(total);
|
|
|
- String stopSQL= "SELECT COUNT(*) as nums from t_sbdj WHERE she_bei_zhuang_ta='停用' and di_dian_='%s'";
|
|
|
- stopSQL = String.format(stopSQL,getDiDian());
|
|
|
- int stopNums = Integer.parseInt(commonDao.queryOne(stopSQL).get("nums").toString());
|
|
|
+ //停用数
|
|
|
+ int stopNums = Integer.parseInt(commonDao.queryOne(String.format(countSql,STOP,getDiDian())).get("nums").toString());
|
|
|
totalityDTO.setStop(stopNums);
|
|
|
- totalityDTO.setUse(total-stopNums);
|
|
|
+ //使用数(合格数)
|
|
|
+ int useNums = Integer.parseInt(commonDao.queryOne(String.format(countSql,USE,getDiDian())).get("nums").toString());
|
|
|
+ totalityDTO.setUse(useNums);
|
|
|
+ //报废数
|
|
|
+ int scrapNums = Integer.parseInt(commonDao.queryOne(String.format(countSql,SCRAP,getDiDian())).get("nums").toString());
|
|
|
+ totalityDTO.setScrap(scrapNums);
|
|
|
entiretyDTO.setTotality(totalityDTO);
|
|
|
// // 报废停用
|
|
|
// String wxsq = "SELECT count(*)as nums from t_sbtybfjlb WHERE shi_fou_guo_shen_='已完成' and chu_li_lei_xing_='停用' and di_dian_='%s' %s ";
|
|
|
@@ -611,37 +690,51 @@ public class StatisticServiceImpl implements StatisticService {
|
|
|
|
|
|
// 校准设备数
|
|
|
String finishSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_='已完成' and di_dian_='%s' %s";
|
|
|
- String planSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_!='已完成' and di_dian_='%s' %s";
|
|
|
- String jzSumSql = "SELECT id_ from t_mjsbjdxzjh WHERE di_dian_='%s' %s";
|
|
|
+
|
|
|
+
|
|
|
+ // 校准设备总数
|
|
|
+ String jzSumSql = "SELECT id_ from t_mjsbjdxzjh WHERE di_dian_='%s'";
|
|
|
+ String talSql = String.format(jzSumSql,getDiDian());
|
|
|
String subSql = "SELECT count(id_) as nums from (SELECT id_ from t_mjsbjdxzjhzb WHERE parent_id_ in(%s) " +
|
|
|
" or record_parentid_ in(%s) GROUP BY she_bei_bian_hao_) a";
|
|
|
- String talSql = String.format(jzSumSql,getDiDian(),"");
|
|
|
- // 总数
|
|
|
talSql = String.format(subSql,talSql,talSql);
|
|
|
int jzSums = Integer.parseInt(commonDao.queryOne(talSql).get("nums").toString());
|
|
|
+
|
|
|
+ String planSql = "SELECT id_ from t_mjsbjdxzjh WHERE shi_fou_guo_shen_!='已完成' and di_dian_='%s' %s";
|
|
|
+
|
|
|
// 当月已校准
|
|
|
- String mFinishSql = String.format(finishSql,getDiDian(),mCondition);
|
|
|
- mFinishSql = String.format(subSql,mFinishSql,mFinishSql);
|
|
|
- int mAldyNum = Integer.parseInt(commonDao.queryOne(mFinishSql).get("nums").toString());
|
|
|
+ String mFinishSql = "SELECT count(id_) as nums from t_mjsbjdxzjhzb WHERE shi_fou_guo_shen_='已完成' and di_dian_='%s' ";
|
|
|
+ String whereSql = " AND DATE_FORMAT(shi_shi_ri_qi_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0'))";
|
|
|
+ mFinishSql = String.format(mFinishSql,getDiDian());
|
|
|
+ whereSql = mFinishSql + whereSql;
|
|
|
+ int mAldyNum = Integer.parseInt(commonDao.queryOne(whereSql).get("nums").toString());
|
|
|
+
|
|
|
// 当月计划
|
|
|
- String mPlanSql = String.format(planSql,getDiDian(),mCondition);
|
|
|
- mPlanSql = String.format(subSql,mPlanSql,mPlanSql);
|
|
|
- int mPlanNum = Integer.parseInt(commonDao.queryOne(mPlanSql).get("nums").toString());
|
|
|
+ String mPlanSql = "SELECT count(a.id_) as nums from (SELECT id_ from t_mjsbjdxzjhzb WHERE di_dian_='%s'";
|
|
|
+ mPlanSql = String.format(mPlanSql,getDiDian());
|
|
|
+ String maSql = "AND DATE_FORMAT(ji_hua_ri_qi_,'%Y-%m')=CONCAT(YEAR(CURDATE()),'-',LPAD(MONTH(CURDATE()),2,'0') )) a";
|
|
|
+ maSql = mPlanSql + maSql;
|
|
|
+ int mPlanNum = Integer.parseInt(commonDao.queryOne(maSql).get("nums").toString());
|
|
|
+
|
|
|
// 下月计划
|
|
|
String nextCondition = "AND DATE_FORMAT(CREATE_TIME_,'%Y-%m')=DATE_FORMAT(DATE_ADD(CURRENT_DATE,INTERVAL 1 MONTH),'%Y-%m') ";
|
|
|
String nextPlanSql = String.format(planSql,getDiDian(),nextCondition);
|
|
|
nextPlanSql = String.format(subSql,nextPlanSql,nextPlanSql);
|
|
|
int nextPlanNum = Integer.parseInt(commonDao.queryOne(nextPlanSql).get("nums").toString());
|
|
|
- // 本年计划
|
|
|
- String yPlanSql = String.format(planSql,getDiDian(),yCondition);
|
|
|
- yPlanSql = String.format(subSql,yPlanSql,yPlanSql);
|
|
|
+
|
|
|
+ // 本年计划校准
|
|
|
+ String yPlanSql = "select count(id_) as nums from t_mjsbjdxzjhzb where DATE_FORMAT(ji_hua_ri_qi_,'%Y')=YEAR(CURDATE()) ";
|
|
|
+ String whYSql = " and di_dian_ = '%s'";
|
|
|
+ whYSql = String.format(whYSql,getDiDian());
|
|
|
+ yPlanSql = yPlanSql + whYSql;
|
|
|
int yPlanNum = Integer.parseInt(commonDao.queryOne(yPlanSql).get("nums").toString());
|
|
|
+
|
|
|
EquipCalibrateDTO calibrateDTO = new EquipCalibrateDTO();
|
|
|
calibrateDTO.setSum(jzSums);
|
|
|
calibrateDTO.setMonthAldyNum(mAldyNum);
|
|
|
calibrateDTO.setMonthPlanNum(mPlanNum);
|
|
|
calibrateDTO.setNextMonthPlanNum(nextPlanNum);
|
|
|
- calibrateDTO.setYearPlanNum(yPlanNum);
|
|
|
+ calibrateDTO.setYearPlanNum(yPlanNum); //本年计划校准
|
|
|
entiretyDTO.setCalibrate(calibrateDTO);
|
|
|
|
|
|
// 设备保养数
|
|
|
@@ -773,7 +866,7 @@ public class StatisticServiceImpl implements StatisticService {
|
|
|
|
|
|
public List<EquipDeptDTO> getEquipByPosition(int total){
|
|
|
String sql = "SELECT p.name_,p.id_,p.depth_,COUNT(bian_zhi_bu_men_)as value from \n" +
|
|
|
- "(SELECT name_,id_,depth_ from ibps_party_entity WHERE path_ like '%%%s%%' and DEPTH_>3) p \n" +
|
|
|
+ "(SELECT name_,id_,depth_ from ibps_party_entity WHERE path_ like '%%%s%%' and DEPTH_>2) p \n" +
|
|
|
"left join (SELECT bian_zhi_bu_men_ from t_sbdj WHERE di_dian_='%s') q on q.bian_zhi_bu_men_=p.id_ GROUP BY q.bian_zhi_bu_men_ ";
|
|
|
List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(String.format(sql,getDiDian(),getDiDian()));
|
|
|
List<EquipDeptDTO> typeDTOList = new ArrayList<>();
|