package com.ydtech.modules.esm.controller; import com.ydtech.core.page.BaseController; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.core.page.PageResult; import com.ydtech.modules.admin.model.SysUser; import com.ydtech.modules.esm.model.*; import com.ydtech.modules.esm.service.*; import com.ydtech.utils.idgen.IdGenerate; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Date; import java.util.List; @RestController @RequestMapping("esmAgreementCheck") public class EsmAgreementCheckController extends BaseController { @Autowired EsmAgreementCheckService esmAgreementCheckService; @Autowired EsmAgreementProdCheckService esmAgreementProdCheckService; @Autowired EsmAgreementProdfeeCheckService esmAgreementProdfeeCheckService; @Autowired EsmAgreementService esmAgreementService; @Autowired EsmAgreementProdService esmAgreementProdService; @Autowired EsmAgreementProdfeeService esmAgreementProdfeeService; @Autowired EsmInsCompanyService esmInsCompanyService; @Autowired EsmAgreementTeamfeeCheckService esmAgreementTeamfeeCheckService; @Autowired EsmAgreementTeamfeeService esmAgreementTeamfeeService; @Autowired EsmAgreementCheckhistoryService esmAgreementCheckhistoryService; /** * 保存协议信息 * * @param record * @return */ @PostMapping(value = "/saveAgreementCheck") public HttpResult save(@RequestBody EsmAgreementCheck record) { Integer result = 0; String msg = "保存成功"; if (StringUtils.isEmpty(record.getId())) { // 协议新增 // record.setAgreestatus("1"); //生成临时表主键 checkid String checkid = String.valueOf(new Date().getTime()); String id = IdGenerate.nextId(); record.setCheckid(checkid); record.setId(id); record.setAgreestatus("0"); //提交审核 record.setCreator(getUserName()); record.setCreatetime(new Date()); record.setUpdateby(getUserName()); record.setUpdatetime(new Date()); result = esmAgreementCheckService.insertSelective(record); List list = record.getAgreementProds(); for (EsmAgreementProdCheck prod : list) { prod.setId(IdGenerate.nextId()); prod.setCheckid(checkid); prod.setAgreeid(id); esmAgreementProdCheckService.insertSelective(prod); } } else if (StringUtils.isEmpty(record.getCheckid())) { //协议修改,新增记录 //生成临时表主键 checkid // String checkid = String.valueOf(new Date().getTime()); // record.setCheckid(checkid); // record.setAgreestatus("0"); //提交审核 // record.setCreator(getUserName()); // record.setCreatetime(new Date()); // record.setUpdateby(getUserName()); // record.setUpdatetime(new Date()); // result = esmAgreementCheckService.insertSelective(record); // // List list = record.getAgreementProds(); // for(EsmAgreementProdCheck prod : list){ // prod.setCheckid(checkid); // esmAgreementProdCheckService.insertSelective(prod); // } } else { // 审核退回 record.setAgreestatus("0"); //提交审核 record.setCreator(null); record.setUpdateby(getUserName()); record.setUpdatetime(new Date()); result = esmAgreementCheckService.updateSelective(record); List list = record.getAgreementProds(); for (EsmAgreementProdCheck prod : list) { esmAgreementProdCheckService.updateSelective(prod); } } return HttpResult.ok(msg, result); } /** * 修改协议信息 * * @param record * @return */ @PostMapping(value = "/updateAgreementCheck") public HttpResult update(@RequestBody EsmAgreementCheck record) { Integer result = 0; String msg = "保存成功"; if (!StringUtils.isEmpty(record.getId()) && !StringUtils.isEmpty(record.getCheckid())) { //生成临时表主键 checkid String checkid = record.getCheckid(); record.setCheckid(checkid); record.setAgreestatus("0"); //提交审核 record.setCreator(getUserName()); record.setCreatetime(new Date()); record.setUpdateby(getUserName()); record.setUpdatetime(new Date()); result = esmAgreementCheckService.update(record); List list = record.getAgreementProds(); for (EsmAgreementProdCheck prod : list) { prod.setCheckid(checkid); esmAgreementProdCheckService.update(prod); } //设置管理费用信息 List prodfees = record.getProdfees(); for (EsmAgreementProdfeeCheck prodfee : prodfees) { prodfee.setCheckid(checkid); prodfee.setFeestatus("0"); prodfee.setCreator(getUserName()); prodfee.setCreatetime(new Date()); prodfee.setUpdateby(getUserName()); prodfee.setUpdatetime(new Date()); result = esmAgreementProdfeeCheckService.update(prodfee); } } return HttpResult.ok(msg, result); } /** * 保存协议费用信息 * * @param record * @return */ @PostMapping(value = "/saveProdFeeCheck") public HttpResult saveProdFee(@RequestBody EsmAgreementCheck record) { Integer result = 0; String msg = "保存成功"; String checkid = String.valueOf(new Date().getTime()); List list = record.getAgreementProds(); // String agreeid = ""; for (EsmAgreementProdCheck prod : list) { prod.setCheckid(checkid); result = esmAgreementProdCheckService.insertSelective(prod);//设置产品佣金信息 // agreeid = prod.getAgreeid(); } //设置管理费用信息 List prodfees = record.getProdfees(); for (EsmAgreementProdfeeCheck prodfee : prodfees) { prodfee.setCheckid(checkid); prodfee.setId(IdGenerate.nextId()); prodfee.setFeestatus("0"); prodfee.setCreator(getUserName()); prodfee.setCreatetime(new Date()); prodfee.setUpdateby(getUserName()); prodfee.setUpdatetime(new Date()); result = esmAgreementProdfeeCheckService.insertSelective(prodfee); } return HttpResult.ok(msg, result); } /** * 待审核的协议费用信息 * * @param pageRequest * @return */ @PostMapping(value = "/prodfeePage") public HttpResult prodfeePage(@RequestBody PageRequest pageRequest) { int pageNum = pageRequest.getPageNum(); int pageSize = pageRequest.getPageSize(); // String comcode = pageRequest.getColumnFilterValue(pageRequest, "comcode"); // 所属机构 String status = pageRequest.getColumnFilterValue(pageRequest, "status"); // 协议状态 // StringBuffer whereStr = new StringBuffer(" where 1=1"); // ArrayList array = new ArrayList(); List agreeList = new ArrayList(); //需要处理传入的部门 List idList = esmAgreementProdfeeCheckService.queryProdfees(status); int minNum = pageSize * (pageNum - 1); int maxNum = pageSize * pageNum; if (1 == pageNum) { maxNum = idList.size() > maxNum ? maxNum : idList.size(); } else { maxNum = idList.size() > maxNum ? maxNum : idList.size(); } for (int i = minNum; i < maxNum; i++) { String checkid = idList.get(i); EsmAgreementCheck agreementCheck = new EsmAgreementCheck(); //产品信息 List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{checkid}); ///协议信息 String agreeid = prodList.get(0).getAgreeid(); EsmAgreement agreement = esmAgreementService.selectByPk(agreeid); if (agreement != null) BeanUtils.copyProperties(agreement, agreementCheck); agreementCheck.setCheckid(checkid); agreementCheck.setAgreementProds(prodList); //费用信息 List feeList = esmAgreementProdfeeCheckService.selectList(" where checkid=?", new Object[]{checkid}); agreementCheck.setProdfees(feeList); agreeList.add(agreementCheck); } PageResult pageResult = new PageResult(); pageResult.setPageNum(pageNum); pageResult.setPageSize(pageSize); pageResult.setTotalSize(idList.size()); double value = idList.size() / pageSize; double totalpage = Math.floor(value); pageResult.setTotalPages((int) totalpage + 1); pageResult.setContent(agreeList); return HttpResult.ok(pageResult); } @ApiOperation("费用审核 传入checkid和审核状态: 0 申请审核 1 审核通过 2 审核不通过") @GetMapping(value = "/feecheck") public HttpResult feecheck(@RequestParam String checkid, @RequestParam String status, String remark) { Integer result = 0; String msg = "保存成功"; if (StringUtils.isEmpty(checkid)) { return HttpResult.error("checkid不能为空"); } //更新协议状态 // EsmAgreementCheck agreementCheck = esmAgreementCheckService.selectByPk(checkid); // if (agreementCheck == null) { // msg = "协议不存在"; // return HttpResult.ok(msg, result); // } // agreementCheck.setAgreestatus(status); // esmAgreementCheckService.updateSelective(agreementCheck); //保存审批意见 EsmAgreementCheckhistory checkhis = new EsmAgreementCheckhistory(); checkhis.setId(IdGenerate.nextId()); checkhis.setCheckid(checkid); checkhis.setAgreeid(""); checkhis.setStatus(status); checkhis.setRemark(remark); checkhis.setCheckname(getUserName()); checkhis.setChecktime(new Date()); result = esmAgreementCheckhistoryService.insert(checkhis); if ("1".equals(status)) { List idList = new ArrayList<>(); List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{checkid}); String agreeid = prodList.get(0).getAgreeid(); esmAgreementProdService.delete(agreeid); for (EsmAgreementProdCheck prodCheck : prodList) { EsmAgreementProd prod = new EsmAgreementProd(); BeanUtils.copyProperties(prodCheck, prod); esmAgreementProdService.insertSelective(prod); idList.add(prodCheck.getId()); } //根据产品id删除费用信息表 esmAgreementProdfeeService.delete(idList); List feeList = esmAgreementProdfeeCheckService.selectList(" where checkid=?", new Object[]{checkid}); for (EsmAgreementProdfeeCheck fee : feeList) { fee.setFeestatus("1"); esmAgreementProdfeeCheckService.updateSelective(fee); EsmAgreementProdfee prodfee = new EsmAgreementProdfee(); BeanUtils.copyProperties(fee, prodfee); esmAgreementProdfeeService.insertSelective(prodfee); } } else { List feeList = esmAgreementProdfeeCheckService.selectList(" where checkid=?", new Object[]{checkid}); for (EsmAgreementProdfeeCheck fee : feeList) { fee.setFeestatus(status); esmAgreementProdfeeCheckService.updateSelective(fee); } } return HttpResult.ok(msg, result); } /** * 根据主键查询费用信息 * * @param checkid * @return */ @GetMapping(value = "/findFeeById") public HttpResult findFeeById(@RequestParam String checkid) { EsmAgreementCheck agreementCheck = new EsmAgreementCheck(); //产品信息 List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{checkid}); ///协议信息 String agreeid = prodList.get(0).getAgreeid(); EsmAgreement agreement = esmAgreementService.selectByPk(agreeid); BeanUtils.copyProperties(agreement, agreementCheck); agreementCheck.setCheckid(checkid); agreementCheck.setAgreementProds(prodList); //费用信息 List feeList = esmAgreementProdfeeCheckService.selectList(" where checkid=?", new Object[]{checkid}); agreementCheck.setProdfees(feeList); //最新的审核意见 List checkList = esmAgreementCheckhistoryService.selectList(" where checkid=? order by checktime desc", new Object[]{checkid}); if (checkList.size() > 0) { agreementCheck.setRemark(checkList.get(0).getRemark()); } return HttpResult.ok(agreementCheck); } /** * 保存团队费用信息 * * @param record * @return */ @PostMapping(value = "/saveTeamFee") public HttpResult saveTeamFee(@RequestBody List record) { Integer result = 0; String msg = "保存成功"; for (EsmAgreementTeamfee teamFee : record) { if (teamFee.getId() == null || teamFee.getId().isEmpty()) { teamFee.setId(IdGenerate.nextId()); teamFee.setCreator(getUserName()); teamFee.setCreatetime(new Date()); teamFee.setUpdateby(getUserName()); teamFee.setUpdatetime(new Date()); result = esmAgreementTeamfeeService.insertSelective(teamFee);//设置团队佣金信息 } else { teamFee.setUpdateby(getUserName()); teamFee.setUpdatetime(new Date()); result = esmAgreementTeamfeeService.updateSelective(teamFee); } } return HttpResult.ok(msg, result); } // /** // * 查询协议团队费用信息 // * @param teamcode // * @param agreeid // * @return // */ // @PostMapping(value="/queryTeamFee") // public HttpResult queryTeamFee(@RequestParam String teamcode, @RequestParam String agreeid) { // StringBuffer whereStr = new StringBuffer(" where 1=1 "); // if(teamcode == null) teamcode = ""; // whereStr.append(" and teamcode = ?"); // whereStr.append(" and agreeid = ?"); // //传入查询条件 // List selectList =esmAgreementTeamfeeService.selectList(whereStr.toString(), new Object[]{teamcode,agreeid}); // return HttpResult.ok(selectList); // } // /** // * 查询团队所属机构相匹配的协议(协议授权机构包含团队机构) // * @param comcode // * @return // */ // @PostMapping(value="/queryAuthAgreement") // public HttpResult queryAuthAgreement(@RequestParam String comcode){ // StringBuffer whereStr = new StringBuffer(" where 1=1 "); // if(comcode == null) comcode = "99"; // whereStr.append(" and t.id in (SELECT a.agreeid FROM esm_agreement_prod a where a.authcomcode=left(?,length(a.authcomcode)))"); // //传入查询条件 // List selectList =esmAgreementService.selectList(whereStr.toString(), new Object[]{comcode}); // return HttpResult.ok(selectList); // } /** * 基础分页查询 * * @param pageRequest * @return */ @PostMapping(value = "/findPage") public HttpResult findPage(@RequestBody PageRequest pageRequest) { // return HttpResult.ok(esmTeamService.findPage(pageRequest)); int pageNum = pageRequest.getPageNum(); int pageSize = pageRequest.getPageSize(); String comcode = pageRequest.getColumnFilterValue(pageRequest, "comcode"); // 所属机构 String inscode = pageRequest.getColumnFilterValue(pageRequest, "inscode"); // 保险公司 String insshortcode = pageRequest.getColumnFilterValue(pageRequest, "insshortcode"); // 保险公司简称 String startdate = pageRequest.getColumnFilterValue(pageRequest, "startdate"); // 开始时间 String enddate = pageRequest.getColumnFilterValue(pageRequest, "enddate"); // 截止时间 String status = pageRequest.getColumnFilterValue(pageRequest, "status"); // 协议状态 String productid = pageRequest.getColumnFilterValue(pageRequest, "productid"); // 产品代码 String cancity = pageRequest.getColumnFilterValue(pageRequest, "cancity"); // 可承保城市 StringBuffer whereStr = new StringBuffer(" where 1=1"); ArrayList array = new ArrayList(); if (!StringUtils.isEmpty(comcode)) { whereStr.append(" and comcode like ?"); array.add("%" + comcode + "%"); } if (!StringUtils.isEmpty(status)) { whereStr.append(" and agreestatus=?"); array.add(status); } /*if(comcode != null && comcode.length()>0){ whereStr.append(" and comcode=?"); array.add(comcode); } if(inscode != null && inscode.length()>0){ whereStr.append(" and (insure1=? or insure2=? or insure3=? or insure4=?)"); array.add(inscode); array.add(inscode); array.add(inscode); array.add(inscode); } if(insshortcode != null && insshortcode.length()>0){ whereStr.append(" and insureshort=?"); array.add(insshortcode); } if(status != null && status.length()>0){ //99 时查全部失效协议 if(status.indexOf("99")>=0 && status.length()==2){ whereStr.append(" and (current_date > t.enddate or current_date < t.startdate)"); }else if(status.indexOf("99")>=0 && status.length()>2){ // whereStr.append(" and agreestatus in (?) and (current_date > t.enddate or current_date < t.startdate)"); // array.add(status); String[] list = status.split(","); whereStr.append(" and agreestatus in ("); for(String s : list){ whereStr.append("?,"); array.add(s); } whereStr.deleteCharAt(whereStr.length()-1); whereStr.append(") and (current_date > t.enddate or current_date < t.startdate)"); }else{ //else if(status.indexOf("99")<0){ String[] list = status.split(","); whereStr.append(" and agreestatus in ("); for(String s : list){ whereStr.append("?,"); array.add(s); } whereStr.deleteCharAt(whereStr.length()-1); whereStr.append(") and current_date between t.startdate and t.enddate"); } } if(startdate != null && startdate.length()>0){ whereStr.append(" and DATE_FORMAT(createtime, '%Y-%m-%d') >= date ?"); array.add(startdate); } if(enddate != null && enddate.length()>0){ whereStr.append(" and DATE_FORMAT(createtime, '%Y-%m-%d') <= date ?"); array.add(enddate); } if(productid != null && productid.length()>0){ whereStr.append(" and exists(select 1 from esm_agreement_prod t1 where t1.agreeid=t.id and t1.productid=?)"); array.add(productid); } if(cancity != null && cancity.length()>0){ whereStr.append(" and exists(select 1 from esm_agreement_prod t1 where t1.agreeid=t.id and t1.cancity like ?)"); array.add("%" +cancity+ "%"); }*/ //需要处理传入的部门 PageResult pageResult = esmAgreementCheckService.selectPaging(pageNum, pageSize, whereStr.toString(), array.toArray()); List list = pageResult.getContent(); List agreeList = new ArrayList(); for (Object obj : list) { EsmAgreementCheck agreement = (EsmAgreementCheck) obj; List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{agreement.getCheckid()}); agreement.setAgreementProds(prodList); List feeList = new ArrayList(); for (EsmAgreementProdCheck prod : prodList) { List prodfees = esmAgreementProdfeeCheckService.selectList(" where agreeprodid=?", new Object[]{prod.getId()}); feeList.addAll(prodfees); } agreement.setProdfees(feeList); agreeList.add(agreement); } pageResult.setContent(agreeList); return HttpResult.ok(pageResult); } /** * 根据主键查询 * * @param checkid * @return */ @GetMapping(value = "/findById") public HttpResult findById(@RequestParam String checkid) { EsmAgreementCheck agreement = esmAgreementCheckService.selectByPk(checkid); List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{checkid}); // List feeList = new ArrayList(); List prodfees = esmAgreementProdfeeCheckService.selectList(" where checkid=?", new Object[]{checkid}); agreement.setAgreementProds(prodList); agreement.setProdfees(prodfees); //最新的审核意见 List checkList = esmAgreementCheckhistoryService.selectList(" where checkid=? order by checktime desc", new Object[]{checkid}); if (checkList.size() > 0) { agreement.setRemark(checkList.get(0).getRemark()); } return HttpResult.ok(agreement); } // /** // * 删除协议 // * @param id // * @return // */ // @PostMapping(value="/deleteAgreement") // public HttpResult delete(@RequestParam String id) { // Integer result = 0; // String msg = "删除成功"; // // if(id != null && id.length()>0){ // // result = esmAgreementService.delete(id); // //删除协议产品信息 // List prodList = esmAgreementProdService.selectList(" where agreeid=?",new Object[]{id}); // List idList = new ArrayList<>(); // for(EsmAgreementProd prod:prodList){ // idList.add(prod.getId()); // } // result = esmAgreementProdService.delete(id); // //删除产品费用信息 // result = esmAgreementProdfeeService.delete(idList); // // } else { // msg = "id能为空"; // return HttpResult.ok(msg, result); // } // // return HttpResult.ok(msg, result); // } @ApiOperation("协议审核 传入协议id和审核状态: 0 申请审核 1 审核通过 2 审核不通过") @GetMapping(value = "/check") public HttpResult check(@RequestParam String checkid, @RequestParam String status, String remark) { Integer result = 0; String msg = "保存成功"; if (StringUtils.isEmpty(checkid)) { return HttpResult.error("checkid不能为空"); } //更新协议状态 EsmAgreementCheck agreementCheck = esmAgreementCheckService.selectByPk(checkid); if (agreementCheck == null) { msg = "协议不存在"; return HttpResult.ok(msg, result); } agreementCheck.setAgreestatus(status); esmAgreementCheckService.updateSelective(agreementCheck); //保存审批意见 EsmAgreementCheckhistory checkhis = new EsmAgreementCheckhistory(); checkhis.setId(IdGenerate.nextId()); checkhis.setCheckid(checkid); checkhis.setAgreeid(agreementCheck.getId()); checkhis.setStatus(status); checkhis.setRemark(remark); checkhis.setCheckname(getUserName()); checkhis.setChecktime(new Date()); result = esmAgreementCheckhistoryService.insert(checkhis); if ("1".equals(status)) { List list = esmAgreementService.selectList(" where id=?", new Object[]{agreementCheck.getId()}); if (list != null && list.size() > 0) { //修改审核 EsmAgreement agreement = list.get(0); BeanUtils.copyProperties(agreementCheck, agreement); esmAgreementService.updateSelective(agreement); esmAgreementProdService.delete(agreementCheck.getId()); List idList = new ArrayList<>(); List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{checkid}); for (EsmAgreementProdCheck prodCheck : prodList) { EsmAgreementProd prod = new EsmAgreementProd(); BeanUtils.copyProperties(prodCheck, prod); esmAgreementProdService.insertSelective(prod); idList.add(prodCheck.getId()); } //根据产品id删除费用信息表 esmAgreementProdfeeService.delete(idList); List feeList = esmAgreementProdfeeCheckService.selectList(" where checkid=?", new Object[]{checkid}); for (EsmAgreementProdfeeCheck fee : feeList) { fee.setFeestatus("1"); esmAgreementProdfeeCheckService.updateSelective(fee); EsmAgreementProdfee prodfee = new EsmAgreementProdfee(); BeanUtils.copyProperties(fee, prodfee); esmAgreementProdfeeService.insertSelective(prodfee); } } else { // 新增审核 EsmAgreement agreement = new EsmAgreement(); BeanUtils.copyProperties(agreementCheck, agreement); esmAgreementService.insertSelective(agreement); List prodList = esmAgreementProdCheckService.selectList(" where checkid=?", new Object[]{checkid}); for (EsmAgreementProdCheck prodCheck : prodList) { EsmAgreementProd prod = new EsmAgreementProd(); BeanUtils.copyProperties(prodCheck, prod); esmAgreementProdService.insertSelective(prod); } } } return HttpResult.ok(msg, result); } }