diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleState.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleState.java new file mode 100644 index 0000000000..eaef7640e7 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleState.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 车辆持久状态 + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class BaseVehicleState extends BaseEntity { + private static final long serialVersionUID = -8658861219326308912L; + @ApiModelProperty("车辆sid") + private String vinSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("销售订单车辆sid") + private String busSid; + @ApiModelProperty("业务阶段序号") + private String busNo; + @ApiModelProperty("业务阶段名称") + private String busName; + @ApiModelProperty("业务状态") + private String busState; + @ApiModelProperty("款项状态") + private String finState; + @ApiModelProperty("发票状态") + private String invoiceState; + @ApiModelProperty("欠款提车状态") + private String carryVehicleState; + @ApiModelProperty("欠款开票状态") + private String carryInvoiceState; + @ApiModelProperty("包牌业务") + private String packageBusiness; + @ApiModelProperty("合同状态") + private String contractState; + + +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateDto.java new file mode 100644 index 0000000000..118370190c --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateDto.java @@ -0,0 +1,27 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class BaseVehicleStateDto implements Dto { + private static final long serialVersionUID = -3250371728132610725L; + @ApiModelProperty("车辆sid") + private String vinSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("销售订单车辆sid") + private String busSid; + @ApiModelProperty("业务阶段序号") + private String busNo; + @ApiModelProperty("业务阶段名称") + private String busName; + @ApiModelProperty("操作类型") + private String operateType; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateEnum.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateEnum.java new file mode 100644 index 0000000000..dc46946853 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateEnum.java @@ -0,0 +1,80 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import lombok.Getter; + +/** + * @description: 车辆持久状态 + * @author: dimengzhe + * @date: 2023/7/19 + **/ +public class BaseVehicleStateEnum { + + @Getter + public static enum BusNoEnum { + /** + * 车辆业务阶段序号 + */ + DDBA("200", "订单备案"), + CKKP("400", "出库开票"), + JC("500", "交车"), + YWJS("600", "业务结束"), + ; + + private String busNoKey; + private String busNoValue; + + BusNoEnum(String busNoKey, String busNoValue) { + this.busNoKey = busNoKey; + this.busNoValue = busNoValue; + } + } + + + @Getter + public static enum BusStateEnum { + /** + * 车辆阶段状态 + */ + CKKP_STATE_1("401", "待出库"), + CKKP_STATE_2("402", "出库中"), + JC_STATE_1("501", "待准备"), + JC_STATE_2("502", "待交车"), + JC_STATE_3("503", "已交车"), + YWJS_STATE_1("601", "业务完成"), + YWJS_STATE_2("602", "业务终止"), + + ; + + private String stateKey; + private String stateValue; + + BusStateEnum(String stateKey, String stateValue) { + this.stateKey = stateKey; + this.stateValue = stateValue; + } + } + + @Getter + public static enum OperateTypeEnum { + /** + * 操作类型 + */ + DDBA_SUBMIT("201", "订单提交"), + DDBA_PASS("202", "订单审核通过"), + CKKP_PASS("401", "出库开票审核通过"), + JC_PASS("402", "交车审核通过"), + BUS_STOP("602", "业务终止"), + + ; + + private String typeKey; + private String typeValue; + + OperateTypeEnum(String typeKey, String typeValue) { + this.typeKey = typeKey; + this.typeValue = typeValue; + } + } + + +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeign.java new file mode 100644 index 0000000000..41d100c14f --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeign.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Api(tags = "车辆持久状态") +@FeignClient( + contextId = "anrui-base-BaseVehicleState", + name = "anrui-base", + path = "v1/BaseVehicleState", + fallback = BaseVehicleStateFeignFallback.class) +public interface BaseVehicleStateFeign { + + @PostMapping("saveOrUpdate") + ResultBean saveOrUpdate(@RequestBody BaseVehicleStateDto dto); +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeignFallback.java new file mode 100644 index 0000000000..36db280fd7 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclestate/BaseVehicleStateFeignFallback.java @@ -0,0 +1,9 @@ +package com.yxt.anrui.base.api.basevehiclestate; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +public class BaseVehicleStateFeignFallback { +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.java new file mode 100644 index 0000000000..3dec96882a --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.java @@ -0,0 +1,15 @@ +package com.yxt.anrui.base.biz.basevehiclestate; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleState; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Mapper +public interface BaseVehicleStateMapper extends BaseMapper { + BaseVehicleState selectOnes(String busSid); +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.xml new file mode 100644 index 0000000000..739d593a45 --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateRest.java new file mode 100644 index 0000000000..b80b3bf285 --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateRest.java @@ -0,0 +1,29 @@ +package com.yxt.anrui.base.biz.basevehiclestate; + +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateFeign; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ + +@Api(tags = "车辆持久状态") +@RestController +@RequestMapping("v1/BaseVehicleState") +public class BaseVehicleStateRest implements BaseVehicleStateFeign { + + @Autowired + private BaseVehicleStateService baseVehicleStateService; + + @Override + public ResultBean saveOrUpdate(BaseVehicleStateDto dto) { + return baseVehicleStateService.saveOrUpdateState(dto); + } +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateService.java new file mode 100644 index 0000000000..97c4a3ef70 --- /dev/null +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclestate/BaseVehicleStateService.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.base.biz.basevehiclestate; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleState; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto; +import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateEnum; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.result.ResultBean; +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Service +public class BaseVehicleStateService extends MybatisBaseService { + + public ResultBean saveOrUpdateState(BaseVehicleStateDto dto) { + ResultBean rb = ResultBean.fireFail(); + String operateType = dto.getOperateType(); + String busSid = dto.getBusSid(); + BaseVehicleState baseVehicleState = baseMapper.selectOnes(busSid); + if (BaseVehicleStateEnum.OperateTypeEnum.DDBA_SUBMIT.equals(operateType)) { + //销售订单提交时 + baseVehicleState = new BaseVehicleState(); + BeanUtil.copyProperties(dto, baseVehicleState, "sid"); + baseMapper.insert(baseVehicleState); + } else if (BaseVehicleStateEnum.OperateTypeEnum.DDBA_PASS.equals(operateType)) { + //销售订单办理通过后更新业务阶段为出库开票、小状态为待出库,款项状态为0 + baseVehicleState.setFinState("0"); + baseVehicleState.setBusNo(BaseVehicleStateEnum.BusNoEnum.CKKP.getBusNoKey()); + baseVehicleState.setBusName(BaseVehicleStateEnum.BusNoEnum.CKKP.getBusNoValue()); + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.CKKP_STATE_1.getStateKey()); + } else if (BaseVehicleStateEnum.OperateTypeEnum.CKKP_PASS.equals(operateType)) { + //出库通过后更新业务阶段为交车,小状态为待准备501 + baseVehicleState.setBusNo(BaseVehicleStateEnum.BusNoEnum.JC.getBusNoKey()); + baseVehicleState.setBusName(BaseVehicleStateEnum.BusNoEnum.JC.getBusNoValue()); + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.JC_STATE_1.getStateKey()); + + } else if (BaseVehicleStateEnum.OperateTypeEnum.JC_PASS.equals(operateType)) { + //交车确认通过后更新业务状态为业务结束,小状态为业务完成601 + baseVehicleState.setBusNo(BaseVehicleStateEnum.BusNoEnum.YWJS.getBusNoKey()); + baseVehicleState.setBusName(BaseVehicleStateEnum.BusNoEnum.YWJS.getBusNoValue()); + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.YWJS_STATE_1.getStateKey()); + } else if (BaseVehicleStateEnum.OperateTypeEnum.BUS_STOP.equals(operateType)) { + //如果为终止或作废,则更新小状态为业务终止602 + baseVehicleState.setBusState(BaseVehicleStateEnum.BusStateEnum.YWJS_STATE_2.getStateKey()); + } + + //认款办理确认以及结转审核通过的更新款项状态为1,否则为0 + + baseMapper.updateById(baseVehicleState); + return rb.success(); + } +} diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/BusDiscountpackageHandover.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/BusDiscountpackageHandover.java index fe02ac62da..751d21d292 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/BusDiscountpackageHandover.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/BusDiscountpackageHandover.java @@ -60,4 +60,5 @@ public class BusDiscountpackageHandover extends BaseEntity { @ApiModelProperty("移交备注") private String transferRemarks; private String orgSidPath; + private String filePath; } diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/app/AppBusDiscountpackageHandoverVo.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/app/AppBusDiscountpackageHandoverVo.java index 85ae28e6c8..ee1e272747 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/app/AppBusDiscountpackageHandoverVo.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdiscountpackagehandover/app/AppBusDiscountpackageHandoverVo.java @@ -46,4 +46,6 @@ public class AppBusDiscountpackageHandoverVo implements Vo { private Boolean showUploadBtn; // 已交接显示 @ApiModelProperty("车架号") private String vins; // 车架号 + private boolean showDownloadBtn; + private String filePath; } diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverMapper.xml b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverMapper.xml index 09c0357339..e0d5195383 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverMapper.xml +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverMapper.xml @@ -40,7 +40,8 @@ transferName as receiveName, transferPhone as receivePhone, transferStateValue as nodeState, - vins + vins, + filePath FROM bus_discountpackage_handover ${ew.sqlSegment} diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverService.java index 52dd6b3f29..5a0e400e6e 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdiscountpackagehandover/BusDiscountpackageHandoverService.java @@ -413,6 +413,13 @@ public class BusDiscountpackageHandoverService extends MybatisBaseService 0) { this.uploadPicture(dto); } + BusDiscountpackageHandoverDetailsVo detailsVo = this.handoverDetails(sid); + String s = commonCreatePdf(detailsVo); + String targetPath = docPdfComponent.getUploadTemplateUrl(); + String filePath = s.substring(targetPath.length()); + BusDiscountpackageHandover entity = fetchBySid(sid); + entity.setFilePath(filePath); + baseMapper.updateById(entity); } else if ((sysRoleVo.getName()).contains("优惠包管理员")) { dto.setTransferStateKey("003"); dto.setTransferStateValue("移交中"); @@ -647,9 +654,16 @@ public class BusDiscountpackageHandoverService extends MybatisBaseService page = PagerUtil.queryToPage(pq); IPage pagging = baseMapper.selectAppPageVo(page, qw); List records = pagging.getRecords(); + String urlPrefix = docPdfComponent.getPrefixTemplateUrl(); if (null != records && records.size() > 0) { for (AppBusDiscountpackageHandoverVo record : records) { if (null != record) { + if (StringUtils.isNotBlank(record.getFilePath())) { + record.setShowDownloadBtn(true); + record.setFilePath(urlPrefix + record.getFilePath()); + } else { + record.setShowDownloadBtn(false); + } if (StringUtils.isBlank(record.getVins())) { record.setVins("-"); } @@ -901,6 +915,11 @@ public class BusDiscountpackageHandoverService extends MybatisBaseService 0) { sbKey.append("008").append("、"); } - if (Integer.parseInt(information.getGasCertificate()) > 0) { - if ("0".equals(data.getIsFuelVehicle())) { - sbKey.append("009").append("、"); + if (StringUtils.isNotBlank(information.getGasCertificate())) { + if (Integer.parseInt(information.getGasCertificate()) > 0) { + if ("0".equals(data.getIsFuelVehicle())) { + sbKey.append("009").append("、"); + } } } + } } else { if ("0".equals(data.getIsFuelVehicle())) { @@ -1132,15 +1137,17 @@ public class BusHandoverService extends MybatisBaseService voResultBean = sysStaffinfoFeign.fetchBySid(staffSid); - if (voResultBean.getSuccess()) { - if (null != voResultBean.getData()) { - SysStaffinfoDetailsVo data = voResultBean.getData(); - if (StringUtils.isNotBlank(data.getName())) { - pdfVo.setStaffName(data.getName()); - //出门证业务经办人 - permitVo.setOperator(data.getName()); + if (StringUtils.isNotBlank(busHandover.getStaffSid())) { + String staffSid = busHandover.getStaffSid(); + ResultBean voResultBean = sysStaffinfoFeign.fetchBySid(staffSid); + if (voResultBean.getSuccess()) { + if (null != voResultBean.getData()) { + SysStaffinfoDetailsVo data = voResultBean.getData(); + if (StringUtils.isNotBlank(data.getName())) { + pdfVo.setStaffName(data.getName()); + //出门证业务经办人 + permitVo.setOperator(data.getName()); + } } } } @@ -1632,9 +1639,11 @@ public class BusHandoverService extends MybatisBaseService 0) { sbKey.append("008").append("、"); } - if (Integer.parseInt(information.getGasCertificate()) > 0) { - if ("0".equals(data.getIsFuelVehicle())) { - sbKey.append("009").append("、"); + if (StringUtils.isNotBlank(information.getGasCertificate())) { + if (Integer.parseInt(information.getGasCertificate()) > 0) { + if ("0".equals(data.getIsFuelVehicle())) { + sbKey.append("009").append("、"); + } } } } @@ -1935,6 +1944,10 @@ public class BusHandoverService extends MybatisBaseService" + contractNo + "交车确认"; + variables.put("orderNames", orderNames); BusHandover busHandover1 = fetchBySid(businessSid); //用户的部门全路径sid bv.setOrgSidPath(busHandover1.getOrgSidPath()); diff --git a/anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerconfirmeddelivery.vue b/anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerconfirmeddelivery.vue index 832cd8a2c9..603994085b 100644 --- a/anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerconfirmeddelivery.vue +++ b/anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerconfirmeddelivery.vue @@ -11,7 +11,7 @@
-
确认交付信息
+
确认挂车交付信息
diff --git a/anrui-riskcenter-ui/src/api/otherfinancialproductsreport/otherfinancialproductsreport.js b/anrui-riskcenter-ui/src/api/otherfinancialproductsreport/otherfinancialproductsreport.js new file mode 100644 index 0000000000..272ec2cd07 --- /dev/null +++ b/anrui-riskcenter-ui/src/api/otherfinancialproductsreport/otherfinancialproductsreport.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' + +export default { + // 查询分页列表 + listPage: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/listPage', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + saveOrUpdate: function(data) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/saveOrUpdate', + method: 'post', + data: data, + headers: { 'Content-Type': 'application/json' } + }) + }, + policyRecordInit: function(data) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/policyRecordInit', + method: 'post', + data: data, + headers: { 'Content-Type': 'application/json' } + }) + }, + fetchBySid: function(data) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/fetchDetailsBySid/' + data, + method: 'get' + }) + }, + deleteBySids: function(data) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/deleteBySids', + method: 'DELETE', + data: data, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 提交流程 + submit: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/submit', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 流程审批(同意) + complete: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/complete', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 流程审批(同意) + companyToDivisionOperate: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/companyToDivisionOperate', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 流程审批(驳回) + reject: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/reject', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 流程审批(终止) + breakProcess: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/breakProcess', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 流程审批(撤回) + revokeProcess: function(params) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/revokeProcess', + method: 'post', + data: params, + headers: { 'Content-Type': 'application/json' } + }) + }, + // 审批流程(同意)获取下一环节 + getNextNodesForSubmit: function(data) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/getNextNodesForSubmit', + method: 'get', + params: data + }) + }, + // 审批流程(驳回)获取上一环节 + getPreviousNodesForReject: function(data) { + return request({ + url: '/riskcenter/v1/loanfinotherpolicyrecordapply/getPreviousNodesForReject', + method: 'get', + params: data + }) + } +} diff --git a/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreport.vue b/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreport.vue new file mode 100644 index 0000000000..ca718a48c6 --- /dev/null +++ b/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreport.vue @@ -0,0 +1,339 @@ + + + + diff --git a/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreportAdd.vue b/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreportAdd.vue new file mode 100644 index 0000000000..5ed40a37d9 --- /dev/null +++ b/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreportAdd.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreportInfo.vue b/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreportInfo.vue new file mode 100644 index 0000000000..efcd18d588 --- /dev/null +++ b/anrui-riskcenter-ui/src/views/otherfinancialproductsreport/otherfinancialproductsreportInfo.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportByDivisionOperate.vue b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportByDivisionOperate.vue new file mode 100644 index 0000000000..a7a9b119f3 --- /dev/null +++ b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportByDivisionOperate.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportDaiBan.vue b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportDaiBan.vue new file mode 100644 index 0000000000..ae52cda07f --- /dev/null +++ b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportDaiBan.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportEdit.vue b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportEdit.vue new file mode 100644 index 0000000000..75be1e4e8d --- /dev/null +++ b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportEdit.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportYiBan.vue b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportYiBan.vue new file mode 100644 index 0000000000..c1f608cfa8 --- /dev/null +++ b/anrui-riskcenter-ui/src/views/workFlow/qitarongchanpinFlow/otherfinancialproductsreportYiBan.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplate.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplate.java new file mode 100644 index 0000000000..be2a6cbcc1 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplate.java @@ -0,0 +1,70 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: 公司定制金融方案模板 + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class LoanTemplate extends BaseEntity { + private static final long serialVersionUID = 4495609815807595267L; + + @ApiModelProperty("模板名称") + private String templateName; + @ApiModelProperty("备案编号") + private String billNo; + @ApiModelProperty("方案key") + private String showTypeKey; + @ApiModelProperty("方案value") + private String showTypeValue; + @ApiModelProperty("车型sid") + private String vehModelSid; + @ApiModelProperty("车型名称") + private String vehModel; + @ApiModelProperty("配置sid") + private String vehModelConfigSid; + @ApiModelProperty("常用配置名称") + private String vehModelConfig; + @ApiModelProperty("更多配置名称") + private String vehModelConfigMore; + @ApiModelProperty("单台指导价") + private BigDecimal vehPrice; + @ApiModelProperty("合格证公告型号") + private String vehNoticeModel; + @ApiModelProperty("备案日期") + private String filingDate; + @ApiModelProperty("申请部门sid") + private String applyDeptSid; + @ApiModelProperty("申请部门") + private String applyDept; + @ApiModelProperty("申请人") + private String createByName; + @ApiModelProperty("流程状态") + private String nodeState; + @ApiModelProperty("流程定义id") + private String procDefId; + @ApiModelProperty("环节定义id") + private String taskDefKey; + @ApiModelProperty("流程实例id") + private String procInstId; + private String taskId; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("创建组织名称") + private String createOrgName; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("使用组织名称") + private String useOrgName; + @ApiModelProperty("组织全路径") + private String orgSidPath; + @ApiModelProperty("使用状态:0正常,1禁用") + private int useState; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateDto.java new file mode 100644 index 0000000000..3f2926d57c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateDto.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class LoanTemplateDto implements Dto { + private static final long serialVersionUID = 1058550108219302303L; + + private String sid; + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("组织全路径sid") + private String orgPath; + + @ApiModelProperty("模板名称") + private String templateName; + @ApiModelProperty("方案key") + private String showTypeKey; + @ApiModelProperty("方案value") + private String showTypeValue; + @ApiModelProperty("车型sid") + private String vehModelSid; + @ApiModelProperty("车型名称") + private String vehModel; + @ApiModelProperty("配置sid") + private String vehModelConfigSid; + @ApiModelProperty("常用配置名称") + private String vehModelConfig; + @ApiModelProperty("更多配置名称") + private String vehModelConfigMore; + @ApiModelProperty("单台指导价") + private BigDecimal vehPrice; + @ApiModelProperty("合格证公告型号") + private String vehNoticeModel; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateFeign.java new file mode 100644 index 0000000000..94b8eb859e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateFeign.java @@ -0,0 +1,74 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.validation.Valid; +import java.util.List; + +/** + * @description: 公司定制金融方案 + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Api(tags = "公司定制金融方案申请") +@FeignClient( + contextId = "anrui-riskcenter-LoanTemplate", + name = "anrui-riskcenter", + path = "v1/LoanTemplate", + fallback = LoanTemplateFeignFallback.class) +public interface LoanTemplateFeign { + + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("新增、修改") + @PostMapping("/saveOrUpdate") + ResultBean saveOrUpdate(@RequestBody LoanTemplateDto dto); + + @ApiOperation("提交") + @PostMapping("/submitTemplateApply") + public ResultBean submitTemplateApply(@Valid @RequestBody SubmitTemplateDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody TemplateCompleteDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap TemplateApplyNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap TemplateApplyNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@Valid @RequestBody TemplateApplyTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody TemplateApplyTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody TemplateApplyTaskQuery query); + + @ApiOperation(value = "移动端详情") + @GetMapping(value = "/getTemplateApply/{sid}") + ResultBean getTemplateApply(@PathVariable("sid") String sid); + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateFeignFallback.java new file mode 100644 index 0000000000..881a7f742a --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateFeignFallback.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Component +public class LoanTemplateFeignFallback { +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateQuery.java new file mode 100644 index 0000000000..fefae86d43 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateQuery.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class LoanTemplateQuery implements Query { + private static final long serialVersionUID = -3560204318836479977L; + + @ApiModelProperty("分公司") + private String useOrgName; + + @ApiModelProperty("模板名称") + private String templateName; + + @ApiModelProperty("使用状态:0正常,1禁用") + private String useStateKey; + + @ApiModelProperty("车型名称") + private String vehModel; + + //资方产品方案 + //其他融产品名称 + + @ApiModelProperty("申请日期开始时间") + private String filingDateStart; + @ApiModelProperty("申请日期结束时间") + private String filingDateEnd; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateVo.java new file mode 100644 index 0000000000..5ba888439c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateVo.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class LoanTemplateVo implements Vo { + private static final long serialVersionUID = -7945086879973486919L; + + private String sid; + @ApiModelProperty("流程状态") + private String nodeState; + @ApiModelProperty("使用状态") + private String useStateValue; + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("申请部门") + private String applyDept; + @ApiModelProperty("申请人") + private String createByName; + @ApiModelProperty("申请日期") + private String filingDate; + @ApiModelProperty("模板名称") + private String templateName; + + @ApiModelProperty("方案value") + private String showTypeValue; + @ApiModelProperty("车型名称") + private String vehModel; + @ApiModelProperty("车型sid") + private String vehModelSid; + @ApiModelProperty("配置sid") + private String vehModelConfigSid; + + //资方产品方案 + //其他融产品名称 + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/TemplateApplyVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/TemplateApplyVo.java new file mode 100644 index 0000000000..35ce315185 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/TemplateApplyVo.java @@ -0,0 +1,9 @@ +package com.yxt.anrui.riskcenter.api.loantemplate; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +public class TemplateApplyVo { +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/SubmitTemplateDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/SubmitTemplateDto.java new file mode 100644 index 0000000000..d17c3d9cc2 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/SubmitTemplateDto.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.riskcenter.api.loantemplate.flowable; + +import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplateDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class SubmitTemplateDto extends LoanTemplateDto { + + private static final long serialVersionUID = 3835516621822161977L; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyNodeQuery.java new file mode 100644 index 0000000000..6cf73cb7cf --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyNodeQuery.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.riskcenter.api.loantemplate.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class TemplateApplyNodeQuery implements Query { + + private static final long serialVersionUID = 7063642923429631900L; + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyNodeVo.java new file mode 100644 index 0000000000..e78c832d2e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loantemplate.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class TemplateApplyNodeVo implements Vo { + + private static final long serialVersionUID = 1961081384184514415L; + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyTaskQuery.java new file mode 100644 index 0000000000..0877f4773e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateApplyTaskQuery.java @@ -0,0 +1,45 @@ +package com.yxt.anrui.riskcenter.api.loantemplate.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class TemplateApplyTaskQuery implements Query { + private static final long serialVersionUID = 5105018029574079051L; + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + private String instanceId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateCompleteDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateCompleteDto.java new file mode 100644 index 0000000000..da14112098 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/flowable/TemplateCompleteDto.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.riskcenter.api.loantemplate.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class TemplateCompleteDto implements Dto { + + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + @NotBlank(message = "用户全路径不能为空") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplateinstall/LoanTemplateInstall.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplateinstall/LoanTemplateInstall.java new file mode 100644 index 0000000000..966e6f7270 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplateinstall/LoanTemplateInstall.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loantemplateinstall; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class LoanTemplateInstall extends BaseEntity { + private static final long serialVersionUID = 8653351227525069709L; + @ApiModelProperty("模板sid") + private String templateSid; + @ApiModelProperty("上装配置sid") + private String vehInstallModelSid; + @ApiModelProperty("上装融资价格") + private BigDecimal vehInstallPrice; + @ApiModelProperty("上装备注说明") + private String vehInstallRemark; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplatetrailer/LoanTemplateTrailer.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplatetrailer/LoanTemplateTrailer.java new file mode 100644 index 0000000000..aca512fed0 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplatetrailer/LoanTemplateTrailer.java @@ -0,0 +1,27 @@ +package com.yxt.anrui.riskcenter.api.loantemplatetrailer; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Data +public class LoanTemplateTrailer extends BaseEntity { + private static final long serialVersionUID = -696421927777953553L; + @ApiModelProperty("模板sid") + private String templateSid; + @ApiModelProperty("挂车配置sid") + private String vehTrailerModelSid; + @ApiModelProperty("挂车融资价格") + private BigDecimal vehTrailerPrice; + @ApiModelProperty("挂车同车型合格证文件") + private String vehTrailerCertificateFile; + @ApiModelProperty("挂车备注说明") + private String vehTrailerRemark; +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateMapper.java new file mode 100644 index 0000000000..0ea76eb1ba --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateMapper.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.riskcenter.biz.loantemplate; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplate; +import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplateVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Mapper +public interface LoanTemplateMapper extends BaseMapper { + IPage listPageVo(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + int updateFlowFiled(Map map); +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateMapper.xml new file mode 100644 index 0000000000..92e5d9a6ca --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateMapper.xml @@ -0,0 +1,43 @@ + + + + + + + UPDATE loan_template + SET nodeState=#{nodeState} + + , taskDefKey=#{taskDefKey} + + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid = #{sid} + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateRest.java new file mode 100644 index 0000000000..e732bba34e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateRest.java @@ -0,0 +1,84 @@ +package com.yxt.anrui.riskcenter.biz.loantemplate; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.riskcenter.api.loantemplate.*; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Api(tags = "公司定制金融方案申请") +@RestController +@RequestMapping("v1/LoanTemplate") +public class LoanTemplateRest implements LoanTemplateFeign { + + @Autowired + private LoanTemplateService loanTemplateService; + + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanTemplateService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean saveOrUpdate(LoanTemplateDto dto) { + return loanTemplateService.saveOrUpdateApply(dto); + } + + @Override + public ResultBean submitTemplateApply(SubmitTemplateDto dto) { + return loanTemplateService.submitTemplateApply(dto); + } + + @Override + public ResultBean complete(TemplateCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(""); + return loanTemplateService.complete(bv); + } + + @Override + public ResultBean> getPreviousNodesForReject(TemplateApplyNodeQuery query) { + return loanTemplateService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean> getNextNodesForSubmit(TemplateApplyNodeQuery query) { + return loanTemplateService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean taskReject(TemplateApplyTaskQuery query) { + return loanTemplateService.taskReject(query); + } + + @Override + public ResultBean revokeProcess(TemplateApplyTaskQuery query) { + return loanTemplateService.revokeProcess(query); + } + + @Override + public ResultBean breakProcess(TemplateApplyTaskQuery query) { + return loanTemplateService.breakProcess(query); + } + + @Override + public ResultBean getTemplateApply(String sid) { + return loanTemplateService.getTemplateApply(sid); + } +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java new file mode 100644 index 0000000000..b80d97ef29 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java @@ -0,0 +1,456 @@ +package com.yxt.anrui.riskcenter.biz.loantemplate; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.yxt.anrui.flowable.api.flow.FlowableFeign; +import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loantemplate.*; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.SubmitTemplateDto; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.TemplateApplyNodeQuery; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.TemplateApplyNodeVo; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.TemplateApplyTaskQuery; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.messagecenter.api.message.MessageFeign; +import com.yxt.messagecenter.api.message.MessageFlowVo; +import com.yxt.messagecenter.api.message.MessageFlowableQuery; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Service +public class LoanTemplateService extends MybatisBaseService { + + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private MessageFeign messageFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + + + public PagerVo listPageVo(PagerQuery pq) { + LoanTemplateQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + //分公司 + if (StringUtils.isNotBlank(query.getUseOrgName())) { + qw.like("useOrgName", query.getUseOrgName()); + } + //模板名称 + if (StringUtils.isNotBlank(query.getTemplateName())) { + qw.like("templateName", query.getTemplateName()); + } + //使用状态 + if (StringUtils.isNotBlank(query.getUseStateKey())) { + qw.eq("useState", query.getUseStateKey()); + } + //ToDo:资方产品政策、其他融产品名称 + //申请日期开始时间 + String applicationDateStart = query.getFilingDateStart(); + //申请日期结束时间 + String applicationDateEnd = query.getFilingDateEnd(); + qw.apply(StringUtils.isNotBlank(applicationDateStart), "date_format (filingDate,'%Y-%m-%d') >= date_format('" + applicationDateStart + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(applicationDateEnd), "date_format (filingDate,'%Y-%m-%d') <= date_format('" + applicationDateEnd + "','%Y-%m-%d')" + ); + + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateApply(LoanTemplateDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + //新增 + LoanTemplate loanTemplate = new LoanTemplate(); + BeanUtil.copyProperties(dto, loanTemplate, sid); + loanTemplate.setCreateBySid(dto.getUserSid()); + //查询申请人 + ResultBean userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid()); + if (userVoResultBean.getData() != null) { + loanTemplate.setCreateByName(userVoResultBean.getData().getName()); + } + //申请人组织全路径 + String orgPath = dto.getOrgPath(); + loanTemplate.setOrgSidPath(orgPath); + String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData(); + loanTemplate.setUseOrgSid(useOrgSid); + loanTemplate.setCreateOrgSid(useOrgSid); + //创建组织使用组织 + ResultBean organizationResultBean = sysOrganizationFeign.fetchBySid(useOrgSid); + if (organizationResultBean.getData() != null) { + loanTemplate.setCreateOrgName(organizationResultBean.getData().getName()); + loanTemplate.setUseOrgName(organizationResultBean.getData().getName()); + } + //申请部门 + List orgList = Arrays.asList(orgPath.split("/")); + String deptSid = orgList.get(orgList.size() - 1); + ResultBean sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(deptSid); + if (sysOrganizationVoResultBean.getData() != null) { + loanTemplate.setApplyDept(sysOrganizationVoResultBean.getData().getName()); + loanTemplate.setApplyDeptSid(deptSid); + } + loanTemplate.setFilingDate(DateUtil.today()); + baseMapper.insert(loanTemplate); + sid = loanTemplate.getSid(); + } else { + //修改 + LoanTemplate loanTemplate = fetchBySid(sid); + if (loanTemplate == null) { + return rb.setMsg("该申请不存在"); + } + BeanUtil.copyProperties(dto, loanTemplate, "sid"); + baseMapper.updateById(loanTemplate); + } + return rb.success().setData(sid); + } + + public ResultBean submitTemplateApply(SubmitTemplateDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanTemplate loanTemplate = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, loanTemplate); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + ResultBean resultBean = saveOrUpdateApply(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + + String businessSid = resultBean.getData(); + loanTemplate = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //用户的部门全路径sid + bv.setOrgSidPath(loanTemplate.getOrgSidPath()); + bv.setBusinessSid(businessSid); + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); + if (r == 1) { + //ToDo:流程定义id + bv.setModelId(""); + ResultBean voResultBean = flowableFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + loanTemplate = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + LoanTemplate finalLoanTemplate = loanTemplate; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("公司定制金融方案备案申请"); + messageFlowableQuery.setMsgContent(finalLoanTemplate.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("公司定制金融方案备案"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(loanTemplate.getTaskId()); + bv.setTaskDefKey(loanTemplate.getTaskDefKey()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + /** + * 更新流程的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitTemplateDto dto, LoanTemplate loanTemplate) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanTemplate != null) { + String businessTaskId = loanTemplate.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + + } + return r; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanTemplate loanTemplate = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + bv.setOrgSidPath(loanTemplate.getOrgSidPath()); + bv.setModelId(loanTemplate.getProcDefId()); + if (bv.getTaskId().equals(loanTemplate.getTaskId())) { + ResultBean resultBean = flowableFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } else { + //极光推送 + loanTemplate = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowVo.setProcDefId(loanTemplate.getProcDefId()); + messageFlowVo.setProcInsId(loanTemplate.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("公司定制金融方案备案申请"); + messageFlowableQuery.setMsgContent(loanTemplate.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("公司定制金融方案备案"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(TemplateApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + LoanTemplate loanTemplate = fetchBySid(query.getBusinessSid()); + bv.setModelId(loanTemplate.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), TemplateApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(TemplateApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + LoanTemplate loanTemplate = fetchBySid(query.getBusinessSid()); + bv.setModelId(loanTemplate.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), TemplateApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(TemplateApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanTemplate loanTemplate = fetchBySid(businessSid); + if (loanTemplate == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanTemplate.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + loanTemplate = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanTemplate.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(loanTemplate.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("公司定制金融方案备案申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(loanTemplate.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + + messageFlowableQuery.setMsgTitle("公司定制金融方案备案"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + + } + + + public ResultBean breakProcess(TemplateApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + LoanTemplate loanTemplate = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanTemplate.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanTemplate.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(TemplateApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanTemplate loanTemplate = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanTemplate.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean getTemplateApply(String sid) { + return null; + } +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallMapper.java new file mode 100644 index 0000000000..3f4b8956e0 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallMapper.java @@ -0,0 +1,14 @@ +package com.yxt.anrui.riskcenter.biz.loantemplateinstall; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yxt.anrui.riskcenter.api.loantemplateinstall.LoanTemplateInstall; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Mapper +public interface LoanTemplateInstallMapper extends BaseMapper { +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallMapper.xml new file mode 100644 index 0000000000..b15f35ca95 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallService.java new file mode 100644 index 0000000000..95942fb591 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplateinstall/LoanTemplateInstallService.java @@ -0,0 +1,14 @@ +package com.yxt.anrui.riskcenter.biz.loantemplateinstall; + +import com.yxt.anrui.riskcenter.api.loantemplateinstall.LoanTemplateInstall; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Service +public class LoanTemplateInstallService extends MybatisBaseService { +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerMapper.java new file mode 100644 index 0000000000..3e557d33da --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerMapper.java @@ -0,0 +1,14 @@ +package com.yxt.anrui.riskcenter.biz.loantemplatetrailer; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yxt.anrui.riskcenter.api.loantemplatetrailer.LoanTemplateTrailer; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Mapper +public interface LoanTemplateTrailerMapper extends BaseMapper { +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerMapper.xml new file mode 100644 index 0000000000..1b5dbfcb28 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerService.java new file mode 100644 index 0000000000..d02fd23b64 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplatetrailer/LoanTemplateTrailerService.java @@ -0,0 +1,14 @@ +package com.yxt.anrui.riskcenter.biz.loantemplatetrailer; + +import com.yxt.anrui.riskcenter.api.loantemplatetrailer.LoanTemplateTrailer; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/7/19 + **/ +@Service +public class LoanTemplateTrailerService extends MybatisBaseService { +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/discountPackageHandover/AppBusDiscountpackageHandoversVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/discountPackageHandover/AppBusDiscountpackageHandoversVo.java index 4857300883..405d095952 100644 --- a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/discountPackageHandover/AppBusDiscountpackageHandoversVo.java +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/discountPackageHandover/AppBusDiscountpackageHandoversVo.java @@ -46,6 +46,6 @@ public class AppBusDiscountpackageHandoversVo implements Vo { private Boolean showUploadBtn; // 已交接显示 @ApiModelProperty("车架号") private String vins; // 车架号 - - + private boolean showDownloadBtn; + private String filePath; } diff --git a/doc/databases/base_tables.sql b/doc/databases/base_tables.sql index 8caee7577c..7dcdfa35be 100644 --- a/doc/databases/base_tables.sql +++ b/doc/databases/base_tables.sql @@ -935,7 +935,7 @@ CREATE TABLE `base_vehicle_out` ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ='车辆出库信息'; -DROP TABLE IF EXISTS `base_vehicle_state`; +/*DROP TABLE IF EXISTS `base_vehicle_state`; CREATE TABLE `base_vehicle_state` ( `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', @@ -952,10 +952,10 @@ CREATE TABLE `base_vehicle_state` `vinNo` VARCHAR(64) DEFAULT NULL COMMENT '车架号', `vinSid` varchar(64) DEFAULT NULL COMMENT '车辆sid', `busSid` varchar(64) DEFAULT NULL COMMENT '业务sid', - `arrears` varchar(64) DEFAULT NULL COMMENT '欠款开票:1是0否', - `carArrears` varchar(64) DEFAULT NULL COMMENT '欠款提车:1是,0否', + `arrears` varchar(64) DEFAULT NULL COMMENT '欠款开票:1是0否', + `carArrears` varchar(64) DEFAULT NULL COMMENT '欠款提车:1是,0否', `depositState` varchar(255) DEFAULT NULL COMMENT '款项-订金状态', - `carState` varchar(255) DEFAULT NULL COMMENT '款项-车款状态', + `carState` varchar(255) DEFAULT NULL COMMENT '款项-车款状态', `invoiceState` varchar(255) DEFAULT NULL COMMENT '发票状态', `deliverState` varchar(255) DEFAULT NULL COMMENT '交车状态', `blueState` varchar(255) DEFAULT NULL COMMENT '蓝票来票状态', @@ -964,6 +964,39 @@ CREATE TABLE `base_vehicle_state` KEY `id` (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ='车辆业务状态表'; +*/ + + +DROP TABLE IF EXISTS `base_vehicle_state`; +CREATE TABLE `base_vehicle_state` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `vinNo` VARCHAR(64) DEFAULT NULL COMMENT '车架号', + `vinSid` varchar(64) DEFAULT NULL COMMENT '车辆sid', + `busSid` varchar(64) DEFAULT NULL COMMENT '业务sid', + `busNo` varchar(64) DEFAULT NULL COMMENT '业务阶段序号', + `busName` varchar(64) DEFAULT NULL COMMENT '业务阶段名称', + `busState` varchar(64) DEFAULT NULL COMMENT '业务状态', + `finState` varchar(64) DEFAULT NULL COMMENT '款项状态', + `invoiceState` varchar(64) DEFAULT NULL COMMENT '发票状态', + `carryVehicleState` varchar(64) DEFAULT NULL COMMENT '欠款提车状态', + `carryInvoiceState` varchar(64) DEFAULT NULL COMMENT '欠款开票状态', + `packageBusiness` varchar(64) DEFAULT NULL COMMENT '包牌业务', + `contractState` varchar(64) DEFAULT NULL COMMENT '合同状态', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='车辆业务状态表'; diff --git a/doc/databases/risk_center.sql b/doc/databases/risk_center.sql index 727815f7ea..1014c8f02d 100644 --- a/doc/databases/risk_center.sql +++ b/doc/databases/risk_center.sql @@ -1135,6 +1135,102 @@ CREATE TABLE `loan_fin_otherPolicy` ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT ='其他融产品'; +-- 公司定制金融方案 +DROP TABLE IF EXISTS `loan_template`; +CREATE TABLE `loan_template` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '申请人', + `templateName` varchar(255) DEFAULT NULL COMMENT '模板名称', + `billNo` varchar(255) DEFAULT NULL COMMENT '金融方案定制编号', + `showTypeKey` varchar(255) DEFAULT NULL COMMENT '方案key', + `showTypeValue` varchar(255) DEFAULT NULL COMMENT '方案value', + `vehModelSid` varchar(255) DEFAULT NULL COMMENT '车型sid', + `vehModel` varchar(255) DEFAULT NULL COMMENT '车型名称', + `vehModelConfigSid` varchar(255) DEFAULT NULL COMMENT '配置sid', + `vehModelConfig` text DEFAULT NULL COMMENT '常用配置名称', + `vehModelConfigMore` text DEFAULT NULL COMMENT '更多配置名称', + `vehPrice` decimal(10, 0) DEFAULT NULL COMMENT '单台指导价', + `vehNoticeModel` varchar(255) DEFAULT NULL COMMENT '合格证公共型号', + `filingDate` varchar(255) DEFAULT NULL COMMENT '备案日期', + `applyDeptSid` varchar(64) DEFAULT NULL COMMENT '申请部门sid', + `applyDept` varchar(64) DEFAULT NULL COMMENT '申请部门', + `nodeState` varchar(255) DEFAULT NULL COMMENT '流程状态', + `procDefId` varchar(255) DEFAULT NULL COMMENT '流程定义id', + `taskDefKey` varchar(255) DEFAULT NULL COMMENT '环节key', + `procInstId` varchar(255) DEFAULT NULL COMMENT '流程实例id', + `taskId` varchar(255) DEFAULT NULL COMMENT '任务id', + `createOrgSid` varchar(255) DEFAULT NULL COMMENT '创建组织sid', + `createOrgName` varchar(255) DEFAULT NULL COMMENT '创建组织名称', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `useOrgName` varchar(255) DEFAULT NULL COMMENT '使用组织名称', + `orgSidPath` text DEFAULT NULL COMMENT '组织全路径sid', + `useState` int(64) DEFAULT NULL COMMENT '使用状态:0正常,1禁用', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='公司定制金融方案'; + + +-- 金融方案模板-挂车 +DROP TABLE IF EXISTS `loan_template_trailer`; +CREATE TABLE `loan_template_trailer` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `templateSid` varchar(64) DEFAULT NULL COMMENT '模板sid', + `vehTrailerModelSid` varchar(64) DEFAULT NULL COMMENT '挂车车型sid', + `vehTrailerPrice` decimal(10, 0) DEFAULT NULL COMMENT '挂车融资价格', + `vehTrailerCertificateFile` text DEFAULT NULL COMMENT '挂车同车型合格证文件', + `vehTrailerRemark` text DEFAULT NULL COMMENT '挂车备注说明', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='金融方案模板挂车'; + +-- 金融方案模板-上装 +DROP TABLE IF EXISTS `loan_template_install`; +CREATE TABLE `loan_template_install` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `templateSid` varchar(64) DEFAULT NULL COMMENT '模板sid', + `vehInstallModelSid` varchar(64) DEFAULT NULL COMMENT '上装配置sid', + `vehInstallPrice` decimal(10, 0) DEFAULT NULL COMMENT '上装融资价格', + `vehInstallRemark` text DEFAULT NULL COMMENT '上装备注说明', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='金融方案模板上装'; +