ccb0deb940211396672d757bb717673fa9ded3b6.svn-base 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. package cn.com.goldenwater.dcproj.service.impl;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.constValue.BisInspEnum;
  4. import cn.com.goldenwater.dcproj.constValue.CommonLabel;
  5. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  6. import cn.com.goldenwater.dcproj.dao.AttAdXBaseDao;
  7. import cn.com.goldenwater.dcproj.dao.BisInspAllRlationDao;
  8. import cn.com.goldenwater.dcproj.dao.BisInspVillgdDao;
  9. import cn.com.goldenwater.dcproj.dto.AttCountryDto;
  10. import cn.com.goldenwater.dcproj.dto.BisInspVillgdDto;
  11. import cn.com.goldenwater.dcproj.dto.BisInspVillgdVillDto;
  12. import cn.com.goldenwater.dcproj.model.*;
  13. import cn.com.goldenwater.dcproj.param.*;
  14. import cn.com.goldenwater.dcproj.service.*;
  15. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  16. import cn.com.goldenwater.dcproj.utils.Builder;
  17. import cn.com.goldenwater.dcproj.utils.Constant;
  18. import cn.com.goldenwater.id.util.UuidUtil;
  19. import com.github.pagehelper.PageHelper;
  20. import com.github.pagehelper.PageInfo;
  21. import org.apache.commons.collections.MapUtils;
  22. import org.apache.commons.lang3.StringUtils;
  23. import org.slf4j.Logger;
  24. import org.slf4j.LoggerFactory;
  25. import org.springframework.beans.BeanUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import javax.servlet.http.HttpServletResponse;
  30. import java.util.*;
  31. /**
  32. * @author lhc
  33. * @date 2021-4-23
  34. */
  35. @Service
  36. @Transactional
  37. public class BisInspVillgdServiceImpl extends AbstractCrudService<BisInspVillgd, BisInspVillgdParam> implements BisInspVillgdService, BisInspObjStrategy {
  38. @Autowired
  39. private BisInspVillgdDao bisInspVillgdDao;
  40. @Autowired
  41. private BisInspVillgdQqeService bisInspVillgdQqeService;
  42. @Autowired
  43. private AttAdXBaseDao attAdXBaseDao;
  44. @Autowired
  45. private BisInspVillgdWtspService bisInspVillgdWtspService;
  46. @Autowired
  47. private BisInspVillgdVillService bisInspVillgdVillService;
  48. @Autowired
  49. private BisInspVillgdNvillService bisInspVillgdNvillService;
  50. @Autowired
  51. private BisInspAllRlationDao bisInspAllRlationDao;
  52. @Autowired
  53. private BisInspVillgdVillUsrService bisInspVillgdVillUsrService;
  54. @Autowired
  55. private BisInspVillgdVillWtspService bisInspVillgdVillWtspService;
  56. @Autowired
  57. private BisInspPblmService bisInspPblmService;
  58. private Logger logger = LoggerFactory.getLogger(getClass());
  59. public BisInspVillgdServiceImpl(BisInspVillgdDao bisInspVillgdDao) {
  60. super(bisInspVillgdDao);
  61. this.bisInspVillgdDao = bisInspVillgdDao;
  62. }
  63. @Override
  64. public int insert(BisInspVillgd bisInspVillgd) {
  65. String uuid = UuidUtil.uuid(); // 生成uuid
  66. bisInspVillgd.setId(uuid);
  67. bisInspVillgd.setIntm(new Date());
  68. bisInspVillgd.setUptm(new Date());
  69. bisInspVillgd.setDataStat("0");
  70. return this.bisInspVillgdDao.insert(bisInspVillgd);
  71. }
  72. @Override
  73. public int update(BisInspVillgd bisInspVillgd) {
  74. bisInspVillgd.setUptm(new Date());
  75. updatePblmState(bisInspVillgd);//更新状态 同时更新问题
  76. return this.bisInspVillgdDao.update(bisInspVillgd);
  77. }
  78. private void updatePblmState(BisInspVillgd rgstr) {
  79. BisInspVillgd r = get(rgstr.getId());
  80. if (r == null) {
  81. return;
  82. }
  83. bisInspPblmService.updateStateByObjId(r.getObjId(), rgstr.getState());
  84. }
  85. @Override
  86. public int delete(String id) {
  87. return this.bisInspVillgdDao.delete(id);
  88. }
  89. @Override
  90. public void insertObj(BisInspAllObj bisInspAllObj, String persId) {
  91. BisInspVillgd b = new BisInspVillgd();
  92. AttAdXBase base = attAdXBaseDao.get(bisInspAllObj.getCode());
  93. BeanUtils.copyProperties(base, b);
  94. // 统一字段 rgstrId, objId
  95. b.setId(UuidUtil.uuid());
  96. b.setObjId(bisInspAllObj.getObjId());
  97. // 日期
  98. Date d = new Date();
  99. b.setIntm(d);
  100. b.setUptm(d);
  101. // 数据状态 默认为 0
  102. // 督查状态(0:未督查;1:督查中;2:已督查)
  103. b.setState(CommonLabel.INIT_DATA);
  104. // 子表状态(0:未督查;1:督查中;2:已督查)
  105. b.setQqeState(CommonLabel.INIT_DATA);
  106. // 创建人
  107. b.setPersId(persId);
  108. /* 添加 登记表 */
  109. this.bisInspVillgdDao.insert(b);
  110. bisInspVillgdQqeService.insert(Builder.of(BisInspVillgdQqeParam::new).with(BisInspVillgdQqeParam::setRgstrId, b.getId()).build());
  111. }
  112. @Override
  113. public BisInspVillgd get(String key) {
  114. BisInspVillgd bisInspVillgd = super.get(key);
  115. Optional.ofNullable(bisInspVillgd).ifPresent(vill -> {
  116. vill.setVillCount(bisInspVillgdVillService.selectCount(Builder.of(BisInspVillgdVill::new).with(BisInspVillgdVill::setRgstrId, key).build()));
  117. vill.setNvillCount(bisInspVillgdNvillService.selectCount(Builder.of(BisInspVillgdNvill::new).with(BisInspVillgdNvill::setRgstrId, key).build()));
  118. vill.setWtspCount(bisInspVillgdWtspService.selectCount(Builder.of(BisInspVillgdWtsp::new).with(BisInspVillgdWtsp::setRgstrId, key).build()));
  119. vill.setVillUsrCount(bisInspVillgdVillUsrService.selectCount(Builder.of(BisInspVillgdVillUsr::new).with(BisInspVillgdVillUsr::setRgstrId, key).build()));
  120. vill.setVillWtspCount(bisInspVillgdVillWtspService.selectCount(Builder.of(BisInspVillgdVillWtsp::new).with(BisInspVillgdVillWtsp::setRgstrId, key).build()));
  121. });
  122. return bisInspVillgd;
  123. }
  124. @Override
  125. public String getType() {
  126. return BisInspEnum.VILLGD.getValue();
  127. }
  128. @Override
  129. public void cleanObjData(String objId) {
  130. BisInspVillgdParam rgstrParam = new BisInspVillgdParam();
  131. rgstrParam.setObjId(objId);
  132. List<BisInspVillgd> list = this.bisInspVillgdDao.findList(rgstrParam);
  133. if (list.size() > 0) {
  134. String id = list.get(0).getId();
  135. // 删除子表
  136. bisInspVillgdQqeService.deleteBy(Builder.of(BisInspVillgdQqeParam::new).with(BisInspVillgdQqeParam::setRgstrId, id).build());
  137. // 删除所有工程
  138. bisInspVillgdWtspService.deleteBy(Builder.of(BisInspVillgdWtspParam::new).with(BisInspVillgdWtspParam::setRgstrId, id).build());
  139. // 删除所有行政村
  140. bisInspVillgdVillService.deleteBy(Builder.of(BisInspVillgdVillParam::new).with(BisInspVillgdVillParam::setRgstrId, id).build());
  141. // 删除登记表
  142. this.bisInspVillgdDao.delete(id);
  143. }
  144. }
  145. @Override
  146. public PageInfo findObjPageByType(TypeParam typeParam, HttpServletResponse response) {
  147. if (StringUtils.isNotBlank(typeParam.getAdCode())) {
  148. typeParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(typeParam.getAdCode()).get(SplitValue.SUBAD)));
  149. }
  150. PageHelper.startPage(typeParam);
  151. String[] groupIds = bisInspAllRlationDao.getIdByPersid(Builder
  152. .of(BisInspAllRlationParam::new)
  153. .with(BisInspAllRlationParam::setPersid, typeParam.getPresId())
  154. .with(BisInspAllRlationParam::setpType, typeParam.getpType())
  155. .build());
  156. typeParam.setGroupIds(groupIds);
  157. List<BisInspVillgdDto> list = (List<BisInspVillgdDto>) findObjListByType(typeParam);
  158. return (PageInfo<BisInspVillgdDto>) new PageInfo(list);
  159. }
  160. @Override
  161. public Object findObjListByType(TypeParam typeParam) {
  162. List<BisInspVillgdDto> list = this.bisInspVillgdDao.findPageList(typeParam);
  163. for (BisInspVillgdDto vill : list) {
  164. vill.setVillCount(bisInspVillgdVillService.selectCount(Builder.of(BisInspVillgdVill::new).with(BisInspVillgdVill::setRgstrId, vill.getId()).build()));
  165. vill.setNvillCount(bisInspVillgdNvillService.selectCount(Builder.of(BisInspVillgdNvill::new).with(BisInspVillgdNvill::setRgstrId, vill.getId()).build()));
  166. vill.setWtspCount(bisInspVillgdWtspService.selectCount(Builder.of(BisInspVillgdWtsp::new).with(BisInspVillgdWtsp::setRgstrId, vill.getId()).build()));
  167. vill.setVillUsrCount(bisInspVillgdVillUsrService.selectCount(Builder.of(BisInspVillgdVillUsr::new).with(BisInspVillgdVillUsr::setRgstrId, vill.getId()).build()));
  168. vill.setVillWtspCount(bisInspVillgdVillWtspService.selectCount(Builder.of(BisInspVillgdVillWtsp::new).with(BisInspVillgdVillWtsp::setRgstrId, vill.getId()).build()));
  169. }
  170. return list;
  171. }
  172. @Override
  173. public Map<String, Object> findNode(String villId, String regstrId) {
  174. Map<String, Object> map = new HashMap<>(2);
  175. villId = AdLevelUtil.getAddvcd(villId);
  176. // 获取工程暗访情况
  177. BisInspVillgdVillWtspParam wtspParam = Builder.of(BisInspVillgdVillWtspParam::new)
  178. .with(BisInspVillgdVillWtspParam::setRgstrId, regstrId)
  179. .with(BisInspVillgdVillWtspParam::setVillId, villId)
  180. .build();
  181. List<BisInspVillgdVillWtsp> wtspList = bisInspVillgdVillWtspService.findList(wtspParam);
  182. // 获取农牧民情况
  183. BisInspVillgdVillUsrParam poorParam = Builder.of(BisInspVillgdVillUsrParam::new)
  184. .with(BisInspVillgdVillUsrParam::setRgstrId, regstrId)
  185. .with(BisInspVillgdVillUsrParam::setVillId, villId)
  186. .build();
  187. List<BisInspVillgdVillUsr> usrList = bisInspVillgdVillUsrService.findList(poorParam);
  188. map.put("usr", usrList);
  189. map.put("wtsp", wtspList);
  190. return map;
  191. }
  192. @Override
  193. public List<AttCountryDto> findCheckTree(String code, String regstrId) {
  194. // 获取镇信息
  195. List<AttCountryDto> zhenDtoList = attAdXBaseDao.findXZCZhenList(code);
  196. // 获取村信息
  197. List<AttCountryDto> countryDtoList = attAdXBaseDao.findXZCCunList(code, regstrId, BisInspEnum.VILLGD.getValue());
  198. for (AttCountryDto attCountryDto : zhenDtoList) {
  199. String adCode = attCountryDto.getAdCode().replace("000", "");
  200. List<AttCountryDto> childList = new ArrayList<>();
  201. for (AttCountryDto countryDto : countryDtoList) {
  202. if (countryDto.getAdCode().startsWith(adCode)) {
  203. childList.add(countryDto);
  204. }
  205. }
  206. attCountryDto.setAttCountryDtoList(childList);
  207. }
  208. return zhenDtoList;
  209. }
  210. @Override
  211. public void updateState(Map<String, Object> map) {
  212. BisInspVillgd rgstr = get(MapUtils.getString(map, "rgstrId"));
  213. if (!Constant.STRING_TWO.equals(rgstr.getState())) {
  214. rgstr.setState(Constant.STRING_ONE);
  215. if (StringUtils.isNotBlank(MapUtils.getString(map, "state"))) {
  216. switch (MapUtils.getString(map, "param")) {
  217. case "qqe":
  218. rgstr.setQqeState(MapUtils.getString(map, "state"));
  219. break;
  220. // case "poor":
  221. // rgstr.setPoorState(MapUtils.getString(map, "state"));
  222. // break;
  223. default:
  224. }
  225. }
  226. update(rgstr);
  227. }
  228. }
  229. @Override
  230. public List<BisInspVillgdVillDto> getVillTree(String id) {
  231. List<BisInspVillgdVillDto> villDtoList = new ArrayList<>();
  232. List<BisInspVillgdVill> villList = bisInspVillgdVillService.findList(Builder.of(BisInspVillgdVillParam::new)
  233. .with(BisInspVillgdVillParam::setRgstrId, id).build());
  234. if (villList == null || villList.size() == 0) {
  235. return null;
  236. }
  237. villList.forEach(vill -> {
  238. // vill.setNvillCount(bisInspVillgdNvillService.selectCount(Builder.of(BisInspVillgdNvill::new).with(BisInspVillgdNvill::setRgstrId, key).build()));
  239. vill.setVillUsrCount(bisInspVillgdVillUsrService.selectCount(Builder.of(BisInspVillgdVillUsr::new).with(BisInspVillgdVillUsr::setVillId, vill.getId()).build()));
  240. vill.setVillWtspCount(bisInspVillgdVillWtspService.selectCount(Builder.of(BisInspVillgdVillWtsp::new).with(BisInspVillgdVillWtsp::setVillId, vill.getId()).build()));
  241. BisInspVillgdVillDto villDto = new BisInspVillgdVillDto();
  242. BeanUtils.copyProperties(vill, villDto);
  243. villDto.setLevel("1");
  244. villDtoList.add(villDto);
  245. });
  246. for (BisInspVillgdVillDto villDto : villDtoList) {
  247. List<BisInspVillgdNvill> nvillList = bisInspVillgdNvillService.findList(Builder.of(BisInspVillgdNvillParam::new)
  248. .with(BisInspVillgdNvillParam::setVillId, villDto.getId()).build());
  249. if (nvillList != null && nvillList.size() > 0) {
  250. nvillList.forEach(vill -> {
  251. vill.setVillUsrCount(bisInspVillgdVillUsrService.selectCount(Builder.of(BisInspVillgdVillUsr::new).with(BisInspVillgdVillUsr::setVillId, vill.getId()).build()));
  252. vill.setVillWtspCount(bisInspVillgdVillWtspService.selectCount(Builder.of(BisInspVillgdVillWtsp::new).with(BisInspVillgdVillWtsp::setVillId, vill.getId()).build()));
  253. });
  254. villDto.getChildren().addAll(nvillList);
  255. }
  256. }
  257. return villDtoList;
  258. }
  259. }