package cn.com.lzt.distributionstats.service.impl; import org.jeecgframework.core.common.service.impl.CommonServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; import java.io.Serializable; import java.math.BigDecimal; import org.jeecgframework.core.util.ApplicationContextUtil; import org.jeecgframework.core.util.JeecgDataAutorUtils; import org.jeecgframework.core.util.LogUtil; import org.jeecgframework.core.util.MyClassLoader; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.minidao.pojo.MiniDaoPage; import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter; import cn.com.lzt.attendance.entity.UserAttendanceEntity; import cn.com.lzt.common.util.DataUtil; import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI; import cn.com.lzt.distributionstats.dao.DistributionStatsMinidaoDao; import cn.com.lzt.distributionstats.dto.ProjDistributionStatsDto; import cn.com.lzt.distributionstats.entity.ComDistributionStatsEntity; import cn.com.lzt.distributionstats.entity.ProjDistributionStatsEntity; import cn.com.lzt.distributionstats.service.DistributionStatsServiceI; import cn.com.lzt.overtimestats.service.OvertimeStatsServiceI; @Service("distributionStatsService") @Transactional public class DistributionStatsServiceImpl extends CommonServiceImpl implements DistributionStatsServiceI { @Autowired private DistributionStatsMinidaoDao distributionStatsMinidaoDao; @Autowired private UserDepartOrgDealServiceI userDepartOrgDealServiceI; @Override public void distributionStatsTaskData() { distributionStatsTaskData(null); } @Override public void distributionStatsTaskData(String attmonth) { LogUtil.info("===============岗位人力定时任务开始================="); //String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString(); //查询公司岗位人数 MiniDaoPage comDislist = new MiniDaoPage(); Map params = new HashMap(); String beforeMonth = DataUtil.getBeforeMonth(); if(StringUtil.isNotEmpty(attmonth)){ beforeMonth = attmonth; } params = DataUtil.getMonthInfo(beforeMonth); params.put("yearmonth", beforeMonth); comDislist = distributionStatsMinidaoDao.ComDistributionStatsData(params,null); List comdisList = findByProperty(ComDistributionStatsEntity.class, "yearmonth", beforeMonth); try { deleteAllEntitie(comdisList); super.batchSave(comDislist.getResults()); LogUtil.info("===============公司岗位人力统计表保存成功================="); } catch (Exception e) { LogUtil.info("===============公司岗位人力统计表保存失败================="); } //查询项目岗位人数 MiniDaoPage projDislist = new MiniDaoPage(); projDislist = distributionStatsMinidaoDao.ProjDistributionStatsData(params,null); List projdisList = findByProperty(ProjDistributionStatsEntity.class, "yearmonth",beforeMonth); List dtoList = new ArrayList(); try { deleteAllEntitie(projdisList); List listEntity = new ArrayList(); for(ProjDistributionStatsDto dto : projDislist.getResults()){ if(StringUtil.isEmpty(dto.getPjtId())){ String pid = userDepartOrgDealServiceI.getProjectDepartParentId(dto.getDeptId()); if(StringUtil.isNotEmpty(pid)){ dto.setPjtId(pid); dtoList.add(dto); } }else{ dtoList.add(dto); } } Map mapnum = new HashMap(); Map mapnumtotal = new HashMap(); for(ProjDistributionStatsDto dto : dtoList ){ String key = dto.getPjtId() + "_" + dto.getPostid(); if(mapnum.get(key) == null){ mapnum.put(key, dto.getPeopleNum()); }else{ mapnum.put(key, mapnum.get(key) + dto.getPeopleNum()); } if(mapnumtotal.get(dto.getPjtId()) == null){ mapnumtotal.put(dto.getPjtId(), dto.getPeopleNum()); }else{ mapnumtotal.put(dto.getPjtId(), mapnumtotal.get(dto.getPjtId()) + dto.getPeopleNum()); } } Set keys = mapnum.keySet(); for(String key : keys){ ProjDistributionStatsEntity entity = new ProjDistributionStatsEntity(); String[] keyArray = key.split("_"); entity.setPjtId(keyArray[0]); entity.setPostid(keyArray[1]); entity.setPeopleNum(mapnum.get(key)); float a = (float)mapnum.get(key)/mapnumtotal.get(keyArray[0]) * 100; BigDecimal bd = new BigDecimal(a); entity.setProportion(new BigDecimal(DataUtil.getFormatDecimailTwo(bd))); entity.setYearmonth(beforeMonth); listEntity.add(entity); } super.batchSave(listEntity); LogUtil.info("===============项目岗位人力统计表保存成功================="); } catch (Exception e) { LogUtil.info("===============项目岗位人力统计表保存失败================="); } LogUtil.info("===============岗位人力定时任务开始================="); } }