EsmAgreementController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. package com.ydtech.modules.esm.controller;
  2. import com.ydtech.core.page.HttpResult;
  3. import com.ydtech.core.page.PageRequest;
  4. import com.ydtech.core.page.PageResult;
  5. import com.ydtech.modules.base.controller.BaseController;
  6. import com.ydtech.modules.esm.model.*;
  7. import com.ydtech.modules.esm.service.*;
  8. import com.ydtech.utils.idgen.IdGenerate;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.web.bind.annotation.*;
  11. import java.util.ArrayList;
  12. import java.util.Date;
  13. import java.util.List;
  14. @RestController
  15. @RequestMapping("esmAgreement")
  16. public class EsmAgreementController extends BaseController {
  17. @Autowired
  18. EsmAgreementService esmAgreementService;
  19. @Autowired
  20. EsmAgreementProdService esmAgreementProdService;
  21. @Autowired
  22. EsmAgreementProdfeeService esmAgreementProdfeeService;
  23. @Autowired
  24. EsmInsCompanyService esmInsCompanyService;
  25. @Autowired
  26. EsmAgreementTeamfeeService esmAgreementTeamfeeService;
  27. @Autowired
  28. EsmAgreementCheckhistoryService esmAgreementCheckhistoryService;
  29. // /**
  30. // * 保存协议信息
  31. // * @param record
  32. // * @return
  33. // */
  34. // @PostMapping(value="/saveAgreement")
  35. // public HttpResult save(@RequestBody EsmAgreement record) {
  36. // Integer result = 0;
  37. // String msg = "保存成功";
  38. // if(record.getId()==null || record.getId().isEmpty()){
  39. //// record.setAgreestatus("1");
  40. // String id = IdGenerate.nextId();
  41. // record.setId(id);
  42. // record.setCreator(getUserName());
  43. // record.setCreatetime(new Date());
  44. // record.setUpdateby(getUserName());
  45. // record.setUpdatetime(new Date());
  46. // result = esmAgreementService.insertSelective(record);
  47. //
  48. // List<EsmAgreementProd> list = record.getAgreementProds();
  49. // for(EsmAgreementProd prod : list){
  50. // prod.setId(IdGenerate.nextId());
  51. // prod.setAgreeid(id);
  52. // esmAgreementProdService.insertSelective(prod);
  53. // }
  54. //
  55. // } else {
  56. // record.setCreator(null);
  57. // record.setUpdateby(getUserName());
  58. // record.setUpdatetime(new Date());
  59. // result = esmAgreementService.updateSelective(record);
  60. //
  61. // List<EsmAgreementProd> list = record.getAgreementProds();
  62. // for(EsmAgreementProd prod : list){
  63. // esmAgreementProdService.updateSelective(prod);
  64. // }
  65. // }
  66. //
  67. // return HttpResult.ok(msg, result);
  68. // }
  69. /**
  70. * 费用授权
  71. *
  72. * @param record
  73. * @return
  74. */
  75. @PostMapping(value = "/saveAgreementAuth")
  76. public HttpResult save(@RequestBody EsmAgreement record) {
  77. Integer result = 0;
  78. String msg = "保存成功";
  79. List<EsmAgreementProd> list = record.getAgreementProds();
  80. for (EsmAgreementProd prod : list) {
  81. esmAgreementProdService.updateSelective(prod);
  82. result++;
  83. }
  84. return HttpResult.ok(msg, result);
  85. }
  86. /**
  87. * 保存协议费用信息
  88. *
  89. * @param record
  90. * @return
  91. */
  92. @PostMapping(value = "/saveProdFee")
  93. public HttpResult saveProdFee(@RequestBody EsmAgreement record) {
  94. Integer result = 0;
  95. String msg = "保存成功";
  96. List<EsmAgreementProd> list = record.getAgreementProds();
  97. for (EsmAgreementProd prod : list) {
  98. result = esmAgreementProdService.updateSelective(prod);//设置产品佣金信息
  99. }
  100. //设置管理费用信息
  101. List<EsmAgreementProdfee> prodfees = record.getProdfees();
  102. for (EsmAgreementProdfee prodfee : prodfees) {
  103. if (prodfee.getId() == null || prodfee.getId().isEmpty()) {
  104. prodfee.setId(IdGenerate.nextId());
  105. prodfee.setCreator(getUserName());
  106. prodfee.setCreatetime(new Date());
  107. prodfee.setUpdateby(getUserName());
  108. prodfee.setUpdatetime(new Date());
  109. result = esmAgreementProdfeeService.insertSelective(prodfee);
  110. } else {
  111. prodfee.setCreator(null);
  112. prodfee.setUpdateby(getUserName());
  113. prodfee.setUpdatetime(new Date());
  114. result = esmAgreementProdfeeService.updateSelective(prodfee);
  115. }
  116. }
  117. return HttpResult.ok(msg, result);
  118. }
  119. /**
  120. * 保存团队费用信息
  121. *
  122. * @param record
  123. * @return
  124. */
  125. @PostMapping(value = "/saveTeamFee")
  126. public HttpResult saveTeamFee(@RequestBody List<EsmAgreementTeamfee> record) {
  127. Integer result = 0;
  128. String msg = "保存成功";
  129. for (EsmAgreementTeamfee teamFee : record) {
  130. if (teamFee.getId() == null || teamFee.getId().isEmpty()) {
  131. teamFee.setId(IdGenerate.nextId());
  132. teamFee.setCreator(getUserName());
  133. teamFee.setCreatetime(new Date());
  134. teamFee.setUpdateby(getUserName());
  135. teamFee.setUpdatetime(new Date());
  136. result = esmAgreementTeamfeeService.insertSelective(teamFee);//设置团队佣金信息
  137. } else {
  138. teamFee.setUpdateby(getUserName());
  139. teamFee.setUpdatetime(new Date());
  140. result = esmAgreementTeamfeeService.updateSelective(teamFee);
  141. }
  142. }
  143. return HttpResult.ok(msg, result);
  144. }
  145. /**
  146. * 查询协议团队费用信息
  147. *
  148. * @param teamcode
  149. * @param agreeid
  150. * @return
  151. */
  152. @PostMapping(value = "/queryTeamFee")
  153. public HttpResult queryTeamFee(@RequestParam String teamcode, @RequestParam String agreeid) {
  154. StringBuffer whereStr = new StringBuffer(" where 1=1 ");
  155. if (teamcode == null) teamcode = "";
  156. whereStr.append(" and teamcode = ?");
  157. whereStr.append(" and agreeid = ?");
  158. //传入查询条件
  159. List<EsmAgreementTeamfee> selectList = esmAgreementTeamfeeService.selectList(whereStr.toString(), new Object[]{teamcode, agreeid});
  160. return HttpResult.ok(selectList);
  161. }
  162. /**
  163. * 查询团队所属机构相匹配的协议(协议授权机构包含团队机构)
  164. *
  165. * @param comcode
  166. * @return
  167. */
  168. @PostMapping(value = "/queryAuthAgreement")
  169. public HttpResult queryAuthAgreement(@RequestParam String comcode) {
  170. StringBuffer whereStr = new StringBuffer(" where 1=1 ");
  171. if (comcode == null) comcode = "99";
  172. whereStr.append(" and t.id in (SELECT a.agreeid FROM esm_agreement_prod a where a.authcomcode=left(?,length(a.authcomcode)))");
  173. //传入查询条件
  174. List<EsmAgreement> selectList = esmAgreementService.selectList(whereStr.toString(), new Object[]{comcode});
  175. return HttpResult.ok(selectList);
  176. }
  177. /**
  178. * 基础分页查询
  179. *
  180. * @param pageRequest
  181. * @return
  182. */
  183. @PostMapping(value = "/findPage")
  184. public HttpResult findPage(@RequestBody PageRequest pageRequest) {
  185. // return HttpResult.ok(esmTeamService.findPage(pageRequest));
  186. int pageNum = pageRequest.getPageNum();
  187. int pageSize = pageRequest.getPageSize();
  188. String comcode = pageRequest.getColumnFilterValue(pageRequest, "comcode"); // 所属机构
  189. String inscode = pageRequest.getColumnFilterValue(pageRequest, "inscode"); // 保险公司
  190. String insshortcode = pageRequest.getColumnFilterValue(pageRequest, "insshortcode"); // 保险公司简称
  191. String startdate = pageRequest.getColumnFilterValue(pageRequest, "startdate"); // 开始时间
  192. String enddate = pageRequest.getColumnFilterValue(pageRequest, "enddate"); // 截止时间
  193. String status = pageRequest.getColumnFilterValue(pageRequest, "status"); // 协议状态
  194. String feestatus = pageRequest.getColumnFilterValue(pageRequest, "feestatus"); // 费用状态
  195. String feeflag = pageRequest.getColumnFilterValue(pageRequest, "feeflag"); // 费用标志
  196. String productid = pageRequest.getColumnFilterValue(pageRequest, "productid"); // 产品代码
  197. String cancity = pageRequest.getColumnFilterValue(pageRequest, "cancity"); // 可承保城市
  198. StringBuffer whereStr = new StringBuffer(" where 1=1");
  199. ArrayList array = new ArrayList();
  200. if (comcode != null && comcode.length() > 0) {
  201. whereStr.append(" and comcode=?");
  202. array.add(comcode);
  203. }
  204. if (inscode != null && inscode.length() > 0) {
  205. whereStr.append(" and (insure1=? or insure2=? or insure3=? or insure4=?)");
  206. array.add(inscode);
  207. array.add(inscode);
  208. array.add(inscode);
  209. array.add(inscode);
  210. }
  211. if (insshortcode != null && insshortcode.length() > 0) {
  212. whereStr.append(" and insureshort=?");
  213. array.add(insshortcode);
  214. }
  215. if (status != null && status.length() > 0) {
  216. //99 时查全部失效协议
  217. if (status.indexOf("99") >= 0 && status.length() == 2) {
  218. whereStr.append(" and (current_date > t.enddate or current_date < t.startdate)");
  219. } else if (status.indexOf("99") >= 0 && status.length() > 2) {
  220. // whereStr.append(" and agreestatus in (?) and (current_date > t.enddate or current_date < t.startdate)");
  221. // array.add(status);
  222. String[] list = status.split(",");
  223. whereStr.append(" and agreestatus in (");
  224. for (String s : list) {
  225. whereStr.append("?,");
  226. array.add(s);
  227. }
  228. whereStr.deleteCharAt(whereStr.length() - 1);
  229. whereStr.append(") and (current_date > t.enddate or current_date < t.startdate)");
  230. } else {
  231. //else if(status.indexOf("99")<0){
  232. String[] list = status.split(",");
  233. whereStr.append(" and agreestatus in (");
  234. for (String s : list) {
  235. whereStr.append("?,");
  236. array.add(s);
  237. }
  238. whereStr.deleteCharAt(whereStr.length() - 1);
  239. whereStr.append(") and current_date between t.startdate and t.enddate");
  240. }
  241. }
  242. if (startdate != null && startdate.length() > 0) {
  243. whereStr.append(" and DATE_FORMAT(createtime, '%Y-%m-%d') >= date ?");
  244. array.add(startdate);
  245. }
  246. if (enddate != null && enddate.length() > 0) {
  247. whereStr.append(" and DATE_FORMAT(createtime, '%Y-%m-%d') <= date ?");
  248. array.add(enddate);
  249. }
  250. if (productid != null && productid.length() > 0) {
  251. whereStr.append(" and exists(select 1 from esm_agreement_prod t1 where t1.agreeid=t.id and t1.productid=?)");
  252. array.add(productid);
  253. }
  254. if (cancity != null && cancity.length() > 0) {
  255. whereStr.append(" and exists(select 1 from esm_agreement_prod t1 where t1.agreeid=t.id and t1.cancity like ?)");
  256. array.add("%" + cancity + "%");
  257. }
  258. if (feestatus != null && feestatus.length() > 0) {
  259. whereStr.append(" and exists(select 1 from esm_agreement_prodfee t1 where t1.agreementcode=t.id and t1.feestatus=?)");
  260. array.add(feestatus);
  261. }
  262. if ("1".equals(feeflag)) {
  263. whereStr.append(" and not exists(select 1 from esm_agreement_prodfee t1 where t1.agreementcode=t.id)");
  264. }
  265. //需要处理传入的部门
  266. PageResult pageResult = esmAgreementService.selectPaging(pageNum, pageSize, whereStr.toString(), array.toArray());
  267. List list = pageResult.getContent();
  268. List<EsmAgreement> agreeList = new ArrayList<EsmAgreement>();
  269. for (Object obj : list) {
  270. EsmAgreement agreement = (EsmAgreement) obj;
  271. List<EsmAgreementProd> prodList = esmAgreementProdService.selectList(" where agreeid=?", new Object[]{agreement.getId()});
  272. agreement.setAgreementProds(prodList);
  273. List<EsmAgreementProdfee> feeList = new ArrayList<EsmAgreementProdfee>();
  274. for (EsmAgreementProd prod : prodList) {
  275. List<EsmAgreementProdfee> prodfees = esmAgreementProdfeeService.selectList(" where agreeprodid=?", new Object[]{prod.getId()});
  276. feeList.addAll(prodfees);
  277. }
  278. agreement.setProdfees(feeList);
  279. agreeList.add(agreement);
  280. }
  281. pageResult.setContent(agreeList);
  282. return HttpResult.ok(pageResult);
  283. }
  284. /**
  285. * 根据主键查询
  286. *
  287. * @param id
  288. * @return
  289. */
  290. @GetMapping(value = "/findById")
  291. public HttpResult findById(@RequestParam String id) {
  292. EsmAgreement agreement = esmAgreementService.selectByPk(id);
  293. List<EsmAgreementProd> prodList = esmAgreementProdService.selectList(" where agreeid=?", new Object[]{id});
  294. List<EsmAgreementProdfee> feeList = new ArrayList<EsmAgreementProdfee>();
  295. for (EsmAgreementProd prod : prodList) {
  296. List<EsmAgreementProdfee> prodfees = esmAgreementProdfeeService.selectList(" where agreeprodid=?", new Object[]{prod.getId()});
  297. feeList.addAll(prodfees);
  298. }
  299. agreement.setAgreementProds(prodList);
  300. agreement.setProdfees(feeList);
  301. //最新的审核意见
  302. List<EsmAgreementCheckhistory> checkList = esmAgreementCheckhistoryService.selectList(" where agreeid=? order by checktime desc", new Object[]{id});
  303. if (checkList.size() > 0) {
  304. agreement.setRemark(checkList.get(0).getRemark());
  305. }
  306. return HttpResult.ok(agreement);
  307. }
  308. /**
  309. * 删除协议
  310. *
  311. * @param id
  312. * @return
  313. */
  314. @PostMapping(value = "/deleteAgreement")
  315. public HttpResult delete(@RequestParam String id) {
  316. Integer result = 0;
  317. String msg = "删除成功";
  318. if (id != null && id.length() > 0) {
  319. result = esmAgreementService.delete(id);
  320. //删除协议产品信息
  321. List<EsmAgreementProd> prodList = esmAgreementProdService.selectList(" where agreeid=?", new Object[]{id});
  322. List<String> idList = new ArrayList<>();
  323. for (EsmAgreementProd prod : prodList) {
  324. idList.add(prod.getId());
  325. }
  326. result = esmAgreementProdService.delete(id);
  327. //删除产品费用信息
  328. result = esmAgreementProdfeeService.delete(idList);
  329. } else {
  330. msg = "id能为空";
  331. return HttpResult.ok(msg, result);
  332. }
  333. return HttpResult.ok(msg, result);
  334. }
  335. // @ApiOperation("协议审核 传入协议id和审核状态: 0 申请审核 1 审核通过 2 审核不通过")
  336. // @GetMapping(value = "/check")
  337. // public HttpResult check(@RequestParam String id, @RequestParam String status, String remark) {
  338. // Integer result = 0;
  339. // String msg = "保存成功";
  340. //
  341. // if(id != null && id.length()>0){
  342. // //更新协议状态
  343. // EsmAgreement agreement = esmAgreementService.selectByPk(id);
  344. // if (agreement == null) {
  345. // msg = "协议不存在";
  346. // return HttpResult.ok(msg, result);
  347. // }
  348. // agreement.setAgreestatus(status);
  349. // esmAgreementService.updateSelective(agreement);
  350. //
  351. // EsmAgreementCheckhistory checkhis = new EsmAgreementCheckhistory();
  352. // checkhis.setId(IdGenerate.nextId());
  353. // checkhis.setAgreeid(id);
  354. // checkhis.setStatus(status);
  355. // checkhis.setRemark(remark);
  356. //// checkhis.setCheckid(getUser().getId());
  357. // checkhis.setCheckname(getUserName());
  358. // checkhis.setChecktime(new Date());
  359. //
  360. // result = esmAgreementCheckhistoryService.insert(checkhis);
  361. // } else{
  362. // msg = "协议id不能为空";
  363. // }
  364. //
  365. // return HttpResult.ok(msg, result);
  366. // }
  367. }