package cn.com.goldenwater.dcproj.service.impl.fjpjlgl; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.constValue.BisInspEnum; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.AttFjpjlglBaseDao; import cn.com.goldenwater.dcproj.dao.BisInspAllObjDao; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglAmDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglCimtDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglEmDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglImgrDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglSafdlDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglSystemDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglTrgtDao; import cn.com.goldenwater.dcproj.dao.BisInspFjpjlglTvetDao; import cn.com.goldenwater.dcproj.dao.RoleDao; import cn.com.goldenwater.dcproj.dto.BisInspFjpjlglDto; import cn.com.goldenwater.dcproj.model.AttAdBase; import cn.com.goldenwater.dcproj.model.AttFjpjlglBase; import cn.com.goldenwater.dcproj.model.BisInspAllObj; import cn.com.goldenwater.dcproj.model.BisInspAllRlation; import cn.com.goldenwater.dcproj.model.BisInspFjpjlgl; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglAm; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglCimt; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglEm; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglImgr; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglSafdl; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglSystem; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglTrgt; import cn.com.goldenwater.dcproj.model.BisInspFjpjlglTvet; import cn.com.goldenwater.dcproj.model.Role; import cn.com.goldenwater.dcproj.param.BisInspAllObjParam; import cn.com.goldenwater.dcproj.param.BisInspAllRlationParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglAmParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglCimtParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglEmParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglImgrParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglSafdlParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglSystemParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglTrgtParam; import cn.com.goldenwater.dcproj.param.BisInspFjpjlglTvetParam; import cn.com.goldenwater.dcproj.param.RoleParam; import cn.com.goldenwater.dcproj.param.TypeParam; import cn.com.goldenwater.dcproj.service.AttAdBaseService; import cn.com.goldenwater.dcproj.service.BisInspFjpjlglService; import cn.com.goldenwater.dcproj.service.BisInspObjStrategy; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.id.util.UuidUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Optional; /** * @author lhc * @date 2023-11-7 */ @Service @Transactional public class BisInspFjpjlglServiceImpl extends AbstractCrudService implements BisInspFjpjlglService, BisInspObjStrategy { @Autowired private BisInspFjpjlglDao bisInspFjpjlglDao; @Autowired private AttFjpjlglBaseDao attFjpjlglBaseDao; @Autowired private BisInspAllObjDao bisInspAllObjDao; @Autowired private BisInspFjpjlglTrgtDao bisInspFjpjlglTrgtDao; @Autowired private BisInspFjpjlglSystemDao bisInspFjpjlglSystemDao; @Autowired private BisInspFjpjlglTvetDao bisInspFjpjlglTvetDao; @Autowired private BisInspFjpjlglImgrDao bisInspFjpjlglImgrDao; @Autowired private BisInspFjpjlglSafdlDao bisInspFjpjlglSafdlDao; @Autowired private BisInspFjpjlglEmDao bisInspFjpjlglEmDao; @Autowired private BisInspFjpjlglAmDao bisInspFjpjlglAmDao; @Autowired private BisInspFjpjlglCimtDao bisInspFjpjlglCimtDao; @Autowired private AttAdBaseService attAdBaseService; public BisInspFjpjlglServiceImpl(BisInspFjpjlglDao bisInspFjpjlglDao) { super(bisInspFjpjlglDao); this.bisInspFjpjlglDao = bisInspFjpjlglDao; } @Override public int insert(BisInspFjpjlgl bisInspFjpjlgl) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspFjpjlgl.setId(uuid); bisInspFjpjlgl.setIntm(new Date()); bisInspFjpjlgl.setUptm(new Date()); bisInspFjpjlgl.setDataStat("0"); if(null == bisInspFjpjlgl.getIsCnfm() ){ bisInspFjpjlgl.setIsCnfm("1"); } int ret = this.bisInspFjpjlglDao.insert(bisInspFjpjlgl); //8个子表 BisInspFjpjlglTrgt param1 = new BisInspFjpjlglTrgt(); param1.setId(UuidUtil.uuid()); param1.setRgstrId(uuid); param1.setPersId(bisInspFjpjlgl.getPersId()); param1.setIntm(new Date()); param1.setUptm(new Date()); param1.setDataStat("0"); bisInspFjpjlglTrgtDao.insert(param1); BisInspFjpjlglSystem param2 = new BisInspFjpjlglSystem(); param2.setId(UuidUtil.uuid()); param2.setRgstrId(uuid); param2.setPersId(bisInspFjpjlgl.getPersId()); param2.setIntm(new Date()); param2.setUptm(new Date()); param2.setDataStat("0"); bisInspFjpjlglSystemDao.insert(param2); BisInspFjpjlglTvet param3 = new BisInspFjpjlglTvet(); param3.setId(UuidUtil.uuid()); param3.setRgstrId(uuid); param3.setPersId(bisInspFjpjlgl.getPersId()); param3.setIntm(new Date()); param3.setUptm(new Date()); param3.setDataStat("0"); bisInspFjpjlglTvetDao.insert(param3); BisInspFjpjlglImgr param4 = new BisInspFjpjlglImgr(); param4.setId(UuidUtil.uuid()); param4.setRgstrId(uuid); param4.setPersId(bisInspFjpjlgl.getPersId()); param4.setIntm(new Date()); param4.setUptm(new Date()); param4.setDataStat("0"); bisInspFjpjlglImgrDao.insert(param4); BisInspFjpjlglSafdl param5 = new BisInspFjpjlglSafdl(); param5.setId(UuidUtil.uuid()); param5.setRgstrId(uuid); param5.setPersId(bisInspFjpjlgl.getPersId()); param5.setIntm(new Date()); param5.setUptm(new Date()); param5.setDataStat("0"); bisInspFjpjlglSafdlDao.insert(param5); BisInspFjpjlglEm param6 = new BisInspFjpjlglEm(); param6.setId(UuidUtil.uuid()); param6.setRgstrId(uuid); param6.setPersId(bisInspFjpjlgl.getPersId()); param6.setIntm(new Date()); param6.setUptm(new Date()); param6.setDataStat("0"); bisInspFjpjlglEmDao.insert(param6); BisInspFjpjlglAm param7 = new BisInspFjpjlglAm(); param7.setId(UuidUtil.uuid()); param7.setRgstrId(uuid); param7.setPersId(bisInspFjpjlgl.getPersId()); param7.setIntm(new Date()); param7.setUptm(new Date()); param7.setDataStat("0"); bisInspFjpjlglAmDao.insert(param7); BisInspFjpjlglCimt param8 = new BisInspFjpjlglCimt(); param8.setId(UuidUtil.uuid()); param8.setRgstrId(uuid); param8.setPersId(bisInspFjpjlgl.getPersId()); param8.setIntm(new Date()); param8.setUptm(new Date()); param8.setDataStat("0"); bisInspFjpjlglCimtDao.insert(param8); return ret; } @Override public int update(BisInspFjpjlgl bisInspFjpjlgl) { if(org.apache.commons.lang.StringUtils.isNotBlank(bisInspFjpjlgl.getObjId())){ updateBase(bisInspFjpjlgl); } bisInspFjpjlgl.setUptm(new Date()); return this.bisInspFjpjlglDao.update(bisInspFjpjlgl); } /** * 更新基础表 */ void updateBase(BisInspFjpjlgl bisInspFjpjlgl) { AttFjpjlglBase base = attFjpjlglBaseDao.getObjId(bisInspFjpjlgl.getObjId()); Optional.ofNullable(base).ifPresent(b -> { String id = b.getId(); BeanUtils.copyProperties(bisInspFjpjlgl, b); b.setId(id); b.setIntm(null); attFjpjlglBaseDao.update(b); }); } @Override public BisInspFjpjlgl get(String key) { BisInspFjpjlgl qymten = super.get(key); Optional.ofNullable(qymten).map(BisInspFjpjlgl::getAdCode).ifPresent(adCode -> { AttAdBase attAdBase = attAdBaseService.get(adCode); Optional.ofNullable(attAdBase).ifPresent(base -> { qymten.setAdName(base.getAdFullName()); }); }); return qymten; } @Override public int delete(String id) { return this.bisInspFjpjlglDao.delete(id); } @Override public void insertObj(BisInspAllObj bisInspAllObj, String persId) { AttFjpjlglBase attFjpjlglBase = attFjpjlglBaseDao.get(bisInspAllObj.getCode()); BisInspFjpjlgl fjpjlglRgstr = new BisInspFjpjlgl(); fjpjlglRgstr.setObjId(bisInspAllObj.getObjId()); fjpjlglRgstr.setName(attFjpjlglBase.getName()); fjpjlglRgstr.setAdCode(attFjpjlglBase.getAdCode()); fjpjlglRgstr.setAdName(attFjpjlglBase.getAdName()); fjpjlglRgstr.setBusAddr(attFjpjlglBase.getBusAddr()); fjpjlglRgstr.setConPers(attFjpjlglBase.getConPers()); fjpjlglRgstr.setConPersTel(attFjpjlglBase.getConPersTel()); fjpjlglRgstr.setCenterX(attFjpjlglBase.getCenterX()); fjpjlglRgstr.setCenterY(attFjpjlglBase.getCenterY()); fjpjlglRgstr.setGdX(attFjpjlglBase.getGdX()); fjpjlglRgstr.setGdY(attFjpjlglBase.getGdY()); fjpjlglRgstr.setGroupId(bisInspAllObj.getId()); fjpjlglRgstr.setProvince(bisInspAllObj.getProvince()); fjpjlglRgstr.setPersId(persId); fjpjlglRgstr.setState("0"); fjpjlglRgstr.setIsCnfm(attFjpjlglBase.getIsCnfm()); if(null == fjpjlglRgstr.getIsCnfm() ){ fjpjlglRgstr.setIsCnfm("1"); } insert(fjpjlglRgstr); } @Override public String getType() { return BisInspEnum.FJPJLGL.getValue(); } @Override public void cleanObjData(String objId) { BisInspFjpjlglParam param = new BisInspFjpjlglParam(); param.setObjId(objId); List list = bisInspFjpjlglDao.findList(param); if (CollectionUtils.isNotEmpty(list)) { String rgstrId = list.get(0).getId(); //删除名录表 BisInspAllObjParam bisInspAllObjParam = new BisInspAllObjParam(); bisInspAllObjParam.setObjId(objId); this.bisInspAllObjDao.deleteBy(bisInspAllObjParam); //登记表 bisInspFjpjlglDao.delete(rgstrId); //8个子表 BisInspFjpjlglTrgtParam param1 = new BisInspFjpjlglTrgtParam(); param1.setRgstrId(rgstrId); bisInspFjpjlglTrgtDao.deleteBy(param1); BisInspFjpjlglSystemParam param2 = new BisInspFjpjlglSystemParam(); param2.setRgstrId(rgstrId); bisInspFjpjlglSystemDao.deleteBy(param2); BisInspFjpjlglTvetParam param3 = new BisInspFjpjlglTvetParam(); param3.setRgstrId(rgstrId); bisInspFjpjlglTvetDao.deleteBy(param3); BisInspFjpjlglImgrParam param4 = new BisInspFjpjlglImgrParam(); param4.setRgstrId(rgstrId); bisInspFjpjlglImgrDao.deleteBy(param4); BisInspFjpjlglSafdlParam param5 = new BisInspFjpjlglSafdlParam(); param5.setRgstrId(rgstrId); bisInspFjpjlglSafdlDao.deleteBy(param5); BisInspFjpjlglEmParam param6 = new BisInspFjpjlglEmParam(); param6.setRgstrId(rgstrId); bisInspFjpjlglEmDao.deleteBy(param6); BisInspFjpjlglAmParam param7 = new BisInspFjpjlglAmParam(); param7.setRgstrId(rgstrId); bisInspFjpjlglAmDao.deleteBy(param7); BisInspFjpjlglCimtParam param8 = new BisInspFjpjlglCimtParam(); param8.setRgstrId(rgstrId); bisInspFjpjlglCimtDao.deleteBy(param8); } } @Override public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) { return this.findQaPage(typeParam); } @Override public Object findObjListByType(TypeParam typeParam) { List list = bisInspFjpjlglDao.findFjpjlglPage(typeParam); if (list.size() > 0) { for (BisInspFjpjlglDto qaDto : list) { String adFullName = qaDto.getAdFullName(); if (StringUtils.isBlank(adFullName)) { continue; } if (adFullName.contains(SplitValue.HENG_SPLIT)) { String[] split = adFullName.split(SplitValue.HENG_SPLIT); if (split.length == 2) { qaDto.setProvince(split[0]); qaDto.setCity(split[1]); } if (split.length == 1) { qaDto.setProvince(split[0]); qaDto.setCity(""); } } else { qaDto.setProvince(adFullName); } } } return list; } @Override public PageInfo findQaPage(TypeParam param) { if (StringUtils.isNotBlank(param.getAdCode())) { param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get(SplitValue.SUBAD))); } if (StringUtils.isNotBlank(param.getAdCodes())) { param.setAdCodes(AdLevelUtil.getListAddvcd(param.getAdCodes())); } PageHelper.startPage(param); List list = bisInspFjpjlglDao.findFjpjlglPage(param); return new PageInfo<>(list); } @Override public List findPageOfficeList(TypeParam param) { if (StringUtils.isNotBlank(param.getAdCode())) { param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get(SplitValue.SUBAD))); } if (StringUtils.isNotBlank(param.getAdCodes())) { param.setAdCodes(AdLevelUtil.getListAddvcd(param.getAdCodes())); } List list = bisInspFjpjlglDao.findPageOfficeList(param); return list; } @Override public void updateState(Map map) { } @Autowired private BisInspAllRlationDao inspAllRlationDao; @Autowired private RoleDao roleDao; @Override public String getTabPri(TypeParam param) { String curPersId = param.getPresId(); // 判断角色 RoleParam roleParam = new RoleParam(); roleParam.setUserId(curPersId); roleParam.setOrgId(param.getOrgId()); List roleList = roleDao.getTabPriByUserId(roleParam); boolean flag1 = false; boolean flag2 = false; boolean flag3 = false; if (null != roleList) { for (Role role : roleList) { if (role.getRoleName().contains("现场专家")) { flag1 = true; } if (role.getRoleName().contains("非现场专家")) { flag2 = true; } if (role.getRoleName().contains("管理员") || role.getRoleName().contains("组长")) { flag3 = true; } } } if (flag3 || (flag1 && flag2)) { // 管理员 或 同时具有 党建 工地专家权限 return "1"; } // 判断对象所在组的 人员 身份类型 BisInspAllRlationParam allRlationParam = new BisInspAllRlationParam(); allRlationParam.setpType(param.getpType()); allRlationParam.setOrgId(param.getOrgId()); allRlationParam.setPersid(curPersId); List allRlationList = inspAllRlationDao.getPerTypeByUserIdandObjId(allRlationParam); if (null != allRlationList) { for (BisInspAllRlation allRlation : allRlationList) { if ("1".equals(allRlation.getPertype())) { // 当前用户 在对象所在组里 身份类型 是 组长 flag3 = true; } } } if (flag3) { // 组长\管理员 return "1"; } if (flag1) { // 现场专家 return "2"; } if (flag2) { // 非现场专家 return "3"; } // 其他:不是管理员、 不具有党建、工地角色 return "4"; } }