ec9ae245e6515aa91445cb6d0161b2e0a724b23f.svn-base 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779
  1. package cn.com.goldenwater.dcproj.service.impl.tac;
  2. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  3. import cn.com.goldenwater.dcproj.dao.*;
  4. import cn.com.goldenwater.dcproj.dto.TacCountDto;
  5. import cn.com.goldenwater.dcproj.dto.TacInspYearBatchGroupAuditDto;
  6. import cn.com.goldenwater.dcproj.model.*;
  7. import cn.com.goldenwater.dcproj.param.*;
  8. import cn.com.goldenwater.dcproj.service.TacInspYearBatchGroupService;
  9. import cn.com.goldenwater.dcproj.service.TacInspYearBatchService;
  10. import cn.com.goldenwater.core.service.AbstractCrudService;
  11. import cn.com.goldenwater.dcproj.utils.AdLevelUtil;
  12. import cn.com.goldenwater.dcproj.utils.BeanUtil;
  13. import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil;
  14. import cn.com.goldenwater.id.util.UuidUtil;
  15. import cn.com.goldenwater.target.CheckException;
  16. import com.github.pagehelper.PageHelper;
  17. import com.github.pagehelper.PageInfo;
  18. import org.apache.commons.collections.map.HashedMap;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.apache.poi.ss.usermodel.Row;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import java.util.ArrayList;
  26. import java.util.Date;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.function.Function;
  30. import java.util.stream.Collectors;
  31. /**
  32. * @author lune
  33. * @date 2019-9-6
  34. */
  35. @Service
  36. @Transactional
  37. public class TacInspYearBatchServiceImpl extends AbstractCrudService<TacInspYearBatch, TacInspYearBatchParam> implements TacInspYearBatchService {
  38. @Autowired
  39. private TacInspYearBatchDao tacInspYearBatchDao;
  40. @Autowired
  41. private TacWorkerBDao workerBDao;
  42. @Autowired
  43. private TacInspYearBatchGroupService groupService;
  44. @Autowired
  45. private TacInspPersAreaPrisDao prisDao;
  46. @Autowired
  47. private TacInspYearBatchGroupPersDao groupPersDao;
  48. @Autowired
  49. private TacInspYearBatchAreaDao areaDao;
  50. @Autowired
  51. private TacInspYearBatchGroupDao tacInspYearBatchGroupDao;
  52. @Autowired
  53. private AttAdXBaseDao attAdXBaseDao;
  54. @Autowired
  55. private TacInspYearBatchObjDao objDao;
  56. @Autowired
  57. private TacPawpRgstrDao pawpRgstrDao;
  58. @Autowired
  59. private TacAttPawpBaseDao pawpBaseDao;
  60. @Autowired
  61. private TacInspYearBatchObjDao tacInspYearBatchObjDao;
  62. public TacInspYearBatchServiceImpl(TacInspYearBatchDao tacInspYearBatchDao) {
  63. super(tacInspYearBatchDao);
  64. this.tacInspYearBatchDao = tacInspYearBatchDao;
  65. }
  66. @Override
  67. public int insert(TacInspYearBatch entity) {
  68. entity.setId(UuidUtil.uuid());
  69. entity.setInTm(new Date());
  70. entity.setUpTm(new Date());
  71. entity.setDataStat("0");
  72. entity.setIsAreaGroup("2");
  73. entity.setIsAppraisal("2");
  74. entity.setIsPersGroup("2");
  75. return super.insert(entity);
  76. }
  77. @Override
  78. public int update(TacInspYearBatch entity) {
  79. entity.setUpTm(new Date());
  80. return super.update(entity);
  81. }
  82. @Override
  83. public List<TacInspYearBatch> getTacInspYearBatchList(TacInspYearBatchParam tacInspYearBatchParam) {
  84. return this.tacInspYearBatchDao.getTacInspYearBatchList(tacInspYearBatchParam);
  85. }
  86. @Override
  87. public PageInfo<TacInspYearBatch> getTacInspYearBatchPage(TacInspYearBatchParam tacInspYearBatchParam) {
  88. PageHelper.startPage(tacInspYearBatchParam);
  89. List<TacInspYearBatch> list = this.tacInspYearBatchDao.getTacInspYearBatchList(tacInspYearBatchParam);
  90. return new PageInfo<TacInspYearBatch>(list);
  91. }
  92. @Override
  93. public TacInspYearBatch getTacInspYearBatchById(String id,String province) {
  94. TacInspYearBatch tacInspYearBatch = this.tacInspYearBatchDao.get(id);
  95. //获取原则id
  96. TacInspPersAreaPrisParam prisParam = new TacInspPersAreaPrisParam();
  97. prisParam.setYearBatchId(id);
  98. prisParam.setProvince(province);
  99. List<TacInspPersAreaPris> prisList = this.prisDao.findList(prisParam);
  100. if (prisList.size() > 0 ){
  101. tacInspYearBatch.setPersAreaId(prisList.get(0).getId());
  102. }
  103. //获取稽察人员列表
  104. TacWorkerBParam tacWorkerBParam = new TacWorkerBParam();
  105. tacWorkerBParam.setYearBatchId(id);
  106. tacWorkerBParam.setProvince(province);
  107. List<TacWorkerB> list = this.workerBDao.getWorkerbsListById(tacWorkerBParam);
  108. if (list != null && !list.isEmpty()) {
  109. for (TacWorkerB workerB : list) {
  110. TacInspYearBatchGroupPersParam groupPersParam = new TacInspYearBatchGroupPersParam();
  111. groupPersParam.setPersId(workerB.getId());
  112. groupPersParam.setYearBatchId(id);
  113. groupPersParam.setProvince(province);
  114. List<TacInspYearBatchGroupPers> groupPersList = groupPersDao.findList(groupPersParam);
  115. List<TacWorkerType> roleTypeList = new ArrayList<>();
  116. for (TacInspYearBatchGroupPers groupPers : groupPersList) {
  117. TacWorkerType tacWorkerType = new TacWorkerType();
  118. tacWorkerType.setValue(groupPers.getRoleType());
  119. roleTypeList.add(tacWorkerType);
  120. }
  121. workerB.setRoleTypeList(roleTypeList);
  122. }
  123. }
  124. tacInspYearBatch.setWorkersList(list);
  125. //获取组列表
  126. TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  127. groupParam.setYearBatchId(id);
  128. groupParam.setProvince(province);
  129. List<TacInspYearBatchGroup> groupList = groupService.getGroupList(groupParam);
  130. tacInspYearBatch.setGroupList(groupList);
  131. return tacInspYearBatch;
  132. }
  133. @Override
  134. public int cleanAllObjByYearBatchId(String yearBatchId) {
  135. TacInspYearBatchGroupPersParam persParam = new TacInspYearBatchGroupPersParam();
  136. persParam.setYearBatchId(yearBatchId);
  137. groupPersDao.deleteBy(persParam);
  138. /*TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  139. groupParam.setYearBatchId(yearBatchId);
  140. groupService.deleteBy(groupParam);
  141. TacInspYearBatchAreaParam areaParam = new TacInspYearBatchAreaParam();
  142. areaParam.setYearBatchId(yearBatchId);
  143. areaDao.deleteBy(areaParam);*/
  144. return 0;
  145. }
  146. @Override
  147. public TacCountDto getAllCountPers(TacInspYearBatchParam tacInspYearBatchParam) {
  148. TacCountDto tacCountDto = tacInspYearBatchDao.getAllCountPers(tacInspYearBatchParam);
  149. return tacCountDto;
  150. }
  151. @Override
  152. public int updateYearBatch(TacInspYearBatch tacInspYearBatch) {
  153. tacInspYearBatchDao.update(tacInspYearBatch);
  154. if (tacInspYearBatch.getGroupList() != null && tacInspYearBatch.getGroupList().size() > 0) {
  155. TacInspPersAreaPris pris = prisDao.get(tacInspYearBatch.getPersAreaId());
  156. if (pris != null && "1".equals(pris.getIsPorc())) {
  157. List<TacWorkerB> allTacWorker = new ArrayList<>();
  158. //优生列表
  159. if (pris.getSiBadPersNum()!= null && pris.getSiBadPersNum().intValue() > 0) {
  160. TacWorkerBParam bParam = new TacWorkerBParam();
  161. bParam.setYear(pris.getYear() - 1);
  162. bParam.setOrderBy("SYN_LOT");
  163. bParam.setProvince(tacInspYearBatch.getProvince());
  164. allTacWorker = workerBDao.getWorkerbsListByYear(bParam);
  165. }
  166. //差生列表
  167. if (pris.getSiGoodPersNum() != null && pris.getSiGoodPersNum().intValue() > 0) {
  168. if (allTacWorker == null) {
  169. TacWorkerBParam bParam = new TacWorkerBParam();
  170. bParam.setYear(pris.getYear() - 1);
  171. // bParam.setYearBatchId(pris.getYearBatchId());
  172. bParam.setOrderBy("SYN_LOT");
  173. bParam.setProvince(tacInspYearBatch.getProvince());
  174. allTacWorker = workerBDao.getWorkerbsListByYear(bParam);
  175. }
  176. }
  177. List<TacWorkerB> persList = new ArrayList<>();
  178. if (pris.getAvoidSize() != null && pris.getAvoidYrSize().intValue() > 0) {
  179. //得到前几年度的人员列表
  180. Long styr = pris.getYear() - pris.getAvoidSize();
  181. TacWorkerBParam bParam = new TacWorkerBParam();
  182. bParam.setStyr(styr);
  183. bParam.setEnyr(pris.getYear());
  184. bParam.setProvince(tacInspYearBatch.getProvince());
  185. persList.addAll(workerBDao.getWorkerList(bParam));
  186. }
  187. //处理批次
  188. if (pris.getAvoidSize() != null && pris.getAvoidSize().intValue() > 0) {
  189. TacWorkerBParam bParam = new TacWorkerBParam();
  190. if (pris.getAvoidSize() > pris.getBatch()) {
  191. bParam.setStba(new Long(0));
  192. } else {
  193. bParam.setStba(pris.getBatch() - pris.getAvoidSize());
  194. }
  195. bParam.setEnba(pris.getBatch());
  196. bParam.setProvince(tacInspYearBatch.getProvince());
  197. persList.addAll(workerBDao.getWorkerList(bParam));
  198. }
  199. for (TacInspYearBatchGroup tacInspYearBatchGroup : tacInspYearBatch.getGroupList()) {
  200. tacInspYearBatchGroup.setDataStat("0");
  201. tacInspYearBatchGroup.setPris("正常");
  202. if (tacInspYearBatchGroup.getWorkersList() != null || tacInspYearBatchGroup.getWorkersList().size() > 0) {
  203. if (persList.size() > 0) {
  204. tacInspYearBatchGroup.getWorkersList().forEach(tacWorkerB -> {
  205. if (persList.contains(tacWorkerB)) {
  206. tacInspYearBatchGroup.setDataStat("1");
  207. tacInspYearBatchGroup.setPris("违反年度和批次原则");
  208. }
  209. });
  210. }
  211. if (!"1".equals(tacInspYearBatchGroup.getDataStat())) {
  212. vertifiArea(pris,tacInspYearBatchGroup,allTacWorker);
  213. }
  214. }
  215. groupService.update(tacInspYearBatchGroup);
  216. }
  217. } else {
  218. tacInspYearBatch.getGroupList().forEach(tacInspYearBatchGroup -> {
  219. tacInspYearBatchGroup.setDataStat("0");
  220. tacInspYearBatchGroup.setPris("正常");
  221. groupService.update(tacInspYearBatchGroup);
  222. });
  223. }
  224. }
  225. return 0;
  226. }
  227. private void vertifiArea(TacInspPersAreaPris pris, TacInspYearBatchGroup tacInspYearBatchGroup, List<TacWorkerB> allTacWorker) {
  228. if ("1".equals(pris.getIsArea())){
  229. List<TacInspYearBatchArea> areaList = tacInspYearBatchGroup.getAreaList();
  230. for (TacWorkerB workerB : tacInspYearBatchGroup.getWorkersList()) {
  231. if ("1".equals(tacInspYearBatchGroup.getDataStat())) {
  232. break;
  233. }
  234. for (TacInspYearBatchArea area : areaList) {
  235. if (area.getAdCode().equals(workerB.getWorkAd())) {
  236. tacInspYearBatchGroup.setPris("工作地原则不符合");
  237. tacInspYearBatchGroup.setDataStat("1");
  238. break;
  239. }
  240. }
  241. }
  242. }
  243. if (!"1".equals(tacInspYearBatchGroup.getDataStat())) {
  244. vertifiSex(pris,tacInspYearBatchGroup,allTacWorker);
  245. }
  246. }
  247. private void vertifiSex(TacInspPersAreaPris pris, TacInspYearBatchGroup tacInspYearBatchGroup, List<TacWorkerB> allTacWorker) {
  248. if (pris.getSiNvPersNum() != null && pris.getSiNvPersNum() != 0) {
  249. int sexNum = (int)(tacInspYearBatchGroup.getWorkersList().size()*pris.getSiNvPersNum());
  250. int index = 0;
  251. for (TacWorkerB workerB : tacInspYearBatchGroup.getWorkersList()) {
  252. if (index > sexNum) {
  253. tacInspYearBatchGroup.setDataStat("1");
  254. tacInspYearBatchGroup.setPris("不符合女性百分比原则");
  255. break;
  256. }
  257. if ("女".equals(workerB.getSex())){
  258. index ++;
  259. }
  260. }
  261. }
  262. if(!"1".equals(tacInspYearBatchGroup.getDataStat())) {
  263. vertifiGroupPers(pris,tacInspYearBatchGroup,allTacWorker);
  264. }
  265. }
  266. /**
  267. * 确认同组人数
  268. * @param pris
  269. * @param tacInspYearBatchGroup
  270. * @param allTacWorker
  271. */
  272. private void vertifiGroupPers(TacInspPersAreaPris pris, TacInspYearBatchGroup tacInspYearBatchGroup, List<TacWorkerB> allTacWorker) {
  273. if (pris.getSiSaPersNum() != null && pris.getSiSaPersNum().intValue() > 0) {
  274. Map<String,List<TacWorkerB>> map = new HashedMap();
  275. tacInspYearBatchGroup.getWorkersList().forEach(tacWorkerB -> {
  276. if (map.keySet().contains(tacWorkerB.getWorkAd())) {
  277. map.get(tacWorkerB.getWorkAd()).add(tacWorkerB);
  278. } else {
  279. List<TacWorkerB> list = new ArrayList<>();
  280. list.add(tacWorkerB);
  281. map.put(tacWorkerB.getWorkAd(),list);
  282. }
  283. });
  284. for (List<TacWorkerB> bs : map.values()) {
  285. if (bs.size() > pris.getSiSaPersNum().intValue()) {
  286. tacInspYearBatchGroup.setDataStat("1");
  287. tacInspYearBatchGroup.setPris("不符合同组工作地原则");
  288. break;
  289. }
  290. }
  291. }
  292. if (!"1".equals(tacInspYearBatchGroup.getDataStat())) {
  293. vertifiGold(pris,tacInspYearBatchGroup,allTacWorker);
  294. }
  295. }
  296. /**
  297. * 确认分数
  298. * @param pris
  299. * @param tacInspYearBatchGroup
  300. * @param allTacWorker
  301. */
  302. private void vertifiGold(TacInspPersAreaPris pris, TacInspYearBatchGroup tacInspYearBatchGroup, List<TacWorkerB> allTacWorker) {
  303. List<TacWorkerB> list = tacInspYearBatchGroup.getWorkersList();
  304. if (allTacWorker == null || allTacWorker.size() == 0) {
  305. return;
  306. }
  307. if (pris.getSiBadPersNum() != null && pris.getSiBadPersNum().intValue() > 0) {
  308. int badIndex = 0;
  309. for (TacWorkerB tacWorkerB : list) {
  310. if (allTacWorker.indexOf(tacWorkerB) > 0 && allTacWorker.indexOf(tacWorkerB) < allTacWorker.size() * 0.2) {
  311. badIndex++;
  312. }
  313. }
  314. if (badIndex > pris.getSiBadPersNum().intValue()) {
  315. tacInspYearBatchGroup.setPris("不符合差生原则");
  316. tacInspYearBatchGroup.setDataStat("1");
  317. }
  318. }
  319. if (!"1".equals(tacInspYearBatchGroup.getDataStat())) {
  320. if (pris.getSiGoodPersNum() != null && pris.getSiGoodPersNum().intValue() > 0) {
  321. int goodIndex = 0;
  322. for (TacWorkerB tacWorkerB : list) {
  323. if (allTacWorker.indexOf(tacWorkerB) > 0 && allTacWorker.indexOf(tacWorkerB) > allTacWorker.size() * 0.8) {
  324. goodIndex++;
  325. }
  326. }
  327. if (goodIndex > pris.getSiGoodPersNum().intValue()) {
  328. tacInspYearBatchGroup.setPris("不符合优秀生原则");
  329. tacInspYearBatchGroup.setDataStat("1");
  330. }
  331. }
  332. }
  333. }
  334. @Override
  335. public int deleteYearBatchAllObj(String yearBatchId,String province) {
  336. // 判断批次是否分配项目
  337. TacInspYearBatchObjParam tacInspYearBatchObjParam = new TacInspYearBatchObjParam();
  338. tacInspYearBatchObjParam.setYearBatchId(yearBatchId);
  339. tacInspYearBatchObjParam.setProvince(province);
  340. List<TacInspYearBatchObj> batchObjList = tacInspYearBatchObjDao.findList(tacInspYearBatchObjParam);
  341. if(null != batchObjList && batchObjList.size()>0){
  342. throw new CheckException("批次组中已分配项目,请先删除批次中的项目!!!");
  343. }
  344. TacInspYearBatchGroupPersParam persParam = new TacInspYearBatchGroupPersParam();
  345. persParam.setYearBatchId(yearBatchId);
  346. groupPersDao.deleteBy(persParam);
  347. TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  348. groupParam.setYearBatchId(yearBatchId);
  349. groupService.deleteBy(groupParam);
  350. TacInspYearBatchAreaParam areaParam = new TacInspYearBatchAreaParam();
  351. areaParam.setYearBatchId(yearBatchId);
  352. areaParam.setProvince(province);
  353. areaDao.deleteBy(areaParam);
  354. this.tacInspYearBatchDao.delete(yearBatchId);
  355. // this.cleanAllObjByYearBatchId(yearBatchId);
  356. return 0;
  357. }
  358. @Override
  359. public TacInspYearBatch getCurrTacInspBatch(TacInspYearBatchParam tacInspYearBatchParam) {
  360. tacInspYearBatchParam.setDataStat("0");
  361. List<TacInspYearBatch> list = tacInspYearBatchDao.getTacInspYearBatchList(tacInspYearBatchParam);
  362. if (list.size() > 0) {
  363. TacInspYearBatch tacInspYearBatch = list.get(0);
  364. TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  365. groupParam.setYearBatchId(tacInspYearBatch.getId());
  366. groupParam.setProvince(tacInspYearBatchParam.getProvince());
  367. tacInspYearBatch.setGroupList(groupService.getGroupListAndObj(groupParam));
  368. return tacInspYearBatch;
  369. }
  370. return null;
  371. }
  372. @Override
  373. public List<TacInspYearBatch> getTacInspBatchByPersId(TacInspYearBatchParam tacInspYearBatchParam) {
  374. List<TacInspYearBatch> list = tacInspYearBatchDao.getTacInspBatchByPersId(tacInspYearBatchParam);
  375. if (list.size() > 0) {
  376. for (TacInspYearBatch batch : list) {
  377. batch.setFlag("batch");
  378. TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  379. groupParam.setYearBatchId(batch.getId());
  380. groupParam.setPersId(tacInspYearBatchParam.getPersId());
  381. List<TacInspYearBatchGroup> groupList = groupService.getGroupListByPersId(groupParam);
  382. batch.setGroupList(groupList);
  383. }
  384. }
  385. return list;
  386. }
  387. @Override
  388. public List<TacInspYearBatch> getBatchList(TacInspYearBatchParam tacInspYearBatchParam) {
  389. List<TacInspYearBatch> list = tacInspYearBatchDao.getBatchList(tacInspYearBatchParam);
  390. // if (list.size() > 0) {
  391. // list.forEach(tacInspYearBatch -> {
  392. // //获取稽察人员列表
  393. // TacWorkerBParam tacWorkerBParam = new TacWorkerBParam();
  394. // tacWorkerBParam.setYearBatchId(tacInspYearBatch.getId());
  395. // List<TacWorkerB> workerBList = this.workerBDao.getWorkerbsListById(tacWorkerBParam);
  396. // tacInspYearBatch.setWorkersList(workerBList);
  397. // //获取组列表
  398. // TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  399. // groupParam.setYearBatchId(tacInspYearBatch.getId());
  400. // List<TacInspYearBatchGroup> groupList = groupService.getGroupList(groupParam);
  401. // tacInspYearBatch.setGroupList(groupList);
  402. // });
  403. // }
  404. return list;
  405. }
  406. @Override
  407. public PageInfo<TacInspYearBatch> getBatchPage(TacInspYearBatchParam tacInspYearBatchParam) {
  408. PageHelper.startPage(tacInspYearBatchParam);
  409. List<TacInspYearBatch> list = tacInspYearBatchDao.getBatchList(tacInspYearBatchParam);
  410. PageInfo<TacInspYearBatch> pageInfo = new PageInfo<>(list);
  411. return pageInfo;
  412. }
  413. @Override
  414. public List<TacCountDto> countGroupAndPers(TacInspYearBatchParam tacInspYearBatchParam) {
  415. if (StringUtils.isNotBlank(tacInspYearBatchParam.getAdCode())) {
  416. tacInspYearBatchParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(tacInspYearBatchParam.getAdCode()).get(SplitValue.SUBAD)));
  417. }
  418. List<TacCountDto> list = tacInspYearBatchDao.countGroupAndPers(tacInspYearBatchParam);
  419. return list;
  420. }
  421. @Override
  422. public List<TacCountDto> countRoleTypeAndPers(TacInspYearBatchParam tacInspYearBatchParam) {
  423. if (StringUtils.isNotBlank(tacInspYearBatchParam.getAdCode())) {
  424. tacInspYearBatchParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(tacInspYearBatchParam.getAdCode()).get(SplitValue.SUBAD)));
  425. }
  426. List<TacCountDto> list = tacInspYearBatchDao.countRoleTypeAndPers(tacInspYearBatchParam);
  427. return list;
  428. }
  429. @Override
  430. public List<TacCountDto> countArea(TacInspYearBatchParam tacInspYearBatchParam) {
  431. if (StringUtils.isNotBlank(tacInspYearBatchParam.getAdCode())) {
  432. tacInspYearBatchParam.setAdCode(String.valueOf(AdLevelUtil.SubAd(tacInspYearBatchParam.getAdCode()).get(SplitValue.SUBAD)));
  433. }
  434. List<TacCountDto> list = tacInspYearBatchDao.countArea(tacInspYearBatchParam);
  435. return list;
  436. }
  437. @Override
  438. public Map<String,Object> uploadAuditExcel(MultipartFile file, TacInspYearBatchParam tacInspYearBatchParam) {
  439. int success = 0;
  440. int fail = 0;
  441. List<Row> rowList = ExportUtil.getRowListByFile(file);
  442. List<Object> list = new ArrayList<>();
  443. if (rowList.size() > 2) {
  444. List<Map<String,Object>> mapList = ExportUtil.rowToMap(rowList, 1);
  445. if (mapList.size() > 0) {
  446. list = ExportUtil.mapToObj(mapList, TacInspYearBatchGroupAuditDto.class);
  447. }
  448. }
  449. if (list.size() > 0) {
  450. for (Object obj : list) {
  451. if (obj instanceof TacInspYearBatchGroupAuditDto) {
  452. TacInspYearBatchGroupAuditDto dto = (TacInspYearBatchGroupAuditDto) obj;
  453. if (StringUtils.isBlank(dto.getYear()) && StringUtils.isBlank(dto.getBatch())) {
  454. continue;
  455. }
  456. if (StringUtils.isBlank(dto.getYear()) || StringUtils.isBlank(dto.getBatch())) {
  457. fail++;
  458. continue;
  459. }
  460. TacInspYearBatchParam param = new TacInspYearBatchParam();
  461. param.setYear(Long.valueOf(dto.getYear()));
  462. param.setBatch(Long.valueOf(dto.getBatch()));
  463. param.setProvince(tacInspYearBatchParam.getProvince());
  464. TacInspYearBatch batch = tacInspYearBatchDao.getBy(param);
  465. if (batch == null) {
  466. batch = new TacInspYearBatch();
  467. batch.setId(UuidUtil.uuid());
  468. batch.setYear(Long.valueOf(dto.getYear()));
  469. batch.setBatch(Long.valueOf(dto.getBatch()));
  470. batch.setIsAreaGroup("2");
  471. batch.setIsPersGroup("2");
  472. batch.setIsAppraisal("2");
  473. batch.setInTm(new Date());
  474. batch.setUpTm(new Date());
  475. batch.setDataStat("0");
  476. batch.setProvince(tacInspYearBatchParam.getProvince());
  477. batch.setPersId(tacInspYearBatchParam.getPersId());
  478. tacInspYearBatchDao.insert(batch);
  479. } else {
  480. batch.setUpTm(new Date());
  481. tacInspYearBatchDao.update(batch);
  482. }
  483. batch.setProvince(tacInspYearBatchParam.getProvince());
  484. TacInspYearBatchGroup group = null;
  485. if (StringUtils.isNotBlank(dto.getGroupNm())){
  486. TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  487. groupParam.setGroupNm(Long.valueOf(dto.getGroupNm()));
  488. groupParam.setYearBatchId(batch.getId());
  489. group = groupService.getBy(groupParam);
  490. if (group == null) {
  491. //新增
  492. group = addGroup(batch, dto.getGroupNm(), dto.getRemark(), dto.getAudUnits(), dto.getAudCategory());
  493. group.setProvince(tacInspYearBatchParam.getProvince());
  494. tacInspYearBatchGroupDao.insert(group);
  495. } else {
  496. group.setUpTm(new Date());
  497. group.setRemark(dto.getRemark());
  498. group.setAudUnits(dto.getAudUnits());
  499. group.setAudCategory(dto.getAudCategory());
  500. group.setProvince(tacInspYearBatchParam.getProvince());
  501. tacInspYearBatchGroupDao.update(group);
  502. }
  503. } else {
  504. TacInspYearBatchGroupParam groupParam = new TacInspYearBatchGroupParam();
  505. groupParam.setYearBatchId(batch.getId());
  506. String groupNum = tacInspYearBatchGroupDao.getMaxGourpNum(groupParam);
  507. if(StringUtils.isBlank(groupNum)){
  508. groupNum="1";
  509. }
  510. //新增
  511. group = addGroup(batch, groupNum, dto.getRemark(), dto.getAudUnits(), dto.getAudCategory());
  512. group.setProvince(tacInspYearBatchParam.getProvince());
  513. tacInspYearBatchGroupDao.insert(group);
  514. }
  515. if (StringUtils.isNotBlank(dto.getAreaList())) {
  516. addAreaList(group,dto.getAreaList());
  517. }
  518. if (StringUtils.isNotBlank(dto.getRgstrList())) {
  519. addRgstrList(group, dto.getRgstrList());
  520. }
  521. group.setProvince(tacInspYearBatchParam.getProvince());
  522. addWorkerList("20",dto.getSpecial(),group);
  523. addWorkerList("19",dto.getAssistant(),group);
  524. addWorkerList("11",dto.getEarlyTis(),group);
  525. addWorkerList("12",dto.getDevemanageTis(),group);
  526. addWorkerList("13",dto.getPlanTis(),group);
  527. addWorkerList("14",dto.getFinanceTis(),group);
  528. addWorkerList("15",dto.getQualityTis(),group);
  529. addWorkerList("16",dto.getSafetyTis(),group);
  530. success++;
  531. }
  532. }
  533. }
  534. Map<String, Object> map = new HashedMap();
  535. map.put("success", success);
  536. map.put("fail", fail);
  537. return map;
  538. }
  539. private void addWorkerList(String roleType, String names, TacInspYearBatchGroup group) {
  540. if (StringUtils.isBlank(names)) {
  541. return;
  542. }
  543. TacInspYearBatchGroupPersParam bParam = new TacInspYearBatchGroupPersParam();
  544. bParam.setYearBatchId(group.getId());
  545. bParam.setRoleType(roleType);
  546. bParam.setProvince(group.getProvince());
  547. List<TacInspYearBatchGroupPers> list = groupPersDao.getGroupPersList(bParam);
  548. Map<String, TacInspYearBatchGroupPers> map = list.stream().collect(Collectors.toMap(TacInspYearBatchGroupPers::getPersName, Function.identity()));
  549. if (names.contains(",")) {
  550. for (String name : names.split(",")) {
  551. addGroupPers(roleType, name, group, map);
  552. }
  553. } else {
  554. addGroupPers(roleType, names, group, map);
  555. }
  556. }
  557. /**
  558. * add a groupPers
  559. * @param roleType
  560. * @param name
  561. * @param group
  562. * @param map
  563. */
  564. private void addGroupPers(String roleType, String name, TacInspYearBatchGroup group, Map<String, TacInspYearBatchGroupPers> map) {
  565. name = name.trim();
  566. if (!map.containsKey(name)) {
  567. TacWorkerBParam bParam = new TacWorkerBParam();
  568. bParam.setRoleType(roleType);
  569. bParam.setName(name);
  570. bParam.setProvince(group.getProvince());
  571. TacWorkerB b = workerBDao.getBy(bParam);
  572. if (b != null) {
  573. TacInspYearBatchGroupPers groupPers = new TacInspYearBatchGroupPers();
  574. groupPers.setId(UuidUtil.uuid());
  575. groupPers.setYearBatchId(group.getYearBatchId());
  576. groupPers.setYear(group.getYear());
  577. groupPers.setBatch(group.getBatch());
  578. groupPers.setGroupId(group.getId());
  579. groupPers.setGroupNm(group.getGroupNm());
  580. groupPers.setPersId(b.getId());
  581. groupPers.setCtPersId(group.getPersId());
  582. groupPers.setInTm(new Date());
  583. groupPers.setUpTm(new Date());
  584. groupPers.setRoleType(roleType);
  585. groupPersDao.insert(groupPers);
  586. map.put(name, groupPers);
  587. }
  588. } else {
  589. TacInspYearBatchGroupPers groupPers = map.get(name);
  590. groupPers.setUpTm(new Date());
  591. if (!groupPers.getGroupId().equals(group.getId())) {
  592. groupPers.setGroupNm(group.getGroupNm());
  593. groupPers.setGroupId(group.getId());
  594. }
  595. groupPersDao.update(groupPers);
  596. }
  597. }
  598. private void addRgstrList(TacInspYearBatchGroup group, String rgstrList) {
  599. TacInspYearBatchObjParam param = new TacInspYearBatchObjParam();
  600. param.setGroupId(group.getId());
  601. List<TacInspYearBatchObj> list = objDao.findList(param);
  602. Map<String, TacInspYearBatchObj> map = list.stream().collect(Collectors.toMap(TacInspYearBatchObj::getOjbNm, Function.identity()));
  603. if (rgstrList.contains(",")){
  604. for (String name : rgstrList.split(",")) {
  605. addRgstr(name, group, map);
  606. }
  607. } else {
  608. addRgstr(rgstrList, group, map);
  609. }
  610. }
  611. /**
  612. * add a obj
  613. * @param name
  614. * @param group
  615. * @param map
  616. */
  617. private void addRgstr(String name, TacInspYearBatchGroup group, Map<String, TacInspYearBatchObj> map) {
  618. if (StringUtils.isBlank(name)) {
  619. return;
  620. }
  621. name = name.trim();
  622. if (!map.containsKey(name)) {
  623. TacAttPawpBaseParam baseParam = new TacAttPawpBaseParam();
  624. baseParam.setName(name);
  625. List<TacAttPawpBase> baseList = pawpBaseDao.findList(baseParam);
  626. if (baseList.size() == 0) {
  627. return;
  628. }
  629. TacAttPawpBase base = baseList.get(0);
  630. TacInspYearBatchObj obj = new TacInspYearBatchObj();
  631. obj.setId(UuidUtil.uuid());
  632. obj.setYearBatchId(group.getYearBatchId());
  633. obj.setYear(group.getYear());
  634. obj.setBatch(group.getBatch());
  635. obj.setGroupId(group.getId());
  636. obj.setGroupNm(group.getGroupNm());
  637. obj.setOjbId(base.getId());
  638. obj.setOjbNm(name);
  639. obj.setInTm(new Date());
  640. obj.setUpTm(new Date());
  641. obj.setPersId(group.getPersId());
  642. obj.setDataStat("0");
  643. objDao.insert(obj);
  644. TacPawpRgstr rgstr = new TacPawpRgstr();
  645. BeanUtil.copyObject1(base,rgstr);
  646. rgstr.setGroupId(group.getId());
  647. rgstr.setId(UuidUtil.uuid());
  648. rgstr.setObjId(obj.getId());
  649. rgstr.setDataStat("0");
  650. rgstr.setIntm(new Date());
  651. rgstr.setUptm(new Date());
  652. pawpRgstrDao.insert(rgstr);
  653. map.put(name, obj);
  654. } else {
  655. TacInspYearBatchObj obj = map.get(name);
  656. obj.setUpTm(new Date());
  657. objDao.update(obj);
  658. TacPawpRgstrParam rgstrParam = new TacPawpRgstrParam();
  659. rgstrParam.setObjId(obj.getId());
  660. List<TacPawpRgstr> rgstrList = pawpRgstrDao.findList(rgstrParam);
  661. if (rgstrList.size() > 0) {
  662. TacPawpRgstr rgstr = rgstrList.get(0);
  663. rgstr.setUptm(new Date());
  664. pawpRgstrDao.update(rgstr);
  665. }
  666. }
  667. }
  668. private void addAreaList(TacInspYearBatchGroup group, String areaList) {
  669. TacInspYearBatchAreaParam areaParam = new TacInspYearBatchAreaParam();
  670. areaParam.setGroupId(group.getId());
  671. List<TacInspYearBatchArea> list = areaDao.findList(areaParam);
  672. Map<String, TacInspYearBatchArea> map = list.stream().collect(Collectors.toMap(TacInspYearBatchArea::getAdName, Function.identity()));
  673. if (areaList.contains(",")){
  674. for (String area : areaList.split(",")) {
  675. addArea(group, area, map);
  676. }
  677. } else {
  678. addArea(group, areaList, map);
  679. }
  680. }
  681. /**
  682. * add a area
  683. * @param group
  684. * @param area
  685. * @param map
  686. */
  687. private void addArea(TacInspYearBatchGroup group, String area, Map<String,TacInspYearBatchArea> map) {
  688. area = area.trim();
  689. if (!map.containsKey(area)) {
  690. AttAdXBaseParam baseParam = new AttAdXBaseParam();
  691. baseParam.setAdName(area);
  692. AttAdXBase base = attAdXBaseDao.getBy(baseParam);
  693. if (base != null) {
  694. TacInspYearBatchArea batchArea = new TacInspYearBatchArea();
  695. batchArea.setId(UuidUtil.uuid());
  696. batchArea.setYear(group.getYear());
  697. batchArea.setBatch(group.getBatch());
  698. batchArea.setYearBatchId(group.getYearBatchId());
  699. batchArea.setGroupId(group.getId());
  700. batchArea.setGroupNm(group.getGroupNm());
  701. batchArea.setAdCode(base.getAdCode());
  702. batchArea.setAdName(area);
  703. batchArea.setInTm(new Date());
  704. batchArea.setUpTm(new Date());
  705. batchArea.setDataStat("0");
  706. batchArea.setPersId(group.getPersId());
  707. map.put(area, batchArea);
  708. areaDao.insert(batchArea);
  709. }
  710. } else {
  711. TacInspYearBatchArea batchArea = map.get(area);
  712. batchArea.setUpTm(new Date());
  713. areaDao.update(batchArea);
  714. }
  715. }
  716. private TacInspYearBatchGroup addGroup(TacInspYearBatch batch, String groupNm, String remark, String audUnits, String audCategory) {
  717. TacInspYearBatchGroup group = new TacInspYearBatchGroup();
  718. group.setId(UuidUtil.uuid());
  719. group.setYear(batch.getYear());
  720. group.setBatch(batch.getBatch());
  721. group.setYearBatchId(batch.getId());
  722. group.setGroupNm(Long.valueOf(groupNm));
  723. group.setRemark(remark);
  724. group.setAudUnits(audUnits);
  725. group.setAudCategory(audCategory);
  726. group.setInTm(new Date());
  727. group.setUpTm(new Date());
  728. group.setPersId(batch.getPersId());
  729. group.setProvince(batch.getProvince());
  730. group.setConfirmer("0");
  731. tacInspYearBatchGroupDao.insert(group);
  732. return group;
  733. }
  734. }