36b4ca4b0ad6bcd7970844ba2ecbf882fc65d1bd.svn-base 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. package cn.com.goldenwater.dcproj.service.impl.vill;
  2. import cn.com.goldenwater.core.service.AbstractCrudService;
  3. import cn.com.goldenwater.dcproj.dao.AttCwsBaseCrrctDao;
  4. import cn.com.goldenwater.dcproj.dao.AttCwsBaseDao;
  5. import cn.com.goldenwater.dcproj.dao.BisInspManageResponsibilityDao;
  6. import cn.com.goldenwater.dcproj.dao.BisInspVlgdrinkProjManageDao;
  7. import cn.com.goldenwater.dcproj.dto.AttCwsBaseDto;
  8. import cn.com.goldenwater.dcproj.enums.RequestSourceEnum;
  9. import cn.com.goldenwater.dcproj.model.AttCwsBase;
  10. import cn.com.goldenwater.dcproj.model.AttCwsBaseCrrct;
  11. import cn.com.goldenwater.dcproj.model.BisInspVlgdrinkProjManage;
  12. import cn.com.goldenwater.dcproj.param.AttCwsBaseListParam;
  13. import cn.com.goldenwater.dcproj.param.AttCwsBaseListParamNew;
  14. import cn.com.goldenwater.dcproj.param.AttCwsBaseParam;
  15. import cn.com.goldenwater.dcproj.service.AttCwsBaseCrrctService;
  16. import cn.com.goldenwater.dcproj.service.AttCwsBaseService;
  17. import cn.com.goldenwater.dcproj.utils.BeanUtil;
  18. import cn.com.goldenwater.dcproj.utils.DateUtils;
  19. import cn.com.goldenwater.dcproj.utils.GeoUtil;
  20. import cn.com.goldenwater.dcproj.utils.expExcel.ExcelExport;
  21. import cn.com.goldenwater.dcproj.utils.expExcel.ExportAbstract;
  22. import cn.com.goldenwater.id.util.UuidUtil;
  23. import com.github.pagehelper.PageHelper;
  24. import com.github.pagehelper.PageInfo;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.apache.commons.lang3.math.NumberUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.transaction.annotation.Transactional;
  30. import javax.servlet.http.HttpServletResponse;
  31. import java.math.BigDecimal;
  32. import java.util.ArrayList;
  33. import java.util.List;
  34. import java.util.Map;
  35. import static cn.com.goldenwater.dcproj.util.CheckUtil.check;
  36. /**
  37. * @author zhengdafei
  38. * @date 2019-2-23
  39. */
  40. @Service
  41. @Transactional(rollbackFor = Exception.class)
  42. public class AttCwsBaseServiceImpl extends AbstractCrudService<AttCwsBase, AttCwsBaseParam> implements AttCwsBaseService {
  43. @Autowired
  44. private AttCwsBaseDao attCwsBaseDao;
  45. @Autowired
  46. private AttCwsBaseCrrctDao attCwsBaseCrrctDao;
  47. @Autowired
  48. private AttCwsBaseCrrctService attCwsBaseCrrctService;
  49. @Autowired
  50. private BisInspManageResponsibilityDao bisInspManageResponsibilityDao;
  51. @Autowired
  52. private BisInspVlgdrinkProjManageDao bisInspVlgdrinkProjManageDao;
  53. public AttCwsBaseServiceImpl(AttCwsBaseDao attCwsBaseDao) {
  54. super(attCwsBaseDao);
  55. this.attCwsBaseDao = attCwsBaseDao;
  56. }
  57. @Override
  58. public AttCwsBase add(AttCwsBase p) throws Exception {
  59. String uuid = UuidUtil.uuid();
  60. String now = DateUtils.getTodayYMDHMS();
  61. p.setUptm(now);
  62. p.setGuid(uuid);
  63. p.setEffDate(now);
  64. if (StringUtils.isBlank(p.getCwsCode())) {
  65. check(StringUtils.isNotBlank(p.getAddvcd()), "addvcd 不能为空,无法生成cwsCode");
  66. // 根据最大code生成cwscode
  67. String maxCwsCode = attCwsBaseDao.getMaxCwsCode(p.getAddvcd());
  68. if (maxCwsCode != null) {
  69. Long mCcode = 0L;
  70. mCcode = NumberUtils.createLong(maxCwsCode);
  71. Long cwsCode = mCcode + 1;
  72. p.setCwsCode(cwsCode + "");
  73. } else {
  74. Long mCcode = 0L;
  75. mCcode = NumberUtils.createLong(p.getAddvcd());
  76. Long cwsCode = mCcode + 1;
  77. p.setCwsCode(cwsCode + "");
  78. }
  79. } else {
  80. AttCwsBaseParam ap = new AttCwsBaseParam();
  81. ap.setCwsCode(p.getCwsCode());
  82. List<AttCwsBase> l = attCwsBaseDao.findList(ap);
  83. if (l != null && l.size() > 0) {
  84. throw new Exception("此工程代码已存在!" + p.getCwsCode());
  85. }
  86. }
  87. if (StringUtils.isNotBlank(p.getCompYear())) {
  88. p.setCompDate(p.getCompYear() + "-01-01");
  89. }
  90. transferGeo(p);
  91. attCwsBaseDao.insert(p);
  92. AttCwsBaseParam cwsBaseParam = new AttCwsBaseParam();
  93. cwsBaseParam.setCwsCode(p.getCwsCode());
  94. cwsBaseParam.setAddvcd(p.getAddvcd());
  95. AttCwsBase attCwsBase = attCwsBaseDao.getBy(cwsBaseParam);
  96. return attCwsBase;
  97. }
  98. @Override
  99. public int modify(AttCwsBase p) throws Exception {
  100. String now = DateUtils.getTodayYMDHMS();
  101. p.setUptm(now);
  102. transferGeo(p);
  103. if (StringUtils.isNotBlank(p.getCompYear())) {
  104. p.setCompDate(p.getCompYear() + "-01-01");
  105. }
  106. int ret = attCwsBaseDao.update(p);
  107. return ret;
  108. }
  109. public void transferGeo(AttCwsBase p) {
  110. String src = p.getSrc();
  111. if (StringUtils.isNotBlank(src)) {
  112. if (RequestSourceEnum.PC.getValue().equalsIgnoreCase(src)) {
  113. if (p.getCwsLong() != null && p.getCwsLat() != null) {
  114. Map<String, Double> map = GeoUtil.wgs84togcj02(p.getCwsLong(), p.getCwsLat());
  115. p.setCenterXGd(map.get("lon"));
  116. p.setCenterYGd(map.get("lat"));
  117. }
  118. } else if (RequestSourceEnum.MOBILE.getValue().equalsIgnoreCase(src)) {
  119. if (p.getCenterXGd() != null && p.getCenterYGd() != null) {
  120. Map<String, Double> map = GeoUtil.gcj02towgs84(p.getCenterXGd(), p.getCenterYGd());
  121. p.setCwsLong(map.get("lon"));
  122. p.setCwsLat(map.get("lat"));
  123. }
  124. }
  125. } else {
  126. if (p.getCwsLong() != null && p.getCwsLat() != null) {
  127. Map<String, Double> map = GeoUtil.wgs84togcj02(p.getCwsLong(), p.getCwsLat());
  128. p.setCenterXGd(map.get("lon"));
  129. p.setCenterYGd(map.get("lat"));
  130. } else if (p.getCenterXGd() != null && p.getCenterYGd() != null) {
  131. Map<String, Double> map = GeoUtil.gcj02towgs84(p.getCenterXGd(), p.getCenterYGd());
  132. p.setCwsLong(map.get("lon"));
  133. p.setCwsLat(map.get("lat"));
  134. }
  135. }
  136. }
  137. @Override
  138. public PageInfo<AttCwsBase> queryListByPage(AttCwsBaseParam p) throws Exception {
  139. PageHelper.startPage(p.getPageNum(), p.getPageSize());
  140. List<AttCwsBase> list = attCwsBaseDao.findList(p);
  141. return new PageInfo<AttCwsBase>(list);
  142. }
  143. @Override
  144. public List<AttCwsBase> queryList(AttCwsBaseParam p) throws Exception {
  145. List<AttCwsBase> list = attCwsBaseDao.findList(p);
  146. return list;
  147. }
  148. @Override
  149. public PageInfo<AttCwsBaseDto> queryListByObjId(AttCwsBaseListParam param) throws Exception {
  150. PageHelper.startPage(param.getPageNum(), param.getPageSize());
  151. List<AttCwsBaseDto> list = attCwsBaseDao.queryListWithStatus(param.getObjId(), param.getEngId(), param.getName());
  152. PageInfo<AttCwsBaseDto> page = new PageInfo<>(list);
  153. return page;
  154. }
  155. @Override
  156. public PageInfo<AttCwsBase> queryListByObjId(AttCwsBaseListParamNew param) throws Exception {
  157. List<AttCwsBase> list = new ArrayList<>();
  158. if (param.isIfDc()) {
  159. PageHelper.startPage(param.getPageNum(), param.getPageSize());
  160. list = attCwsBaseDao.queryListByObjId(param.getAdCode(), param.getEngId(), param.getName());
  161. } else {
  162. PageHelper.startPage(param.getPageNum(), param.getPageSize());
  163. list = attCwsBaseDao.queryListByObjIdNotDC(param.getAdCode(), param.getEngId(), param.getName());
  164. }
  165. PageInfo<AttCwsBase> page = new PageInfo<>(list);
  166. return page;
  167. }
  168. @Override
  169. public void correction(AttCwsBaseCrrct attCwsBase, String persId) throws Exception {
  170. AttCwsBase base = new AttCwsBase();
  171. base.setGuid(attCwsBase.getGuid());
  172. base.setCwsName(attCwsBase.getCwsName());
  173. base.setCompDate(attCwsBase.getCompDate());
  174. base.setCwsLoc(attCwsBase.getCwsLoc());
  175. base.setDesWasuScal(attCwsBase.getDesWasuScal());
  176. base.setDesWasuPop(attCwsBase.getDesWasuPop());
  177. base.setCwsLong(attCwsBase.getCwsLong());
  178. base.setCwsLat(attCwsBase.getCwsLat());
  179. base.setCenterXGd(attCwsBase.getCenterXGd());
  180. base.setCenterYGd(attCwsBase.getCenterYGd());
  181. base.setSrc(attCwsBase.getSrc());
  182. base.setCompYear(attCwsBase.getCompYear());
  183. modify(base);
  184. attCwsBaseCrrctService.add(attCwsBase);
  185. BisInspVlgdrinkProjManage p = new BisInspVlgdrinkProjManage();
  186. p.setCwsCode(attCwsBase.getCwsCode());
  187. p.setPjnm(attCwsBase.getCwsName());
  188. p.setVillageNm(attCwsBase.getCwsLoc());
  189. if (StringUtils.isNotBlank(attCwsBase.getCompYear())) {
  190. p.setBuildYear(NumberUtils.toLong(attCwsBase.getCompYear()));
  191. } else {
  192. if (StringUtils.isNotBlank(attCwsBase.getCompDate())) {
  193. p.setBuildYear(NumberUtils.toLong(attCwsBase.getCompDate().split("-")[0]));
  194. }
  195. }
  196. p.setPlanSupplyScale(attCwsBase.getDesWasuScal());
  197. if (attCwsBase.getDesWasuPop() != null) {
  198. BigDecimal despop = new BigDecimal(attCwsBase.getDesWasuPop().toString());
  199. despop = despop.multiply(new BigDecimal(10000));
  200. p.setPersonNum(despop.longValue());
  201. }
  202. String now = DateUtils.getTodayYMDHMS();
  203. p.setUpdateTime(now);
  204. p.setRecPersId(persId);
  205. bisInspVlgdrinkProjManageDao.updateByCwsCode(p);
  206. }
  207. @Override
  208. public void exportAttCwsBase(AttCwsBaseParam attCwsBaseParam, HttpServletResponse response) {
  209. List<AttCwsBase> list = attCwsBaseDao.findList(attCwsBaseParam);
  210. List<Map<String, Object>> mapList = new ArrayList<>();
  211. for (AttCwsBase attCwsBase : list) {
  212. String engType = attCwsBase.getEngType();
  213. if ("1".equals(engType)) {
  214. attCwsBase.setEngType("大(1)型");
  215. } else if ("2".equals(engType)) {
  216. attCwsBase.setEngType("大(2)型");
  217. } else if ("3".equals(engType)) {
  218. attCwsBase.setEngType("中型");
  219. } else if ("4".equals(engType)) {
  220. attCwsBase.setEngType("小(1)型");
  221. } else if ("5".equals(engType)) {
  222. attCwsBase.setEngType("小(2)型");
  223. } else if ("9".equals(engType)) {
  224. attCwsBase.setEngType("其他");
  225. }
  226. mapList.add(BeanUtil.transBean2Map(attCwsBase));
  227. }
  228. ExportAbstract export = new ExcelExport();
  229. export.setFileName("人饮基础信息");
  230. export.setExport_ps_export(true);
  231. export.setExport_ps_type(ExportAbstract.XLS);
  232. export.setExport_bzip(false);
  233. export.setTitle("人饮基础信息");
  234. ArrayList<Object> cols = new ArrayList<Object>();
  235. cols.add("cwsCode[农村供水代码]");
  236. cols.add("cwsName[农村供水名称]");
  237. cols.add("cwsLoc[农村供水所在位置]");
  238. cols.add("addvcd[行政区划编码]");
  239. cols.add("engType[工程类型]");
  240. cols.add("wasuRang[供水范围]");
  241. cols.add("desWasuScal[设计供水规模(立方米/天)]");
  242. cols.add("note[备注]");
  243. export.setCols(cols);
  244. export.setGroupable(false);
  245. // 设置视图指标
  246. export.setLevel(1);
  247. export.setLocksize(0);
  248. try {
  249. export.Export(response);
  250. export.ExportHeadForCustom(response);//导出表头
  251. export.ContinueExport(mapList);
  252. export.EndExport();
  253. } catch (Exception e) {
  254. e.printStackTrace();
  255. }
  256. }
  257. /**
  258. * 根据水饮编码 批量设置是否省属 1是 2否
  259. * @param attCwsBaseParam
  260. * @return
  261. */
  262. @Override
  263. public int updateBatchProvincial(AttCwsBaseParam attCwsBaseParam){
  264. return attCwsBaseDao.updateBatchProvincial(attCwsBaseParam);
  265. }
  266. }