| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- package com.ydtech.modules.fnc.controller;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.ydtech.aop.request.RequestSingleParam;
- import com.ydtech.constants.enums.dict.FeeAuditAuditstatus;
- import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
- import com.ydtech.core.page.HttpResult;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.base.controller.BaseController;
- import com.ydtech.modules.fnc.entity.InsFeeAudit;
- import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
- import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
- import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
- import com.ydtech.modules.fnc.service.InsFeeAuditService;
- import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
- import com.ydtech.modules.order.constants.OrderFeeAuditHistroy;
- import com.ydtech.modules.order.entity.BasePageResult;
- import com.ydtech.modules.order.entity.InsAreaCompany;
- import com.ydtech.modules.order.entity.InsOrders;
- import com.ydtech.modules.order.entity.InsOrdersTrack;
- import com.ydtech.modules.order.entity.vo.AuditOrderFeeVo;
- import com.ydtech.modules.order.entity.vo.OrderQueryVo;
- import com.ydtech.modules.order.entity.vo.OrderVo;
- import com.ydtech.modules.order.service.InsAreaCompanyService;
- import com.ydtech.modules.order.service.InsOrdersService;
- import com.ydtech.modules.order.service.InsOrdersTrackService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.web.bind.annotation.*;
- import javax.validation.Valid;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.List;
- @Api(tags = "财务-车险结算")
- @RequestMapping("/fnc/carSettle")
- @RestController
- public class CarSettleController extends BaseController {
- private final InsOrdersService insOrdersService;
- private final InsAreaCompanyService insAreaCompanyService;
- private final InsFeeAuditService insFeeAuditService;
- private final InsFeeAuditHistoryService insFeeAuditHistoryService;
- private final InsOrdersTrackService insOrdersTrackService;
- public CarSettleController(InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService,
- InsFeeAuditService insFeeAuditService,
- InsFeeAuditHistoryService insFeeAuditHistoryService,InsOrdersTrackService insOrdersTrackService) {
- this.insAreaCompanyService = insAreaCompanyService;
- this.insOrdersService = insOrdersService;
- this.insFeeAuditService = insFeeAuditService;
- this.insFeeAuditHistoryService = insFeeAuditHistoryService;
- this.insOrdersTrackService = insOrdersTrackService;
- }
- /**
- * 根据费用审核状态查询订单 auditStatus
- *
- * @param orderQueryVo
- * @return
- */
- @PostMapping("/queryPageOrder")
- @ApiOperation(value = "[1]分页查询订单接口")
- public HttpResult<BasePageResult<InsOrders>> queryPageOrder(@RequestBody OrderQueryVo orderQueryVo) {
- orderQueryVo.setOrderStatus("3");//3已承保
- BasePageResult<InsOrders> quoteResult = this.insOrdersService.queryPageOrder(orderQueryVo);
- return HttpResult.ok("success", quoteResult);
- }
- /**
- * 根据订单号查询费用明细
- *
- * @param orderNo
- * @return
- */
- @PostMapping("/feeDetail")
- @ApiOperation(value = "[2]根据订单号查询费用明细")
- public HttpResult<OrderVo> queryFeeDetail(@RequestSingleParam(value = "orderNo") @Valid String orderNo) {
- return insOrdersService.getByCompanyId(orderNo, "accountingUser");
- }
- @PostMapping("/validateFeeDetail")
- @ApiOperation(value = "[2]校验查询费用明细是否占单")
- public HttpResult<OrderVo> validateFeeDetail(@RequestSingleParam(value = "orderNo") @Valid String orderNo) {
- return insOrdersService.validateFeeDetail(orderNo, "accountingUser");
- }
- @PostMapping("/liftFeeDetail")
- @ApiOperation(value = "解除订单占用")
- public HttpResult liftFeeDetail(@RequestSingleParam(value = "orderNo") @Valid String orderNo) {
- return insOrdersService.liftFeeDetail(orderNo);
- }
- /**
- * 费用审核
- *
- * @param
- * @return
- */
- @PostMapping("/auditFee")
- @ApiOperation(value = "[3]费用审核")
- public HttpResult auditFee(@RequestBody @Valid AuditOrderFeeVo auditOrderFeeVo) {
- // 订单号
- String orderNo = auditOrderFeeVo.getOrderNo();
- String insOrderNo = auditOrderFeeVo.getInsOrderNo();
- //查询改订单是已审核
- List<InsFeeAudit> feeList = insFeeAuditService.lambdaQuery()
- .eq(InsFeeAudit::getOrderno, orderNo)
- .eq(InsFeeAudit::getInsOrderNo, insOrderNo)
- .eq(InsFeeAudit::getAuditstatus, FeeAuditAuditstatus.PASSED.getCode())
- .list();
- if (feeList != null && !feeList.isEmpty()) {
- return HttpResult.error("该订单已审核");
- }
- //查询已承保的子订单号
- List<InsAreaCompany> areaList = insAreaCompanyService.lambdaQuery()
- .eq(StringUtils.isNotEmpty(orderNo), InsAreaCompany::getOrderno, orderNo)
- .eq(StringUtils.isNotEmpty(insOrderNo),InsAreaCompany::getId,insOrderNo)
- .eq(InsAreaCompany::getOrderstatus, InsOrderStatusEnum.ACCEPT_INSURANCE.getCode())
- .list();//3已承保
- if (areaList != null && !areaList.isEmpty()) {
- try {
- // if ("1".equals(auditOrderFeeVo.getUpdateFlag())) {
- // String userId = getUserId();
- // feeRuleSchemeService.compareAndUpdateFeeOrderInfo(areaList.get(0).getId(), auditOrderFeeVo.getJqCostsProportionStr(),
- // auditOrderFeeVo.getSyCostsProportionStr(), userId);
- // }
- String problemOrder = areaList.get(0).getProblemOrder();
- if ("1".equals(problemOrder)) {
- throw new SystemException("疑问订单不允许审核");
- }
- //审核通过
- if (auditOrderFeeVo.getAuditStatus().equals("1")) {
- LocalDateTime signingTime = areaList.get(0).getSigningTime();
- if (signingTime==null) {
- throw new SystemException("签单日期为空不允许审核,请手动更新订单签单时间或者联系管理员!!!");
- }
- insFeeAuditService.feeAudit(orderNo, areaList.get(0).getId(), false, FeeAuditAuditstatus.PASSED.getCode());
- } else if (auditOrderFeeVo.getAuditStatus().equals("0") || auditOrderFeeVo.getAuditStatus().equals("2")) {
- insFeeAuditService.saveDefaultInsFeeAuditAndHistory(orderNo, areaList.get(0).getId(),
- auditOrderFeeVo.getAuditStatus(), auditOrderFeeVo.getRejectinfo());
- }
- }catch (SystemException e) {
- return HttpResult.error(e.getMessage());
- } catch (Exception e) {
- e.printStackTrace();
- return HttpResult.error("系统异常");
- }
- return HttpResult.ok("审核成功");
- } else {
- return HttpResult.error("订单号有误-未承保");
- }
- }
- @GetMapping("/getFeeAuditHistory/{orderno}")
- @ApiOperation(value = "获取费用审核轨迹")
- public HttpResult getFeeAuditHistory(@PathVariable("orderno") String orderno) {
- InsAreaCompany underWrittenSubOrder = insAreaCompanyService.getById(orderno);
- if (underWrittenSubOrder == null) {
- return HttpResult.error("订单号有误-未承保");
- }
- InsOrders insOrders = insOrdersService.getById(underWrittenSubOrder.getOrderno());
- CustomerInfoVo customer = JSON.toJavaObject(insOrders.getInsureinfo(), CustomerInfoVo.class);
- JSONArray list = new JSONArray();
- List<InsOrdersTrack> insOrdersTracks = insOrdersTrackService.list(new LambdaQueryWrapper<InsOrdersTrack>().eq(InsOrdersTrack::getSuborder, orderno)
- .orderByAsc(InsOrdersTrack::getCreateTime));
- insOrdersTracks.forEach(item->{
- String desc = OrderFeeAuditHistroy.getDesc(item.getOrderStatus());
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("id",item.getId());
- jsonObject.put("insCompany",item.getInsCompany());
- jsonObject.put("operatorTime",item.getCreateTime());
- jsonObject.put("audituser",item.getOperatorId());
- jsonObject.put("operator",item.getOperator());
- jsonObject.put("desc",desc);
- jsonObject.put("licenseNo",insOrders.getLicenseno());
- jsonObject.put("insuredname",customer==null?"":customer.getName());
- // jsonObject.put("remark",item.getRemark());
- list.add(jsonObject);
- });
- List<InsOrdersTrack> insOrdersTracksCB = insOrdersTrackService.list(new LambdaQueryWrapper<InsOrdersTrack>().eq(InsOrdersTrack::getSuborder, orderno).eq(InsOrdersTrack::getOrderStatus,"3"));
- LambdaQueryWrapper<InsFeeAuditHistory> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(InsFeeAuditHistory::getInsOrderNo, orderno);
- wrapper.orderByAsc(InsFeeAuditHistory::getOperatorTime);
- List<InsFeeAuditHistory> insFeeAuditHistories = insFeeAuditHistoryService.list(wrapper);
- insFeeAuditHistories.forEach(item->{
- String desc = OrderFeeAuditHistroy.getDesc(OrderFeeAuditHistroy.convertStatus(item.getAuditstatus()));
- //判断是待审核查询已承保的人的工号
- if(OrderFeeAuditHistroy.OFH_5.getDesc().equals(desc) ){
- if(insOrdersTracksCB!=null && !insOrdersTracksCB.isEmpty()){
- item.setAudituser(insOrdersTracksCB.get(0).getOperatorId());
- }
- }
- if("自动审核".equals(item.getAudituser()) ){
- item.setOperator("自动审核");
- item.setAudituser("");
- }
- JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(item));
- LocalDateTime operatorTime = item.getOperatorTime();
- String dateStr = operatorTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
- jsonObject.put("id",item.getId());
- jsonObject.put("insCompany",item.getInsCompany());
- jsonObject.put("operatorTime",dateStr);
- jsonObject.put("audituser",item.getAudituser());
- jsonObject.put("operator",item.getOperator());
- jsonObject.put("desc",desc);
- jsonObject.put("remark",null);
- jsonObject.put("licenseNo",insOrders.getLicenseno());
- jsonObject.put("insuredname",customer==null?"":customer.getName());
- list.add(jsonObject);
- });
- return HttpResult.ok("success", list);
- }
- /**
- * 标注疑问订单
- *
- * @return
- */
- @PostMapping("markProblemOrder")
- @ApiOperation("标注疑问订单")
- public HttpResult<Object> markProblemOrder(@RequestBody ProblemOrderQueryVo problemOrderQueryVo) {
- return insAreaCompanyService.markProblemOrder(problemOrderQueryVo) ? HttpResult.ok("标注成功")
- : HttpResult.error("标注失败");
- }
- }
|