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.esm.model.*; import com.ydtech.modules.esm.service.*; import com.ydtech.utils.idgen.IdGenerate; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Date; import java.util.List; @RestController @RequestMapping("esmAgreement") public class EsmAgreementController extends BaseController { @Autowired EsmAgreementService esmAgreementService; @Autowired EsmAgreementProdService esmAgreementProdService; @Autowired EsmAgreementProdfeeService esmAgreementProdfeeService; @Autowired EsmInsCompanyService esmInsCompanyService; @Autowired EsmAgreementTeamfeeService esmAgreementTeamfeeService; @Autowired EsmAgreementCheckhistoryService esmAgreementCheckhistoryService; // /** // * 保存协议信息 // * @param record // * @return // */ // @PostMapping(value="/saveAgreement") // public HttpResult save(@RequestBody EsmAgreement record) { // Integer result = 0; // String msg = "保存成功"; // if(record.getId()==null || record.getId().isEmpty()){ //// record.setAgreestatus("1"); // String id = IdGenerate.nextId(); // record.setId(id); // record.setCreator(getUserName()); // record.setCreatetime(new Date()); // record.setUpdateby(getUserName()); // record.setUpdatetime(new Date()); // result = esmAgreementService.insertSelective(record); // // List list = record.getAgreementProds(); // for(EsmAgreementProd prod : list){ // prod.setId(IdGenerate.nextId()); // prod.setAgreeid(id); // esmAgreementProdService.insertSelective(prod); // } // // } else { // record.setCreator(null); // record.setUpdateby(getUserName()); // record.setUpdatetime(new Date()); // result = esmAgreementService.updateSelective(record); // // List list = record.getAgreementProds(); // for(EsmAgreementProd prod : list){ // esmAgreementProdService.updateSelective(prod); // } // } // // return HttpResult.ok(msg, result); // } /** * 费用授权 * * @param record * @return */ @PostMapping(value = "/saveAgreementAuth") public HttpResult save(@RequestBody EsmAgreement record) { Integer result = 0; String msg = "保存成功"; List list = record.getAgreementProds(); for (EsmAgreementProd prod : list) { esmAgreementProdService.updateSelective(prod); result++; } return HttpResult.ok(msg, result); } /** * 保存协议费用信息 * * @param record * @return */ @PostMapping(value = "/saveProdFee") public HttpResult saveProdFee(@RequestBody EsmAgreement record) { Integer result = 0; String msg = "保存成功"; List list = record.getAgreementProds(); for (EsmAgreementProd prod : list) { result = esmAgreementProdService.updateSelective(prod);//设置产品佣金信息 } //设置管理费用信息 List prodfees = record.getProdfees(); for (EsmAgreementProdfee prodfee : prodfees) { if (prodfee.getId() == null || prodfee.getId().isEmpty()) { prodfee.setId(IdGenerate.nextId()); prodfee.setCreator(getUserName()); prodfee.setCreatetime(new Date()); prodfee.setUpdateby(getUserName()); prodfee.setUpdatetime(new Date()); result = esmAgreementProdfeeService.insertSelective(prodfee); } else { prodfee.setCreator(null); prodfee.setUpdateby(getUserName()); prodfee.setUpdatetime(new Date()); result = esmAgreementProdfeeService.updateSelective(prodfee); } } return HttpResult.ok(msg, result); } /** * 保存团队费用信息 * * @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 feestatus = pageRequest.getColumnFilterValue(pageRequest, "feestatus"); // 费用状态 String feeflag = pageRequest.getColumnFilterValue(pageRequest, "feeflag"); // 费用标志 String productid = pageRequest.getColumnFilterValue(pageRequest, "productid"); // 产品代码 String cancity = pageRequest.getColumnFilterValue(pageRequest, "cancity"); // 可承保城市 StringBuffer whereStr = new StringBuffer(" where 1=1"); ArrayList array = new ArrayList(); 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 + "%"); } if (feestatus != null && feestatus.length() > 0) { whereStr.append(" and exists(select 1 from esm_agreement_prodfee t1 where t1.agreementcode=t.id and t1.feestatus=?)"); array.add(feestatus); } if ("1".equals(feeflag)) { whereStr.append(" and not exists(select 1 from esm_agreement_prodfee t1 where t1.agreementcode=t.id)"); } //需要处理传入的部门 PageResult pageResult = esmAgreementService.selectPaging(pageNum, pageSize, whereStr.toString(), array.toArray()); List list = pageResult.getContent(); List agreeList = new ArrayList(); for (Object obj : list) { EsmAgreement agreement = (EsmAgreement) obj; List prodList = esmAgreementProdService.selectList(" where agreeid=?", new Object[]{agreement.getId()}); agreement.setAgreementProds(prodList); List feeList = new ArrayList(); for (EsmAgreementProd prod : prodList) { List prodfees = esmAgreementProdfeeService.selectList(" where agreeprodid=?", new Object[]{prod.getId()}); feeList.addAll(prodfees); } agreement.setProdfees(feeList); agreeList.add(agreement); } pageResult.setContent(agreeList); return HttpResult.ok(pageResult); } /** * 根据主键查询 * * @param id * @return */ @GetMapping(value = "/findById") public HttpResult findById(@RequestParam String id) { EsmAgreement agreement = esmAgreementService.selectByPk(id); List prodList = esmAgreementProdService.selectList(" where agreeid=?", new Object[]{id}); List feeList = new ArrayList(); for (EsmAgreementProd prod : prodList) { List prodfees = esmAgreementProdfeeService.selectList(" where agreeprodid=?", new Object[]{prod.getId()}); feeList.addAll(prodfees); } agreement.setAgreementProds(prodList); agreement.setProdfees(feeList); //最新的审核意见 List checkList = esmAgreementCheckhistoryService.selectList(" where agreeid=? order by checktime desc", new Object[]{id}); 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 id, @RequestParam String status, String remark) { // Integer result = 0; // String msg = "保存成功"; // // if(id != null && id.length()>0){ // //更新协议状态 // EsmAgreement agreement = esmAgreementService.selectByPk(id); // if (agreement == null) { // msg = "协议不存在"; // return HttpResult.ok(msg, result); // } // agreement.setAgreestatus(status); // esmAgreementService.updateSelective(agreement); // // EsmAgreementCheckhistory checkhis = new EsmAgreementCheckhistory(); // checkhis.setId(IdGenerate.nextId()); // checkhis.setAgreeid(id); // checkhis.setStatus(status); // checkhis.setRemark(remark); //// checkhis.setCheckid(getUser().getId()); // checkhis.setCheckname(getUserName()); // checkhis.setChecktime(new Date()); // // result = esmAgreementCheckhistoryService.insert(checkhis); // } else{ // msg = "协议id不能为空"; // } // // return HttpResult.ok(msg, result); // } }