6aa283b19427a7e169eacb9ecfce740286d60d70.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. package cn.com.goldenwater.dcproj.service.impl.fjsdu;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.constValue.BisInspEnum;
  4. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  5. import cn.com.goldenwater.dcproj.dao.AttAdBaseDao;
  6. import cn.com.goldenwater.dcproj.dao.AttFjsduBaseDao;
  7. import cn.com.goldenwater.dcproj.dao.BisInspAllObjDao;
  8. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationDao;
  9. import cn.com.goldenwater.dcproj.dao.BisInspFjsduDao;
  10. import cn.com.goldenwater.dcproj.dao.BisInspFjsduImgrDao;
  11. import cn.com.goldenwater.dcproj.dao.BisInspFjsduSafdlDao;
  12. import cn.com.goldenwater.dcproj.dao.RoleDao;
  13. import cn.com.goldenwater.dcproj.dto.BisInspFjsduDto;
  14. import cn.com.goldenwater.dcproj.model.AttAdBase;
  15. import cn.com.goldenwater.dcproj.model.AttFjsduBase;
  16. import cn.com.goldenwater.dcproj.model.BisInspAllObj;
  17. import cn.com.goldenwater.dcproj.model.BisInspAllRlation;
  18. import cn.com.goldenwater.dcproj.model.BisInspFjsdu;
  19. import cn.com.goldenwater.dcproj.model.BisInspFjsduImgr;
  20. import cn.com.goldenwater.dcproj.model.BisInspFjsduSafdl;
  21. import cn.com.goldenwater.dcproj.model.Role;
  22. import cn.com.goldenwater.dcproj.param.BisInspAllObjParam;
  23. import cn.com.goldenwater.dcproj.param.BisInspAllRlationParam;
  24. import cn.com.goldenwater.dcproj.param.BisInspFjsduImgrParam;
  25. import cn.com.goldenwater.dcproj.param.BisInspFjsduParam;
  26. import cn.com.goldenwater.dcproj.param.BisInspFjsduSafdlParam;
  27. import cn.com.goldenwater.dcproj.param.RoleParam;
  28. import cn.com.goldenwater.dcproj.param.TypeParam;
  29. import cn.com.goldenwater.dcproj.service.BisInspFjsduService;
  30. import cn.com.goldenwater.dcproj.service.BisInspObjStrategy;
  31. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  32. import cn.com.goldenwater.dcproj.utils.StringUtils;
  33. import cn.com.goldenwater.id.util.UuidUtil;
  34. import com.github.pagehelper.PageHelper;
  35. import com.github.pagehelper.PageInfo;
  36. import org.apache.commons.collections.CollectionUtils;
  37. import org.springframework.beans.BeanUtils;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.stereotype.Service;
  40. import org.springframework.transaction.annotation.Transactional;
  41. import javax.servlet.http.HttpServletResponse;
  42. import java.util.Date;
  43. import java.util.List;
  44. import java.util.Map;
  45. import java.util.Optional;
  46. /**
  47. * @author lhc
  48. * @date 2023年12月18日
  49. */
  50. @Service
  51. @Transactional
  52. public class BisInspFjsduServiceImpl extends AbstractCrudService<BisInspFjsdu, BisInspFjsduParam> implements BisInspFjsduService, BisInspObjStrategy {
  53. @Autowired
  54. private BisInspFjsduDao bisInspFjsduDao;
  55. @Autowired
  56. private AttFjsduBaseDao attFjsduBaseDao;
  57. @Autowired
  58. private BisInspFjsduImgrDao bisInspFjsduImgrDao;
  59. @Autowired
  60. private BisInspFjsduSafdlDao bisInspFjsduSafdlDao;
  61. @Autowired
  62. private AttAdBaseDao attAdBaseDao;
  63. @Autowired
  64. private BisInspAllObjDao bisInspAllObjDao;
  65. public BisInspFjsduServiceImpl(BisInspFjsduDao bisInspFjsduDao) {
  66. super(bisInspFjsduDao);
  67. this.bisInspFjsduDao = bisInspFjsduDao;
  68. }
  69. @Override
  70. public int insert(BisInspFjsdu bisInspFjsdu) {
  71. // 生成uuid
  72. String uuid = UuidUtil.uuid();
  73. bisInspFjsdu.setId(uuid);
  74. bisInspFjsdu.setIntm(new Date());
  75. bisInspFjsdu.setUptm(new Date());
  76. bisInspFjsdu.setDataStat("0");
  77. if(null == bisInspFjsdu.getIsCnfm() ){
  78. bisInspFjsdu.setIsCnfm("1");
  79. }
  80. // 登记表
  81. int rows = this.bisInspFjsduDao.insert(bisInspFjsdu);
  82. // 8个子表
  83. // 现场管理 450 分
  84. BisInspFjsduImgr param4 = new BisInspFjsduImgr();
  85. param4.setId(UuidUtil.uuid());
  86. param4.setRgstrId(uuid);
  87. param4.setPersId(bisInspFjsdu.getPersId());
  88. param4.setIntm(new Date());
  89. param4.setUptm(new Date());
  90. param4.setDataStat("0");
  91. bisInspFjsduImgrDao.insert(param4);
  92. // 安全风险分级管控及隐患排查治理 170分
  93. BisInspFjsduSafdl param5 = new BisInspFjsduSafdl();
  94. param5.setId(UuidUtil.uuid());
  95. param5.setRgstrId(uuid);
  96. param5.setPersId(bisInspFjsdu.getPersId());
  97. param5.setIntm(new Date());
  98. param5.setUptm(new Date());
  99. param5.setDataStat("0");
  100. bisInspFjsduSafdlDao.insert(param5);
  101. return rows ;
  102. }
  103. @Override
  104. public int update(BisInspFjsdu bisInspFjsdu) {
  105. if(StringUtils.isNotBlank(bisInspFjsdu.getObjId())){
  106. updateBase(bisInspFjsdu);
  107. }
  108. bisInspFjsdu.setUptm(new Date());
  109. return this.bisInspFjsduDao.update(bisInspFjsdu);
  110. }
  111. /**
  112. * 更新基础表
  113. */
  114. void updateBase(BisInspFjsdu bisInspFjsdu) {
  115. AttFjsduBase base = attFjsduBaseDao.getObjId(bisInspFjsdu.getObjId());
  116. Optional.ofNullable(base).ifPresent(b -> {
  117. String id = b.getId();
  118. BeanUtils.copyProperties(bisInspFjsdu, b);
  119. b.setId(id);
  120. b.setIntm(null);
  121. attFjsduBaseDao.update(b);
  122. });
  123. }
  124. @Override
  125. public BisInspFjsdu get(String key) {
  126. BisInspFjsdu qymten = super.get(key);
  127. Optional.ofNullable(qymten).map(BisInspFjsdu::getAdCode).ifPresent(adCode -> {
  128. AttAdBase attAdBase = attAdBaseDao.get(adCode);
  129. Optional.ofNullable(attAdBase).ifPresent(base -> {
  130. qymten.setAdName(base.getAdFullName());
  131. });
  132. });
  133. return qymten;
  134. }
  135. @Override
  136. public int delete(String id) {
  137. return this.bisInspFjsduDao.delete(id);
  138. }
  139. @Override
  140. public void insertObj(BisInspAllObj bisInspAllObj, String persId) {
  141. AttFjsduBase attFjsduBase = attFjsduBaseDao.get(bisInspAllObj.getCode());
  142. BisInspFjsdu fjsduRgstr = new BisInspFjsdu();
  143. fjsduRgstr.setObjId(bisInspAllObj.getObjId());
  144. fjsduRgstr.setName(attFjsduBase.getName());
  145. fjsduRgstr.setAdCode(attFjsduBase.getAdCode());
  146. fjsduRgstr.setAdName(attFjsduBase.getAdName());
  147. fjsduRgstr.setBusAddr(attFjsduBase.getBusAddr());
  148. fjsduRgstr.setConPers(attFjsduBase.getConPers());
  149. fjsduRgstr.setConPersTel(attFjsduBase.getConPersTel());
  150. fjsduRgstr.setCenterX(attFjsduBase.getCenterX());
  151. fjsduRgstr.setCenterY(attFjsduBase.getCenterY());
  152. fjsduRgstr.setGdX(attFjsduBase.getGdX());
  153. fjsduRgstr.setGdY(attFjsduBase.getGdY());
  154. fjsduRgstr.setGroupId(bisInspAllObj.getId());
  155. fjsduRgstr.setProvince(bisInspAllObj.getProvince());
  156. fjsduRgstr.setPersId(persId);
  157. fjsduRgstr.setState("0");
  158. fjsduRgstr.setIsCnfm(attFjsduBase.getIsCnfm());
  159. if(null == fjsduRgstr.getIsCnfm() ){
  160. fjsduRgstr.setIsCnfm("1");
  161. }
  162. insert(fjsduRgstr);
  163. }
  164. @Override
  165. public String getType() {
  166. return BisInspEnum.FJSDU.getValue();
  167. }
  168. @Override
  169. public void cleanObjData(String objId) {
  170. BisInspFjsduParam param = new BisInspFjsduParam();
  171. param.setObjId(objId);
  172. List<BisInspFjsdu> list = bisInspFjsduDao.findList(param);
  173. if (CollectionUtils.isNotEmpty(list)) {
  174. String rgstrId = list.get(0).getId();
  175. //删除名录表
  176. BisInspAllObjParam bisInspAllObjParam = new BisInspAllObjParam();
  177. bisInspAllObjParam.setObjId(objId);
  178. this.bisInspAllObjDao.deleteBy(bisInspAllObjParam);
  179. //登记表
  180. bisInspFjsduDao.delete(rgstrId);
  181. //8个子表
  182. BisInspFjsduImgrParam param4 = new BisInspFjsduImgrParam();
  183. param4.setRgstrId(rgstrId);
  184. bisInspFjsduImgrDao.deleteBy(param4);
  185. BisInspFjsduSafdlParam param5 = new BisInspFjsduSafdlParam();
  186. param5.setRgstrId(rgstrId);
  187. bisInspFjsduSafdlDao.deleteBy(param5);
  188. }
  189. }
  190. @Override
  191. public PageInfo<BisInspFjsduDto> findQaPage(TypeParam param) {
  192. if (StringUtils.isNotBlank(param.getAdCode())) {
  193. param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get(SplitValue.SUBAD)));
  194. }
  195. if (StringUtils.isNotBlank(param.getAdCodes())) {
  196. param.setAdCodes(AdLevelUtil.getListAddvcd(param.getAdCodes()));
  197. }
  198. PageHelper.startPage(param);
  199. List<BisInspFjsduDto> list = bisInspFjsduDao.findFjsduPage(param);
  200. return new PageInfo<>(list);
  201. }
  202. @Override
  203. public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) {
  204. return this.findQaPage(typeParam);
  205. }
  206. @Override
  207. public Object findObjListByType(TypeParam typeParam) {
  208. List<BisInspFjsduDto> list = bisInspFjsduDao.findFjsduPage(typeParam);
  209. if (list.size() > 0) {
  210. for (BisInspFjsduDto qaDto : list) {
  211. String adFullName = qaDto.getAdFullName();
  212. if (org.apache.commons.lang3.StringUtils.isBlank(adFullName)) {
  213. continue;
  214. }
  215. if (adFullName.contains(SplitValue.HENG_SPLIT)) {
  216. String[] split = adFullName.split(SplitValue.HENG_SPLIT);
  217. if (split.length == 2) {
  218. qaDto.setProvince(split[0]);
  219. qaDto.setCity(split[1]);
  220. }
  221. if (split.length == 1) {
  222. qaDto.setProvince(split[0]);
  223. qaDto.setCity("");
  224. }
  225. } else {
  226. qaDto.setProvince(adFullName);
  227. }
  228. }
  229. }
  230. return list;
  231. }
  232. @Override
  233. public List<BisInspFjsduDto> findPageOfficeList(TypeParam param) {
  234. if (org.apache.commons.lang3.StringUtils.isNotBlank(param.getAdCode())) {
  235. param.setAdCode(String.valueOf(AdLevelUtil.SubAd(param.getAdCode()).get(SplitValue.SUBAD)));
  236. }
  237. if (org.apache.commons.lang3.StringUtils.isNotBlank(param.getAdCodes())) {
  238. param.setAdCodes(AdLevelUtil.getListAddvcd(param.getAdCodes()));
  239. }
  240. List<BisInspFjsduDto> list = bisInspFjsduDao.findPageOfficeList(param);
  241. return list;
  242. }
  243. @Override
  244. public void updateState(Map<String, Object> map) {
  245. }
  246. @Autowired
  247. private BisInspAllRlationDao inspAllRlationDao;
  248. @Autowired
  249. private RoleDao roleDao;
  250. @Override
  251. public String getTabPri(TypeParam param) {
  252. String curPersId = param.getPresId();
  253. // 判断角色
  254. RoleParam roleParam = new RoleParam();
  255. roleParam.setUserId(curPersId);
  256. roleParam.setOrgId(param.getOrgId());
  257. List<Role> roleList = roleDao.getTabPriByUserId(roleParam);
  258. boolean flag1 = false;
  259. boolean flag2 = false;
  260. boolean flag3 = false;
  261. if (null != roleList) {
  262. for (Role role : roleList) {
  263. if (role.getRoleName().contains("现场专家")) {
  264. flag1 = true;
  265. }
  266. if (role.getRoleName().contains("非现场专家")) {
  267. flag2 = true;
  268. }
  269. if (role.getRoleName().contains("管理员") || role.getRoleName().contains("组长")) {
  270. flag3 = true;
  271. }
  272. }
  273. }
  274. if (flag3 || (flag1 && flag2)) {
  275. // 管理员 或 同时具有 党建 工地专家权限
  276. return "1";
  277. }
  278. // 判断对象所在组的 人员 身份类型
  279. BisInspAllRlationParam allRlationParam = new BisInspAllRlationParam();
  280. allRlationParam.setpType(param.getpType());
  281. allRlationParam.setOrgId(param.getOrgId());
  282. allRlationParam.setPersid(curPersId);
  283. List<BisInspAllRlation> allRlationList = inspAllRlationDao.getPerTypeByUserIdandObjId(allRlationParam);
  284. if (null != allRlationList) {
  285. for (BisInspAllRlation allRlation : allRlationList) {
  286. if ("1".equals(allRlation.getPertype())) {
  287. // 当前用户 在对象所在组里 身份类型 是 组长
  288. flag3 = true;
  289. }
  290. }
  291. }
  292. if (flag3) {
  293. // 组长\管理员
  294. return "1";
  295. }
  296. if (flag1) {
  297. // 现场专家
  298. return "2";
  299. }
  300. if (flag2) {
  301. // 非现场专家
  302. return "3";
  303. }
  304. // 其他:不是管理员、 不具有党建、工地角色
  305. return "4";
  306. }
  307. }