package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.dcproj.dao.BisInspKeychkqhUnitDao; import cn.com.goldenwater.dcproj.dao.BisInspPblmDao; import cn.com.goldenwater.dcproj.model.BisInspKeychkqhRegister; import cn.com.goldenwater.dcproj.model.BisInspKeychkqhSection; import cn.com.goldenwater.dcproj.model.BisInspKeychkqhUnit; import cn.com.goldenwater.dcproj.model.BisInspPblm; import cn.com.goldenwater.dcproj.param.BisInspKeychkqhUnitParam; import cn.com.goldenwater.dcproj.param.BisInspPblmParam; import cn.com.goldenwater.dcproj.service.BisInspKeychkqhRegisterService; import cn.com.goldenwater.dcproj.service.BisInspKeychkqhSectionService; import cn.com.goldenwater.dcproj.service.BisInspKeychkqhUnitService; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.service.BisInspPblmService; import cn.com.goldenwater.dcproj.utils.Builder; import cn.com.goldenwater.dcproj.utils.Constant; import cn.com.goldenwater.target.CheckException; import com.github.pagehelper.PageHelper; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import cn.com.goldenwater.id.util.UuidUtil; import java.util.*; /** * @author lhc * @date 2021-6-25 */ @Service @Transactional public class BisInspKeychkqhUnitServiceImpl extends AbstractCrudService implements BisInspKeychkqhUnitService { @Autowired private BisInspKeychkqhUnitDao bisInspKeychkqhUnitDao; @Autowired private BisInspKeychkqhRegisterService bisInspKeychkqhRegisterService; @Autowired private BisInspKeychkqhSectionService bisInspKeychkqhSectionService; @Autowired private BisInspPblmService bisInspPblmService; @Autowired private BisInspPblmDao bisInspPblmDao; public BisInspKeychkqhUnitServiceImpl(BisInspKeychkqhUnitDao bisInspKeychkqhUnitDao) { super(bisInspKeychkqhUnitDao); this.bisInspKeychkqhUnitDao = bisInspKeychkqhUnitDao; } @Override public int insert(BisInspKeychkqhUnit bisInspKeychkqhUnit) { if (StringUtils.isBlank(bisInspKeychkqhUnit.getSecId())){ throw new CheckException("标段ID为空"); } if(StringUtils.isBlank(bisInspKeychkqhUnit.getNm())){ throw new CheckException("单位名称为空"); } if(StringUtils.isBlank(bisInspKeychkqhUnit.getNature())){ throw new CheckException("单位性质为空"); } BisInspKeychkqhSection section = bisInspKeychkqhSectionService.get(bisInspKeychkqhUnit.getSecId()); if (section == null ){ throw new CheckException("标段ID有误"); } String uuid = UuidUtil.uuid(); // 生成uuid bisInspKeychkqhUnit.setId(uuid); bisInspKeychkqhUnit.setIntm(new Date()); bisInspKeychkqhUnit.setUptm(new Date()); bisInspKeychkqhUnit.setDataStat("0"); int ret = this.bisInspKeychkqhUnitDao.insert(bisInspKeychkqhUnit); updateRgstrState(bisInspKeychkqhUnit.getId()); return ret; } private void updateRgstrState(String id) { BisInspKeychkqhRegister rgstr = bisInspKeychkqhUnitDao.getRgstrById(id); Optional.ofNullable(rgstr).ifPresent(r ->{ if(!Constant.STRING_TWO.equals(r.getState())&& !Constant.STRING_ONE.equals(r.getState())){ r.setUptm(new Date()); r.setState(Constant.STRING_ONE); bisInspKeychkqhRegisterService.update(r); } }); } @Override public int update(BisInspKeychkqhUnit bisInspKeychkqhUnit) { bisInspKeychkqhUnit.setUptm(new Date()); int ret = this.bisInspKeychkqhUnitDao.update(bisInspKeychkqhUnit); updateRgstrState(bisInspKeychkqhUnit.getId()); return ret; } @Override public int delete(String id) { BisInspKeychkqhRegister bisInspKeychkqhRegister = bisInspKeychkqhUnitDao.getRgstrById(id); if(bisInspKeychkqhRegister != null){ bisInspPblmService.deleteBy(Builder.of(BisInspPblmParam::new) .with(BisInspPblmParam::setObjId,bisInspKeychkqhRegister.getOrgId()) .with(BisInspPblmParam::setRegid,id) .build()); } return this.bisInspKeychkqhUnitDao.delete(id); } @Override public List listBySecId(String secId) { return bisInspKeychkqhUnitDao.findList(Builder.of(BisInspKeychkqhUnitParam::new).with(BisInspKeychkqhUnitParam::setSecId,secId).build()); } @Override public List> getResponsibility(String id) { BisInspKeychkqhUnit unit = get(id); BisInspKeychkqhSection section = bisInspKeychkqhSectionService.get(unit.getSecId()); List bisInspPblmList = bisInspPblmDao.list(Builder.of(BisInspPblmParam::new) .with(BisInspPblmParam::setObjId, section.getObjId()) .with(BisInspPblmParam::setRegid, id).build()); List> res = new ArrayList<>(); int index = 0; while (index < 3){ int finalIndex = index; Long yibanCount = bisInspPblmList.stream().filter(p -> String.valueOf(finalIndex).equals(p.getInspPblmCate())).count(); Map map = new HashMap(5); map.put("level", String.valueOf(finalIndex)); map.put("count", yibanCount); zhenggai(map, unit.getNature()); res.add(map); index++; } return res; } private void zhenggai(Map map, String type) { if("1".equals(type)){ xiangmufaren(map); }else{ sjg(map); } } private void sjg(Map map) { String level = MapUtils.getString(map, "level"); int count = MapUtils.getIntValue(map, "count"); if (count == 0) { return; } String max = ""; String chose = ""; Set set = new HashSet<>(); switch (level) { case "0": if (count <= 20) { max = "责令整改"; set.add("8"); } else { max = "约谈"; chose = "责令整改"; set.add("9"); set.add("8"); } break; case "1": if (count <= 6) { max = "责令整改"; set.add("8"); } else if (count <= 12) { max = "约谈"; chose = "责令整改"; set.add("9"); set.add("8"); } else if (count <= 20) { max = "停工整改"; chose = "责令整改、约谈"; set.add("3"); set.add("8"); set.add("9"); } else { max = "通报批评"; chose = "责令整改、停工整改、经济责任"; set.add("10"); set.add("8"); set.add("3"); set.add("4"); } break; case "2": if (count <= 5) { max = "责令整改"; set.add("8"); } else if (count <= 10) { max = "约谈"; chose = "责令整改"; set.add("9"); set.add("8"); } else if (count <= 15) { max = "停工整改"; chose = "责令整改"; set.add("3"); set.add("8"); } else if (count <= 20) { max = "通报批评"; chose = "责令整改、经济责任"; set.add("10"); set.add("8"); set.add("4"); } else { max = "建议解除合同"; chose = "责令整改、经济责任、通报批评、降低资质"; set.add("6"); set.add("8"); set.add("4"); set.add("10"); set.add("7"); } default: } map.put("chose", chose); map.put("max", max); map.put("set", set); } private void xiangmufaren(Map map) { String level = MapUtils.getString(map, "level"); int count = MapUtils.getIntValue(map, "count"); if (count == 0) { return; } String max = ""; String chose = ""; Set set = new HashSet<>(); switch (level) { case "0": if (count <= 15) { max = "责令整改"; set.add("8"); } else { max = "约谈"; chose = "责令整改"; set.add("9"); set.add("8"); } break; case "1": if (count <= 10) { max = "责令整改"; set.add("8"); } else if (count <= 20) { max = "约谈"; chose = "责令整改"; set.add("9"); set.add("8"); } else { max = "通报批评"; chose = "责令整改、约谈"; set.add("10"); set.add("8"); set.add("9"); } break; case "2": if (count <= 7) { max = "责令整改"; set.add("8"); } else if (count <= 15) { max = "约谈"; chose = "责令整改"; set.add("9"); set.add("8"); } else { max = "通报批评"; chose = "责令整改、约谈"; set.add("10"); set.add("8"); set.add("9"); } default: } map.put("chose", chose); map.put("max", max); map.put("set", set); } }