package com.miniframe.bisiness.system; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import com.miniframe.core.ExecProcessFlow; import com.miniframe.core.exception.BusinessException; import com.miniframe.core.ext.UtilTools; import com.miniframe.generate.business.system.model.D10019BaseModel; import com.miniframe.generate.comm.system.D_D10019_ROWS_DATA_RECODE; import com.miniframe.generate.comm.system.D_D10019_ROWS_RECODE; import com.miniframe.generate.comm.system.D_D10019_STEPTIMES_RECODE; import com.miniframe.model.system.*; import com.miniframe.model.system.dao.DAccidentMapper; import com.miniframe.model.system.dao.DChecknodeValMapper; import com.miniframe.model.system.dao.DChecknodeValcodeMapper; import com.miniframe.model.system.dao.DJobMapper; import com.miniframe.tools.XIDateTimeUtils; import tk.mybatis.mapper.util.StringUtil; /** * 基础系统,“监测点结果批量获取”逻辑处理(重新生成不覆盖)。 */ public class D10019Service extends D10019BaseModel implements ExecProcessFlow { private static final long serialVersionUID = -7051358269847459502L; /** * 基础系统,“监测点结果批量获取”业务核心处理 */ public void transExecute() throws Exception { Integer aid= getA_d10019().getAid(); String chname =getA_d10019().getChname(); DAccidentMapper accidentDao = UtilTools.getBean(DAccidentMapper.class); DAccident accident= accidentDao.selectByPrimaryKey(aid); if(accident==null){ throw new BusinessException("EB3000002"); } if(accident.getJid()==null||accident.getJid()==0){ throw new BusinessException("EB3100012"); } DJobMapper jobMapper =UtilTools.getBean(DJobMapper.class); DJob job =jobMapper.selectByPrimaryKey(accident.getJid()); if(job==null){ throw new BusinessException("EB3100012"); } List steptimes = new ArrayList<>(); findStepTime(job, steptimes); List rows =new ArrayList<>(); findRows(aid, chname, accident, job, rows); this.getD_d10019().setSteptimes(steptimes); this.getD_d10019().setRows(rows); } private void findRows(Integer aid, String chname, DAccident accident, DJob job, List rows) throws BusinessException { DChecknodeValcodeMapper valcodeMapper =UtilTools.getBean(DChecknodeValcodeMapper.class); DChecknodeValcodeSQLBuilder codesb =new DChecknodeValcodeSQLBuilder(); DChecknodeValcodeSQLBuilder.Criteria codesc = codesb.createCriteria(); codesc.andAidEqualTo(aid); codesc.andJidEqualTo(accident.getJid()); List valcodes = valcodeMapper.selectByExample(codesb ); if(valcodes.isEmpty()){ throw new BusinessException("EB3100026"); } DChecknodeValcode valcode =valcodes.get(0); DChecknodeValMapper valMapper =UtilTools.getBean(DChecknodeValMapper.class); DChecknodeValSQLBuilder sb =new DChecknodeValSQLBuilder(); DChecknodeValSQLBuilder.Criteria sc = sb.createCriteria(); sc.andAidEqualTo(aid); sc.andJidEqualTo(job.getId()); sc.andChnameEqualTo(chname); sb.setOrderByClause("step ASC"); List vals = valMapper.selectByExample(sb); if(!StringUtil.isEmpty(valcode.getValCode1())&&!"".equals(valcode.getValCode1())){ D_D10019_ROWS_RECODE row =new D_D10019_ROWS_RECODE(); row.setCode(valcode.getValCode1()); List rowdatas =new ArrayList<>(); for (DChecknodeVal val:vals) { D_D10019_ROWS_DATA_RECODE rowdata =new D_D10019_ROWS_DATA_RECODE(); rowdata.setVal(val.getV1()); rowdatas.add(rowdata); } row.setData(rowdatas); rows.add(row); } if(!StringUtil.isEmpty(valcode.getValCode2())&&!"".equals(valcode.getValCode2())){ D_D10019_ROWS_RECODE row =new D_D10019_ROWS_RECODE(); row.setCode(valcode.getValCode2()); List rowdatas =new ArrayList<>(); for (DChecknodeVal val:vals) { D_D10019_ROWS_DATA_RECODE rowdata =new D_D10019_ROWS_DATA_RECODE(); rowdata.setVal(val.getV2()); rowdatas.add(rowdata); } row.setData(rowdatas); rows.add(row); } if(!StringUtil.isEmpty(valcode.getValCode3())&&!"".equals(valcode.getValCode3())){ D_D10019_ROWS_RECODE row =new D_D10019_ROWS_RECODE(); row.setCode(valcode.getValCode3()); List rowdatas =new ArrayList<>(); for (DChecknodeVal val:vals) { D_D10019_ROWS_DATA_RECODE rowdata =new D_D10019_ROWS_DATA_RECODE(); rowdata.setVal(val.getV3()); rowdatas.add(rowdata); } row.setData(rowdatas); rows.add(row); } if(!StringUtil.isEmpty(valcode.getValCode4())&&!"".equals(valcode.getValCode4())){ D_D10019_ROWS_RECODE row =new D_D10019_ROWS_RECODE(); row.setCode(valcode.getValCode4()); List rowdatas =new ArrayList<>(); for (DChecknodeVal val:vals) { D_D10019_ROWS_DATA_RECODE rowdata =new D_D10019_ROWS_DATA_RECODE(); rowdata.setVal(val.getV4()); rowdatas.add(rowdata); } row.setData(rowdatas); rows.add(row); } if(!StringUtil.isEmpty(valcode.getValCode5())&&!"".equals(valcode.getValCode5())){ D_D10019_ROWS_RECODE row =new D_D10019_ROWS_RECODE(); row.setCode(valcode.getValCode5()); List rowdatas =new ArrayList<>(); for (DChecknodeVal val:vals) { D_D10019_ROWS_DATA_RECODE rowdata =new D_D10019_ROWS_DATA_RECODE(); rowdata.setVal(val.getV5()); rowdatas.add(rowdata); } row.setData(rowdatas); rows.add(row); } if(!StringUtil.isEmpty(valcode.getValCode6())&&!"".equals(valcode.getValCode6())){ D_D10019_ROWS_RECODE row =new D_D10019_ROWS_RECODE(); row.setCode(valcode.getValCode6()); List rowdatas =new ArrayList<>(); for (DChecknodeVal val:vals) { D_D10019_ROWS_DATA_RECODE rowdata =new D_D10019_ROWS_DATA_RECODE(); rowdata.setVal(val.getV6()); rowdatas.add(rowdata); } row.setData(rowdatas); rows.add(row); } } private void findStepTime(DJob job, List steptimes) { Integer stepnum = Integer.valueOf(job.getTotaltime())/Integer.valueOf(job.getReportstep()); for (int i = 1; i <= stepnum; i++) { D_D10019_STEPTIMES_RECODE steptime =new D_D10019_STEPTIMES_RECODE(); steptime.setSteptime(getStepTimeByStep(job,i)); steptimes.add(steptime); } } public String getStepTimeByStep(DJob job,Integer step) { Date date=XIDateTimeUtils.getDateFromZonedStr(job.getAcctime()); Calendar calendar =Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.SECOND,step*Integer.valueOf(job.getReportstep())); Date date2=calendar.getTime(); DateTimeFormatter timeFormatter =DateTimeFormatter.ofPattern("HH:mm"); String s =timeFormatter.format(ZonedDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault())); return s; } /** * 基础系统,“监测点结果批量获取”业务前处理 */ public void preTransFlow() throws Exception { this.validater(); } /** * 基础系统,“监测点结果批量获取”业务后处理 */ public void afterTransFlow() throws Exception { } /** * 基础系统,“监测点结果批量获取”逻辑入口处理方法 */ @SuppressWarnings("rawtypes") @Override public Map execute(Map vars) throws Exception { this.setTransMap(vars); preTransFlow();// 执行业务开始的规则检查和校验 transExecute();// 执行核心业务段 afterTransFlow();// 执行核心逻辑完成后的收尾逻辑 return this.getTransMap(); } }