package weaver.haikang.cronjob; import cn.hutool.core.date.DateUtil; import com.weaver.file.Prop; import weaver.conn.RecordSet; import weaver.formmode.setup.ModeRightInfo; import weaver.general.Util; import weaver.integration.logging.Logger; import weaver.integration.logging.LoggerFactory; import java.util.Date; import java.util.HashMap; import java.util.Map; public class LeaveSummaryService { private final Logger log = LoggerFactory.getLogger(LeaveSummaryService.class); //销假申请表单 private static final String xjshtablename = Prop.getPropValue("leave_summary_cron","xjshtablename"); //销假申请表单明细 private static final String xjshtablenamemx = Prop.getPropValue("leave_summary_cron","xjshtablenamemx"); private static final String nianjia = Prop.getPropValue("leave_summary_cron","nianjia"); private static final String tiaoxiu = Prop.getPropValue("leave_summary_cron","tiaoxiu"); private static final String shijia = Prop.getPropValue("leave_summary_cron","shijia"); private static final String bingjia = Prop.getPropValue("leave_summary_cron","bingjia"); private static final String chanjia = Prop.getPropValue("leave_summary_cron","chanjia"); private static final String peichanjia = Prop.getPropValue("leave_summary_cron","peichanjia"); private static final String hunjia = Prop.getPropValue("leave_summary_cron","hunjia"); private static final String sangjia = Prop.getPropValue("leave_summary_cron","sangjia"); private static final String burujia = Prop.getPropValue("leave_summary_cron","burujia"); private static final String qjhztablename = Prop.getPropValue("leave_summary_cron","qjhztablename"); private static final String jmid = Prop.getPropValue("leave_summary_cron","jmid"); public synchronized void execute() { log.error("定时任务:更新请假汇总begin"); RecordSet recordSeta = new RecordSet(); RecordSet recordSetb = new RecordSet(); RecordSet recordSetc = new RecordSet(); RecordSet recordSetd = new RecordSet(); RecordSet recordSete = new RecordSet(); //年份人员组合 String sql = "SELECT LEFT (a.fromdate, 4 ) AS YEAR, a.RESOURCEID, b.lastname, b.workcode FROM kq_flow_split_leave a inner join hrmresource b on a.resourceid = b.id GROUP BY YEAR, a.RESOURCEID"; log.error("定时任务-sql1:"+sql); recordSeta.executeQuery(sql); while (recordSeta.next()) { //每一条代表一个记录 log.error(">>>>>>>>>>>>>>>>3>>>>>>>>>>>>>>>>>>>>>"); String year = recordSeta.getString("YEAR"); String RESOURCEID = recordSeta.getString("RESOURCEID"); String lastname = recordSeta.getString("lastname"); String workcode = recordSeta.getString("workcode"); Map hoursrs = getHours(year,RESOURCEID,recordSete); String sql3 = "select count(id) as sums from "+qjhztablename+" where xm = "+RESOURCEID+" and nf = '"+year+"'"; log.error(">>>>>>>>>>>>>>>>4>>>>>>>>>>>>>>>>>>>>>sql6:"+sql3); recordSetb.executeQuery(sql3); if(recordSetb.next()) { log.error(">>>>>>>>>>>>>>>>>>>>>>>>>xxxxxx>>>>>>>>>>>>>>>>>>>>>>>>>"); int sums = recordSetb.getInt("sums"); String sql4 = ""; if(sums>0) {//更新 sql4 = "update "+qjhztablename+" set nj = ?,dx = ?,sqj = ?,bj = ?,cj = ?,pcj = ?,hj = ?,sj = ?,brj = ? where xm = "+RESOURCEID + " and nf = '"+year+"'"; log.error("定时任务-sql3:"+sql4); recordSetc.executeUpdate(sql4,hoursrs.get(nianjia),hoursrs.get(tiaoxiu),hoursrs.get(shijia),hoursrs.get(bingjia),hoursrs.get(chanjia),hoursrs.get(peichanjia),hoursrs.get(hunjia),hoursrs.get(sangjia),hoursrs.get(burujia)); }else {//新增 sql4 = "INSERT INTO "+qjhztablename+"(gh,xm,nf,nj,dx,sqj,bj,cj,pcj,hj,sj,brj,formmodeid,modedatacreater,modedatacreatertype,modedatacreatedate,modedatacreatetime) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; log.error("定时任务-sql4:"+sql4); recordSetc.executeUpdate(sql4,workcode,RESOURCEID,year,hoursrs.get(nianjia),hoursrs.get(tiaoxiu),hoursrs.get(shijia),hoursrs.get(bingjia),hoursrs.get(chanjia),hoursrs.get(peichanjia), hoursrs.get(hunjia),hoursrs.get(sangjia),hoursrs.get(burujia), jmid,"1","0", DateUtil.today(),DateUtil.formatTime(new Date()) ); String idSql = "SELECT max(id) as mid from "+qjhztablename+" order by id desc"; log.error("定时任务-sql5:"+idSql); recordSetd.executeQuery(idSql); String id = recordSetd.getString("mid"); // 权限重构 permissionReconstruction(Util.getIntValue(id)); } } } } //根据年份,人员id,请假类型获取时间 private Map getHours(String year,String resourceid,RecordSet recordSete) { log.error(">>>>>>>>>>>>>>>>2>>>>>>>>>>>>>>>>>>>>>"); String key = year+resourceid; Map rs = new HashMap<>(); //初始化 rs.put(nianjia,"0"); rs.put(tiaoxiu,"0"); rs.put(shijia,"0"); rs.put(bingjia,"0"); rs.put(chanjia,"0"); rs.put(peichanjia,"0"); rs.put(hunjia,"0"); rs.put(sangjia,"0"); rs.put(burujia,"0"); String insql = nianjia+","+tiaoxiu+","+","+shijia+","+","+bingjia+","+","+chanjia+","+","+peichanjia+","+","+hunjia+","+","+sangjia+","+burujia; String sql = "SELECT c11.year, c11.RESOURCEID, c11.newleavetype, hours - IFNULL( hoursf, 0 ) AS hours FROM " + "( SELECT * FROM ( SELECT LEFT ( fromdate, 4 ) AS YEAR, RESOURCEID, newleavetype, SUM( durationdb ) AS hours, " + "concat( LEFT ( fromdate, 4 ), \"-\", newleavetype, \"-\", RESOURCEID ) AS cid FROM kq_flow_split_leave GROUP BY YEAR, " + "RESOURCEID, newleavetype ) a11 LEFT JOIN ( SELECT a.detail_newLeaveType, LEFT ( a.detail_leavefromDate, 4 ) AS YEAR1, " + "b.RESOURCEID AS RESOURCEID1, SUM( a.detail_duration ) AS hoursf, " + "concat( LEFT ( a.detail_leavefromDate, 4 ), \"-\", a.detail_newLeaveType, \"-\", b.RESOURCEID ) AS cidf " + "FROM "+xjshtablenamemx+" a INNER JOIN "+xjshtablename+" b ON a.mainid = b.id WHERE b.spzt = '1' GROUP BY " + "YEAR1, RESOURCEID1, detail_newLeaveType ) b11 ON a11.cid = b11.cidf WHERE 1 = 1 and a11.year = '"+year+"' and a11.resourceid = '"+resourceid+"' ) c11 "; log.error("定时任务-sql2:"+sql); recordSete.executeQuery(sql); while (recordSete.next()) { String type = recordSete.getString("newleavetype"); Double hours = recordSete.getDouble("hours"); String hours1 = Double.toString(hours); rs.put(type,hours1); } return rs; } /** * 权限重构 * @param billId */ private void permissionReconstruction(int billId) { ModeRightInfo ModeRightInfo = new ModeRightInfo(); ModeRightInfo.setNewRight(true); ModeRightInfo.editModeDataShare(1, Util.getIntValue(jmid),billId); } }