package com.ydtech.modules.esm.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydtech.core.page.HttpResult; import com.ydtech.core.page.PageRequest; import com.ydtech.core.page.PageResult; import com.ydtech.modules.base.controller.BaseController; import com.ydtech.modules.esm.model.EsmInsAttribution; import com.ydtech.modules.esm.model.EsmInsAttributionDept; import com.ydtech.modules.esm.model.EsmInsAttributionTemplate; import com.ydtech.modules.esm.model.EsmInsCompany; import com.ydtech.modules.esm.model.vo.req.EsmInsAttributionAuthorizeReq; import com.ydtech.modules.esm.service.EsmInsAttributionDeptService; import com.ydtech.modules.esm.service.EsmInsAttributionService; import com.ydtech.modules.esm.service.EsmInsAttributionTemplateService; import com.ydtech.modules.esm.service.EsmInsCompanyService; import com.ydtech.modules.order.entity.vo.zm.ZmAscriptionResponse; import com.ydtech.modules.order.entity.vo.zm.ZmAscriptionVo; import com.ydtech.modules.order.service.ZhongMeiOrderService; import com.ydtech.utils.StringUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; @Api(tags = "归属信息") @RestController @RequestMapping("/esm/attribution") public class EsmInsAttributionController extends BaseController { @Autowired EsmInsAttributionService esmInsAttributionService; @Autowired EsmInsAttributionDeptService esmInsAttributionDeptService; @Autowired EsmInsAttributionTemplateService esmInsAttributionTemplateService; @Autowired EsmInsCompanyService esmInsCompanyService; @Autowired ZhongMeiOrderService zhongMeiOrderService; @ApiOperation(value = "获取保险公司归属信息模板") @GetMapping(value = "/gainAttributionTemplate/{insCompanyId}") @ApiImplicitParams({ @ApiImplicitParam(name = "insCompanyId", value = "保险公司ID") }) public HttpResult gainAffiliation(@PathVariable String insCompanyId, HttpServletRequest request) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EsmInsAttributionTemplate::getInsCompanyId, insCompanyId); EsmInsAttributionTemplate template = esmInsAttributionTemplateService.getOne(queryWrapper); if (null == template) return HttpResult.ok("模板不存在,请联系管理员初始化模板"); return HttpResult.ok(template); } // @ApiOperation(value = "获取允许报价的保险公司列表") // @GetMapping(value = "/gainAllowQuoteList") // public HttpResult gainAllowQuoteList() { // // String str = RedisUtils.get(RedisConstant.INS_COMPANY_ALLOW_QUOTE); // if (StringUtils.isNotEmpty(str)) { // LambdaQueryWrapper lqw = new LambdaQueryWrapper(); // lqw.eq(EsmInsAttribution::getOpenQuote, 1); // List openQuoteList = esmInsAttributionService.list(lqw); // RedisUtils.set(RedisConstant.INS_COMPANY_ALLOW_QUOTE, JsonUtils.toJson(openQuoteList)); // } // List attrList = JsonUtils.toObjectList(str, EsmInsAttribution.class); // //// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); //// queryWrapper.eq(EsmInsAttribution::getOpenQuote, "1"); //// List attrList = esmInsAttributionService.list(queryWrapper); // // return HttpResult.ok(attrList); // } /** * @author: lig * @date: 2022年10月26日 0026 */ @ApiOperation(value = "保存") @PostMapping(value = "/save") @Transactional public HttpResult save(@RequestBody EsmInsAttribution eia, HttpServletRequest request) { long i = esmInsAttributionService.count(new LambdaQueryWrapper() .eq(EsmInsAttribution::getUsername, eia.getUsername())); if (StringUtils.isEmpty(eia.getId()) && i > 0) return HttpResult.ok("保险公司账号不可重复!"); if (StringUtils.isNotEmpty(eia.getId()) && i > 1) return HttpResult.ok("保险公司账号不可重复!"); String userId = getUserId(); eia.setUserId(userId); //需要调用python 新增归属信息 String aValue = "{}"; //中煤 if (StringUtils.isNotEmpty(eia.getInsCompanyId()) && eia.getInsCompanyId().equals("000019")) { ZmAscriptionVo zmVo = EsmInsAttribution.gainZmAscriptionVo(eia); ZmAscriptionResponse zmResponse = zhongMeiOrderService.ascription(zmVo); if (null == zmResponse) return HttpResult.ok("归属保存失败,请检查参数是否正确!"); aValue = JSON.toJSONString(zmResponse); } eia.setValue(aValue); if (StringUtils.isNullOrEmpty(eia.getInsCompanyName())) { //保险公司 EsmInsCompany insCompany = esmInsCompanyService.getById(eia.getInsCompanyId()); eia.setInsCompanyName(insCompany.getName()); } esmInsAttributionService.saveOrUpdate(eia); return HttpResult.ok(); } @ApiOperation(value = "获取归属通过ID") @GetMapping(value = "/{id}") public HttpResult queryById(@PathVariable String id) { return HttpResult.ok(esmInsAttributionService.getById(id)); } @ApiOperation(value = "获取用户归属 分页") @GetMapping(value = "/findPage") public HttpResult findPage(PageRequest pageRequest, HttpServletRequest request) { String userId = getUserId(); // int pageNum = pageRequest.getPageNum(); // int pageSize = pageRequest.getPageSize(); String insCompanyId = pageRequest.getColumnFilterValue(pageRequest, "ins_company_id"); // 保险公司ID LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(StringUtils.isNotEmpty(insCompanyId), EsmInsAttribution::getInsCompanyId, insCompanyId); lqw.eq(EsmInsAttribution::getUserId, userId); Page p = PageRequest.buildPageRequest(pageRequest); IPage pResult = esmInsAttributionService.page(p, lqw); return HttpResult.ok(PageResult.buildPageResult(pResult)); } @ApiOperation(value = "(Python使用)获取用户归属通过用户名") @GetMapping(value = "/gainAttributionByUsername") @ApiImplicitParams({ @ApiImplicitParam(name = "username", value = "保险公司用户名") }) public HttpResult gainAffiliation(@PathVariable String username) { LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(EsmInsAttribution::getUsername, username); return HttpResult.ok(esmInsAttributionService.getOne(lqw)); } @ApiOperation(value = "删除归属信息") @DeleteMapping(value = "/delete/{id}") @ApiImplicitParam(name = "id", value = "归属ID", required = true, paramType = "query", dataType = "Long") public HttpResult delete(@PathVariable Long id) { return HttpResult.ok(esmInsAttributionService.removeById(id)); } @ApiOperation(value = "归属授权") @PostMapping(value = "/authorize") // @ApiImplicitParam(name = "deptIds", value = "部门ID集", required = true, paramType = "query", dataType = "String") public HttpResult authorize(@RequestBody EsmInsAttributionAuthorizeReq req) { LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); luw.eq(EsmInsAttributionDept::getAttributionId, req.getAttributionId()); esmInsAttributionDeptService.remove(luw); if (null != req.getDeptIds() && !req.getDeptIds().isEmpty()) { List eiadList = new ArrayList<>(); req.getDeptIds().stream().forEach(a -> { EsmInsAttributionDept eiad = new EsmInsAttributionDept(); eiad.setAttributionId(Long.valueOf(req.getAttributionId())); eiad.setInsCompanyId(req.getInsCompanyId()); eiad.setDeptId(a); eiadList.add(eiad); }); esmInsAttributionDeptService.saveBatch(eiadList); } return HttpResult.ok(); } }