EsmAgreementController.java 16 KB

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