Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 1 year ago
parent
commit
e6c0877d3a
  1. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleExportVo.java
  2. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleoutapply/BaseVehicleOutApplyQueryNew.java
  3. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleoutapply/BaseVehicleOutApplyVoNew.java
  4. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml
  5. 1
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleoutapply/BaseVehicleOutApplyMapper.xml
  6. 4
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleoutapply/BaseVehicleOutApplyService.java
  7. 6
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusLoancontractForRepayQuery.java
  8. 6
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusLoancontractForRepayVo.java
  9. 5
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusSalesOrderLoancontractFeign.java
  10. 5
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusSalesOrderLoancontractFeignFallback.java
  11. 49
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanRepaymentPlanDetailsExportVo.java
  12. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractMapper.java
  13. 49
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractMapper.xml
  14. 24
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractRest.java
  15. 191
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java
  16. 14
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanCreateSchedulePdfVo.java
  17. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentSchedule.java
  18. 9
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeign.java
  19. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeignFallback.java
  20. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.java
  21. 46
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.xml
  22. 13
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleRest.java
  23. 2376
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  24. 68
      doc/databases/yxt-as.sql
  25. 45
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApply.java
  26. 35
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyDetailsVo.java
  27. 34
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyDto.java
  28. 35
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyQuery.java
  29. 36
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyVo.java
  30. 23
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyDelegateQuery.java
  31. 18
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyNodeQuery.java
  32. 24
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyNodeVo.java
  33. 43
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyTaskQuery.java
  34. 35
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/CompleteBusclaimCheckApplyDto.java
  35. 19
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/SubmitBusclaimCheckApplyDto.java
  36. 48
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetail.java
  37. 42
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailDto.java
  38. 78
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailVo.java
  39. 1
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/flowable/BusclaimInvoiceDelegateQuery.java
  40. 2
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimbill/AsBusclaimBillMapper.java
  41. 8
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimbill/AsBusclaimBillMapper.xml
  42. 4
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimbill/AsBusclaimBillService.java
  43. 38
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheck/AsBusclaimCheckService.java
  44. 26
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyMapper.java
  45. 44
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyMapper.xml
  46. 110
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyRest.java
  47. 530
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyService.java
  48. 20
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailMapper.java
  49. 30
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailMapper.xml
  50. 14
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailRest.java
  51. 35
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailService.java
  52. 1
      yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java
  53. 10
      yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java
  54. 58
      yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java
  55. 5
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java
  56. 5
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java
  57. 5
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java
  58. 4
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java
  59. 29
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml
  60. 311
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java
  61. 37
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java
  62. 26
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java
  63. 25
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java
  64. 26
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java
  65. 48
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java
  66. 25
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java
  67. 12
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetail.java
  68. 12
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailDetailsVo.java
  69. 12
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailDto.java
  70. 5
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailMapper.java
  71. 4
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailMapper.xml
  72. 45
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailQuery.java
  73. 47
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailVo.java
  74. 2
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java
  75. 28
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml
  76. 50
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillService.java
  77. 61
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseChoiceBillVo.java
  78. 1
      yxt-pms-biz/src/main/java/com/yxt/pms/feign/flowable/flow/ProcDefEnum.java

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleExportVo.java

@ -126,6 +126,8 @@ public class BaseVehicleExportVo implements Vo {
private String returnDate;
@ExportEntityMap(CnName = "存放地点", EnName = "locationName")
private String locationName;
@ExportEntityMap(CnName = "存放地点详细地址", EnName = "warehouseAttribute")
private String warehouseAttribute;
@ExportEntityMap(CnName = "厂家销售通路", EnName = "manufSaleAccessName")
private String manufSaleAccessName;
@ExportEntityMap(CnName = "厂家合同价(含运费)", EnName = "contractPrice")

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleoutapply/BaseVehicleOutApplyQueryNew.java

@ -48,6 +48,8 @@ import lombok.Data;
@ApiModel(value = "车辆出库单 查询条件", description = "车辆出库单 查询条件")
public class BaseVehicleOutApplyQueryNew implements Query {
@ApiModelProperty("业务状态")
private String isDelete;
@ApiModelProperty("物料编码")
private String materialCode;
@ApiModelProperty("车架号")

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleoutapply/BaseVehicleOutApplyVoNew.java

@ -50,6 +50,8 @@ public class BaseVehicleOutApplyVoNew implements Vo {
@ApiModelProperty("sid")
private String sid;
@ApiModelProperty("业务状态")
private String isDelete;
@ApiModelProperty("车辆sid")
private String vinSid;
@ApiModelProperty("车架号")

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml

@ -1673,6 +1673,7 @@
bv.vinNo,
bv.vehicleStateValue,
bv.locationName,
sw.warehouseAttribute,
bv.orderingNo,
bv.costPrice,
bv.freight,
@ -1761,6 +1762,7 @@
LEFT JOIN base_vehicle_certificate bvcf ON bv.`sid` = bvcf.`vehicleSid`
LEFT JOIN base_vehmodel_config bvc ON bvm.`sid` = bvc.`modelSid`
LEFT JOIN anrui_portal.sys_organization so ON bv.createOrgSid = so.sid
LEFT JOIN anrui_scm.scm_warehouse sw ON bv.location = sw.sid
<where>
${ew.sqlSegment}
</where>

1
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleoutapply/BaseVehicleOutApplyMapper.xml

@ -6,6 +6,7 @@
<select id="selectPageVo" resultType="com.yxt.anrui.base.api.basevehicleoutapply.BaseVehicleOutApplyVoNew">
SELECT
bvo.`sid`,
IF(bvo.`isDelete` = 1, '作废','正常') AS isDelete,
bvo.vinSid,
bvo.vinNo,
bvoa.`createOrgSid`,

4
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleoutapply/BaseVehicleOutApplyService.java

@ -120,6 +120,10 @@ public class BaseVehicleOutApplyService extends MybatisBaseService<BaseVehicleOu
} else if ("3".equals(orgLevelKey)) {
qw.eq("bvoa.createOrgSid", params.getCreateOrgSid());
}
//业务状态
if (StringUtils.isNotBlank(params.getIsDelete())) {
qw.eq("bvo.isDelete", params.getIsDelete());
}
//物料编码
if (StringUtils.isNotBlank(params.getMaterialCode())) {
qw.like("bvo.materialCode", params.getMaterialCode());

6
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusLoancontractForRepayQuery.java

@ -4,6 +4,9 @@ import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
@ -26,6 +29,7 @@ public class BusLoancontractForRepayQuery implements Query {
private String bankName;
@ApiModelProperty("金融产品名称")
private String policyName; // 金融产品名称
private String builded; //是否生成还款计划表
@ApiModelProperty("组织全路径")
private String orgPath;
@ApiModelProperty("菜单sid")
@ -34,4 +38,6 @@ public class BusLoancontractForRepayQuery implements Query {
private String menuUrl;
@ApiModelProperty("用户sid")
private String userSid;
private String createStartDate;
private String createEndDate;
}

6
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusLoancontractForRepayVo.java

@ -35,4 +35,10 @@ public class BusLoancontractForRepayVo implements Vo {
private String orderSid;
private String builded; //是否生成还款计划表
private boolean handleBtn; //ture 可以办理 false 不能
private String repaymentCreateTime; //生成时间
private String cwDeptNo; //财务中部门编码
private String mainAmount; //主产品还款总金额
private String otherAmount; //其他融还款总金额
private String amountAll; // 总金额
}

5
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusSalesOrderLoancontractFeign.java

@ -102,6 +102,11 @@ public interface BusSalesOrderLoancontractFeign {
@PostMapping("/setRepaymentState")
public ResultBean setRepaymentState(@RequestParam("sid") String sid, @RequestParam("createTime")String createTime);
@PostMapping("/exportExcel")
@ApiOperation(value = "还款计划表导出")
public void exportExcel(@RequestBody BusLoancontractForRepayQuery query);
@ApiOperation("推送融资放款的应收")
@PostMapping("/pushLoanOrder")
@ResponseBody

5
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/BusSalesOrderLoancontractFeignFallback.java

@ -97,6 +97,11 @@ public class BusSalesOrderLoancontractFeignFallback implements BusSalesOrderLoan
return null;
}
@Override
public void exportExcel(BusLoancontractForRepayQuery query) {
}
@Override
public ResultBean pushLoanOrder(LoanContractPush loanContractPush) {
return null;

49
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanRepaymentPlanDetailsExportVo.java

@ -0,0 +1,49 @@
package com.yxt.anrui.buscenter.api.bussalesorderloancontract;
import com.yxt.common.core.utils.ExportEntityMap;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 9:34
*/
@Data
public class LoanRepaymentPlanDetailsExportVo {
@ExportEntityMap(CnName = "序号", EnName = "rankNo")
private Integer rankNo;
@ExportEntityMap(CnName = "生成日期", EnName = "createTime")
private String createTime;
@ExportEntityMap(CnName = "客户", EnName = "customer")
private String customer;
@ExportEntityMap(CnName = " 销售专员", EnName = "staffName")
private String staffName;
@ExportEntityMap(CnName = "贷款人", EnName = "borrowerName")
private String borrowerName;
@ExportEntityMap(CnName = "车架号", EnName = "vinNo")
private String vinNo;
@ExportEntityMap(CnName = "车牌号", EnName = "vehMark")
private String vehMark;
@ExportEntityMap(CnName = "消贷合同号", EnName = "loanContractNo")
private String loanContractNo;
@ExportEntityMap(CnName = "资方合同号", EnName = "bankContractNo")
private String bankContractNo;
@ExportEntityMap(CnName = "资方", EnName = "bankName")
private String bankName;
@ExportEntityMap(CnName = "金融产品政策", EnName = "policyName")
private String policyName;
@ExportEntityMap(CnName = "期数", EnName = "period")
private String period;
@ExportEntityMap(CnName = "应还", EnName = "dueMoney")
private String dueMoney;
@ExportEntityMap(CnName = "应还日期", EnName = "dueDate")
private String dueDate;
@ExportEntityMap(CnName = "是否存在其他融", EnName = "policyOrOther")
private String policyOrOther;
@ExportEntityMap(CnName = "销售部门", EnName = "dept")
private String dept;
@ExportEntityMap(CnName = "分公司", EnName = "useOrgName")
private String useOrgName;
}

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractMapper.java

@ -94,4 +94,6 @@ public interface BusSalesOrderLoancontractMapper extends BaseMapper<BusSalesOrde
@Update("update bus_sales_order_loancontract set repaymentState = 1,repaymentCreateTime =#{createTime} where sid=#{sid}")
int setRepaymentState(@Param("sid") String sid,@Param("createTime") String createTime);
List<BusLoancontractForRepayVo> selLoancontractsForExport(@Param(Constants.WRAPPER) QueryWrapper<BusSalesOrderLoancontract> qw);
}

49
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractMapper.xml

@ -17,23 +17,24 @@
<select id="listPageForRepay"
resultType="com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusLoancontractForRepayVo">
SELECT
bs.sid as orderSid,
bs.orgName as orgName,
bs.staffName as staffName,
bs.useOrgName as useOrgName,
co.loanContractNo as loanContractNo,
co.borrowerName as borrowerName,
co.bankName as bankName,
co.bankContractNo as bankContractNo,
co.policyName as policyName,
co.sid as salesOrderSid,
bs.sid AS orderSid,
bs.orgName AS orgName,
bs.staffName AS staffName,
bs.useOrgName AS useOrgName,
co.loanContractNo AS loanContractNo,
co.borrowerName AS borrowerName,
co.bankName AS bankName,
co.bankContractNo AS bankContractNo,
co.policyName AS policyName,
co.sid AS salesOrderSid,
CASE
co.repaymentState
WHEN '1' THEN
'是'
WHEN '0' THEN
'否'
END AS builded
END AS builded,
DATE_FORMAT( co.repaymentCreateTime, '%Y-%m-%d' ) AS repaymentCreateTime
FROM
bus_sales_order_loancontract AS co
LEFT JOIN bus_sales_order AS bs ON co.salesOrderSid = bs.sid
@ -53,4 +54,30 @@
resultType="com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailed">
select * from anrui_fin.fin_uncollected_receivables_detailed where busVinSid = #{sid} and receivablesName = #{name}
</select>
<select id="selLoancontractsForExport"
resultType="com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusLoancontractForRepayVo">
SELECT
bs.sid AS orderSid,
bs.orgName AS orgName,
bs.staffName AS staffName,
bs.useOrgName AS useOrgName,
co.loanContractNo AS loanContractNo,
co.borrowerName AS borrowerName,
co.bankName AS bankName,
co.bankContractNo AS bankContractNo,
co.policyName AS policyName,
co.sid AS salesOrderSid,
CASE
co.repaymentState
WHEN '1' THEN
'是'
WHEN '0' THEN
'否'
END AS builded,
DATE_FORMAT( co.repaymentCreateTime, '%Y-%m-%d' ) AS repaymentCreateTime
FROM
bus_sales_order_loancontract AS co
LEFT JOIN bus_sales_order AS bs ON co.salesOrderSid = bs.sid
<where>${ew.sqlSegment}</where>
</select>
</mapper>

24
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractRest.java

@ -27,6 +27,7 @@ package com.yxt.anrui.buscenter.biz.bussalesorderloancontract;
import com.yxt.anrui.buscenter.api.busdeliveredapply.PushOtherDocument;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.*;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -35,6 +36,9 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
@ -58,7 +62,8 @@ public class BusSalesOrderLoancontractRest implements BusSalesOrderLoancontractF
@Autowired
private BusSalesOrderLoancontractService busSalesOrderLoancontractService;
@Autowired
private HttpServletResponse response;
@Override
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
@ -121,6 +126,23 @@ public class BusSalesOrderLoancontractRest implements BusSalesOrderLoancontractF
return rb.success().setData(pv);
}
@Override
public void exportExcel(BusLoancontractForRepayQuery query) {
//得到所有要导出的数据
List<LoanRepaymentPlanDetailsExportVo> list = busSalesOrderLoancontractService.exportExcel(query);
//定义导出的excel名字
String excelName = "还款计划表列表";
String fileNameURL = "";
try {
fileNameURL = URLEncoder.encode(excelName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//导出车辆管理列表
ExportExcelUtils.export(fileNameURL, list, LoanRepaymentPlanDetailsExportVo.class, response);
}
@Override
public ResultBean setRepaymentState(String sid, String createTime) {
ResultBean rb = ResultBean.fireFail();

191
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java

@ -198,6 +198,97 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
return entity;
}
public List<LoanRepaymentPlanDetailsExportVo> exportExcel(BusLoancontractForRepayQuery pagerQuery) {
QueryWrapper<BusSalesOrderLoancontract> qw = new QueryWrapper<>();
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(pagerQuery.getOrgPath());
privilegeQuery.setMenuSid(pagerQuery.getMenuSid());
privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl());
privilegeQuery.setUserSid(pagerQuery.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = pagerQuery.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("bs.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("bs.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("bs.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("bs.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("bs.createBySid", pagerQuery.getUserSid());
} else {
return new ArrayList<>();
}
} else {
return new ArrayList<>();
}
//=======================
//分公司
if (StringUtils.isNotBlank(pagerQuery.getUseOrgName())) {
qw.like("bs.useOrgName", pagerQuery.getUseOrgName());
}
//销售部门
if (StringUtils.isNotBlank(pagerQuery.getOrgName())) {
qw.like("bs.orgName", pagerQuery.getOrgName());
}
//销售专员
if (StringUtils.isNotBlank(pagerQuery.getStaffName())) {
qw.like("bs.staffName", pagerQuery.getStaffName());
}
//消贷合同编号
if (StringUtils.isNotBlank(pagerQuery.getLoanContractNo())) {
qw.like("co.loanContractNo", pagerQuery.getLoanContractNo());
}
//贷款人
if (StringUtils.isNotBlank(pagerQuery.getBorrowerName())) {
qw.like("co.borrowerName", pagerQuery.getBorrowerName());
}
//资方
if (StringUtils.isNotBlank(pagerQuery.getBankName())) {
qw.like("co.bankName", pagerQuery.getBankName());
}
//金融产品
if (StringUtils.isNotBlank(pagerQuery.getPolicyName())) {
qw.like("co.policyName", pagerQuery.getPolicyName());
}
//金融产品
if (StringUtils.isNotBlank(pagerQuery.getBuilded())) {
qw.like("co.repaymentState", pagerQuery.getBuilded());
}
String createStartTime = pagerQuery.getCreateStartDate();
String createEndTime = pagerQuery.getCreateEndDate();
qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (co.repaymentCreateTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createEndTime), "date_format (co.repaymentCreateTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.ne("co.state", 0);
qw.eq("co.isDelete", 0);
qw.eq("co.busNo", "305");
qw.orderByDesc("co.createTime");
List<BusLoancontractForRepayVo> loancontracts = baseMapper.selLoancontractsForExport(qw);
if (!loancontracts.isEmpty()) {
List<String> sids = loancontracts.stream().map(BusLoancontractForRepayVo::getSalesOrderSid).collect(Collectors.toList());
List<LoanRepaymentPlanDetailsExportVo> exportVos = repaymentScheduleFeign.exportExcel(sids).getData();
if (!exportVos.isEmpty()) {
return exportVos;
}
}
return new ArrayList<>();
}
/**
* 消贷合同生成还款计划表列表
*
@ -256,8 +347,8 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
qw.like("bs.orgName", pagerQuery.getOrgName());
}
//销售专员
if (StringUtils.isNotBlank(pagerQuery.getUseOrgName())) {
qw.like("bs.useOrgName", pagerQuery.getUseOrgName());
if (StringUtils.isNotBlank(pagerQuery.getStaffName())) {
qw.like("bs.staffName", pagerQuery.getStaffName());
}
//消贷合同编号
if (StringUtils.isNotBlank(pagerQuery.getLoanContractNo())) {
@ -275,8 +366,18 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
if (StringUtils.isNotBlank(pagerQuery.getPolicyName())) {
qw.like("co.policyName", pagerQuery.getPolicyName());
}
qw.eq("co.state", 1);
//金融产品
if (StringUtils.isNotBlank(pagerQuery.getBuilded())) {
qw.like("co.repaymentState", pagerQuery.getBuilded());
}
String createStartTime = pagerQuery.getCreateStartDate();
String createEndTime = pagerQuery.getCreateEndDate();
qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (co.repaymentCreateTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createEndTime), "date_format (co.repaymentCreateTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.ne("co.state", 0);
qw.eq("co.isDelete", 0);
qw.eq("co.busNo", "305");
qw.orderByDesc("co.createTime");
IPage<BusLoancontractForRepayVo> pagging = baseMapper.listPageForRepay(page, qw);
List<BusLoancontractForRepayVo> records = pagging.getRecords();
@ -293,14 +394,88 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
record.setVinNo(String.join(",", stringVinNos));
}
}
// ResultBean<LoanRepaymentSchedule> repaymentSchedule = repaymentScheduleFeign.selByLoanContractSid(record.getSalesOrderSid());
// if (repaymentSchedule.getData() != null) {
ResultBean<LoanRepaymentSchedule> repaymentSchedule = repaymentScheduleFeign.selByLoanContractSid(record.getSalesOrderSid());
if (repaymentSchedule.getData() != null) {
LoanRepaymentSchedule schedule = repaymentSchedule.getData();
if (StringUtils.isNotBlank(schedule.getCwDeptNo())) {
record.setCwDeptNo(schedule.getCwDeptNo());
}
BigDecimal mainAmount; //主产品还款总金额
BigDecimal otherAmount; //其他融还款总金额
BigDecimal amountAll; // 总金额
//车辆数
BigDecimal vehCount = new BigDecimal(schedule.getVehCount());
if (StringUtils.isNotBlank(schedule.getIsDifferent())) {
if (schedule.getIsDifferent().equals("是")) {
//判断是否有一台车不同月还金额
//主产品期数
BigDecimal mainPeriod = new BigDecimal(schedule.getMainPeriod());
//主产品首期月还
BigDecimal mainFirstRepay = schedule.getMainFirstRepay().multiply(vehCount.subtract(new BigDecimal("1"))).add(schedule.getSingleMainFirstRepay());
//主产品期间月还
BigDecimal mainMidRepay = schedule.getMainMidRepay().multiply(vehCount.subtract(new BigDecimal("1"))).add(schedule.getSingleMainMidRepay()).multiply(mainPeriod.subtract(new BigDecimal("2")));
//主产品末期月还
BigDecimal mainLastRepay = schedule.getMainLastRepay().multiply(vehCount.subtract(new BigDecimal("1"))).add(schedule.getSingleMainLastRepay());
mainAmount = mainFirstRepay.add(mainMidRepay).add(mainLastRepay);
if (schedule.getIsOtherPolicy().equals("1")) {
//有其他融
//其他融期数
BigDecimal otherPeriod = new BigDecimal(schedule.getOtherPeriod());
//其他融首期月还
BigDecimal otherFirstRepay = schedule.getOtherFirstRepay().multiply(vehCount.subtract(new BigDecimal("1"))).add(schedule.getSingleOtherFirstRepay());
//其他融期间月还
BigDecimal otherMidRepay = schedule.getOtherMidRepay().multiply(vehCount.subtract(new BigDecimal("1"))).add(schedule.getSingleOtherMidRepay()).multiply(mainPeriod.subtract(new BigDecimal("2")));
//其他融末期月还
BigDecimal otherLastRepay = schedule.getOtherLastRepay().multiply(vehCount.subtract(new BigDecimal("1"))).add(schedule.getSingleOtherLastRepay());
otherAmount = otherFirstRepay.add(otherMidRepay).add(otherLastRepay);
amountAll = mainAmount.add(otherAmount);
record.setMainAmount(mainAmount.toString());
record.setOtherAmount(otherAmount.toString());
record.setAmountAll(amountAll.toString());
} else if (schedule.getIsOtherPolicy().equals("0")) {
//没有其他融
record.setMainAmount(mainAmount.toString());
record.setAmountAll(mainAmount.toString());
}
}
} else {
//主产品期数
BigDecimal mainPeriod = new BigDecimal(schedule.getMainPeriod());
//主产品首期月还
BigDecimal mainFirstRepay = schedule.getMainFirstRepay().multiply(vehCount);
//主产品期间月还
BigDecimal mainMidRepay = mainPeriod.subtract(new BigDecimal("2")).multiply(schedule.getMainMidRepay()).multiply(vehCount);
//主产品末期月还
BigDecimal mainLastRepay = schedule.getMainLastRepay().multiply(vehCount);
mainAmount = mainFirstRepay.add(mainMidRepay).add(mainLastRepay);
if (schedule.getIsOtherPolicy().equals("1")) {
//有其他融
//其他融期数
BigDecimal otherPeriod = new BigDecimal(schedule.getOtherPeriod());
//其他融首期月还
BigDecimal otherFirstRepay = schedule.getOtherFirstRepay().multiply(vehCount);
//其他融期间月还
BigDecimal otherMidRepay = otherPeriod.subtract(new BigDecimal("2")).multiply(schedule.getOtherMidRepay()).multiply(vehCount);
//其他融末期月还
BigDecimal otherLastRepay = schedule.getOtherLastRepay().multiply(vehCount);
otherAmount = otherFirstRepay.add(otherMidRepay).add(otherLastRepay);
amountAll = mainAmount.add(otherAmount);
record.setMainAmount(mainAmount.toString());
record.setOtherAmount(otherAmount.toString());
record.setAmountAll(amountAll.toString());
} else if (schedule.getIsOtherPolicy().equals("0")) {
//没有其他融
record.setMainAmount(mainAmount.toString());
record.setAmountAll(mainAmount.toString());
}
}
// record.setBuilded("是");
// List<LoanRepaymentHistory> histories = repaymentScheduleFeign.selHistoryBySid(repaymentSchedule.getData().getSid()).getData();
// if (histories.isEmpty() || histories == null) {
// record.setHandleBtn(true);
// }
// } else {
}
// else {
// record.setBuilded("否");
// if (StringUtils.isNotBlank(record.getBankContractNo())) {
// record.setHandleBtn(true);
@ -1095,7 +1270,7 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
}
public int setRepaymentState(String sid,String createTime) {
return baseMapper.setRepaymentState(sid,createTime);
public int setRepaymentState(String sid, String createTime) {
return baseMapper.setRepaymentState(sid, createTime);
}
}

14
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanCreateSchedulePdfVo.java

@ -61,4 +61,18 @@ public class LoanCreateSchedulePdfVo implements Vo {
private String sameBank;
private LoanSolutionsDetailsssVo solutionsDetailsssVo;
private String otherBankNo;
@ApiModelProperty("是否其中一台车不同")
private Boolean isDifferent ;
@ApiModelProperty("单独主产品首期月还")
private String singleMainFirstRepay;
@ApiModelProperty("单独主产品期间月还")
private String singleMainMidRepay;
@ApiModelProperty("单独主产品末期月还")
private String singleMainLastRepay;
@ApiModelProperty("单独其他融首期月还")
private String singleOtherFirstRepay;
@ApiModelProperty("单独其他融期间月还")
private String singleOtherMidRepay;
@ApiModelProperty("单独其他融末期月还")
private String singleOtherLastRepay;
}

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentSchedule.java

@ -74,6 +74,19 @@ public class LoanRepaymentSchedule extends BaseEntity {
private String otherBankNo;
@ApiModelProperty("推送财务凭证部门编码")
private String cwDeptNo;
@ApiModelProperty("是否其中一台车不同")
private String isDifferent ;
@ApiModelProperty("单独主产品首期月还")
private BigDecimal singleMainFirstRepay;
@ApiModelProperty("单独主产品期间月还")
private BigDecimal singleMainMidRepay;
@ApiModelProperty("单独主产品末期月还")
private BigDecimal singleMainLastRepay;
@ApiModelProperty("单独其他融首期月还")
private BigDecimal singleOtherFirstRepay;
@ApiModelProperty("单独其他融期间月还")
private BigDecimal singleOtherMidRepay;
@ApiModelProperty("单独其他融末期月还")
private BigDecimal singleOtherLastRepay;
}

9
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeign.java

@ -1,8 +1,8 @@
package com.yxt.anrui.riskcenter.api.loanrepaymentschedule;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusLoancontractForRepayQuery;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.LoanRepaymentPlanDetailsExportVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationQuery;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationVo;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -39,6 +39,11 @@ public interface LoanRepaymentScheduleFeign {
public ResultBean<LoanRepaymentSchedule> fetchBySid(@RequestParam("sid") String sid);
@PostMapping("/exportExcel")
@ApiOperation(value = "还款计划表导出")
public ResultBean<List<LoanRepaymentPlanDetailsExportVo>> exportExcel(@RequestBody List<String> sids);
@ApiOperation("生成还款计划表")
@PostMapping("/loanCreateSchedulePdf")
@ResponseBody

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeignFallback.java

@ -1,5 +1,7 @@
package com.yxt.anrui.riskcenter.api.loanrepaymentschedule;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusLoancontractForRepayQuery;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.LoanRepaymentPlanDetailsExportVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -26,6 +28,12 @@ public class LoanRepaymentScheduleFeignFallback implements LoanRepaymentSchedule
return null;
}
@Override
public ResultBean exportExcel(List<String> sids) {
return null;
}
@Override
public ResultBean<String> loanCreateSchedulePdf(LoanCreateSchedulePdfVo dto) {
return null;

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.java

@ -4,12 +4,12 @@ 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.buscenter.api.bussalesorderloancontract.LoanRepaymentPlanDetailsExportVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -40,4 +40,8 @@ public interface LoanRepaymentScheduleMapper extends BaseMapper<LoanRepaymentSch
List<MoneyAndPeriodVo> selPlansInfoByMainSidAndVinNo(@Param("mainSid") String mainSid, @Param("vinNo") String vinNo,@Param("mainOrOther") String mainOrOther);
String selSumAmountDueMoney(@Param("mainSid") String mainSid, @Param("vinNo") String vinNo,@Param("mainOrOther") String mainOrOther);
String selSumAmountDueMoneyByBusVinSid(@Param("mainSid") String mainSid,@Param("busVinSid") String busVinSid,@Param("mainOrOther") String mainOrOther);
List<LoanRepaymentPlanDetailsExportVo> selPlansExcel(@Param("sids") List<String> sids);
}

46
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.xml

@ -94,4 +94,48 @@
WHERE
scheduleSid = #{mainSid} AND policyOrOther = #{mainOrOther} AND vinNo LIKE CONCAT( '%', #{vinNo}, '%' )
</select>
</mapper>
<select id="selSumAmountDueMoneyByBusVinSid" resultType="java.lang.String">
SELECT
IFNULL(SUM(dueMoney),0)
FROM loan_repayment_plan_details
WHERE
scheduleSid = #{mainSid} AND policyOrOther = #{mainOrOther} AND busVinSid =#{busVinSid}
</select>
<select id="selPlansExcel"
resultType="com.yxt.anrui.buscenter.api.bussalesorderloancontract.LoanRepaymentPlanDetailsExportVo">
SELECT
@row_number := @row_number + 1 AS rankNo,
p.loanContractSid,
p.createTime,
p.customer,
p.staffName,
p.borrowerName,
p.vinNo,
p.vehMark,
p.loanContractNo,
p.bankContractNo,
p.bankName,
p.policyName,
p.period,
p.dueMoney,
p.dueDate,
CASE
p.policyOrOther
WHEN '1' THEN
'是'
WHEN '0' THEN
'否'
END AS policyOrOther,
p.dept,
p.useOrgName
FROM
loan_repayment_plan_details AS p,(
SELECT
@row_number := 0
) AS t
WHERE p.loanContractSid in
<foreach collection="sids" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
</mapper>

13
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleRest.java

@ -1,9 +1,11 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymentschedule;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusLoancontractForRepayQuery;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.LoanRepaymentPlanDetailsExportVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationVo;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -12,6 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
/**
@ -39,6 +44,12 @@ public class LoanRepaymentScheduleRest implements LoanRepaymentScheduleFeign {
return rb.success().setData(repaymentSchedule);
}
@Override
public ResultBean<List<LoanRepaymentPlanDetailsExportVo>> exportExcel(List<String> sids) {
return loanRepaymentScheduleService.exportExcel(sids);
}
@Override
public ResultBean<String> loanCreateSchedulePdf(LoanCreateSchedulePdfVo dto) {
return loanRepaymentScheduleService.loanCreateSchedulePdf(dto);

2376
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

File diff suppressed because it is too large

68
doc/databases/yxt-as.sql

@ -240,4 +240,70 @@ CREATE TABLE `as_busclaim_check`
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='索赔单待核对';
DEFAULT CHARSET = utf8 COMMENT ='索赔单待核对';
DROP TABLE IF EXISTS `as_busclaim_check_apply`;
CREATE TABLE `as_busclaim_check_apply`
(
`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 '1正常、0作废,申请-审批中-完成-作废',
`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',
`billNo` varchar(64) DEFAULT NULL COMMENT '单据编号',
`createByName` varchar(64) DEFAULT NULL COMMENT '申请人',
`createDeptSid` varchar(64) DEFAULT NULL COMMENT '申请部门sid',
`createDeptName` varchar(64) DEFAULT NULL COMMENT '申请部门',
`file` text DEFAULT NULL COMMENT '附件',
`createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid',
`useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid',
`useOrgName` varchar(64) DEFAULT NULL COMMENT '分公司',
`closeDate` varchar(64) DEFAULT NULL COMMENT '办结日期',
`procInstId` varchar(64) DEFAULT NULL COMMENT '实例id',
`procDefId` varchar(64) DEFAULT NULL COMMENT '流程定义id',
`taskId` varchar(64) DEFAULT NULL COMMENT '任务id',
`taskDefKey` varchar(64) DEFAULT NULL COMMENT '环节id',
`nodeState` varchar(64) DEFAULT NULL COMMENT '流程状态',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='索赔单调整申请';
DROP TABLE IF EXISTS `as_busclaim_check_apply_detail`;
CREATE TABLE `as_busclaim_check_apply_detail`
(
`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 '1正常、0作废,申请-审批中-完成-作废',
`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',
`billSid` varchar(64) DEFAULT NULL COMMENT '单据sid',
`repairBillNo` varchar(64) DEFAULT NULL COMMENT '维修工单号',
`vehMark` varchar(64) DEFAULT NULL COMMENT '车牌号',
`vinNo` varchar(64) DEFAULT NULL COMMENT '车架号',
`claimBillNo` varchar(64) DEFAULT NULL COMMENT '索赔单编号',
`billInvoiceSid` varchar(64) DEFAULT NULL COMMENT '索赔单开票sid',
`billInvoiceDetailSid` varchar(64) DEFAULT NULL COMMENT '索赔单开票明细sid',
`claimHourAmount` decimal(10, 2) DEFAULT NULL COMMENT '差异调整工时费',
`claimGoodsAmount` decimal(10, 2) DEFAULT NULL COMMENT '差异调整材料费',
`claimOutAmount` decimal(10, 2) DEFAULT NULL COMMENT '差异调整外出费',
`claimSubsidyAmount` decimal(10, 2) DEFAULT NULL COMMENT '差异调整厂家补助',
`claimOtherAmount` decimal(10, 2) DEFAULT NULL COMMENT '差异调整其他费用',
`reserved` decimal(10,2) DEFAULT NULL COMMENT '预留',
`reason` varchar(64) DEFAULT NULL COMMENT '调整原因',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='索赔单调整申请明细';

45
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApply.java

@ -0,0 +1,45 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApply extends BaseEntity {
private static final long serialVersionUID = 4492743919444158176L;
private String billNo;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请部门sid")
private String createDeptSid;
@ApiModelProperty("申请部门")
private String createDeptName;
@ApiModelProperty("附件")
private String file;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("使用组织sid")
private String useOrgSid;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("办结日期")
private String closeDate;
@ApiModelProperty("实例id")
private String procInstId;
@ApiModelProperty("流程定义id")
private String procDefId;
@ApiModelProperty("任务iD")
private String taskId;
@ApiModelProperty("环节iD")
private String taskDefKey;
@ApiModelProperty("流程状态")
private String nodeState;
}

35
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyDetailsVo.java

@ -0,0 +1,35 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetailVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyDetailsVo {
private String sid;
private String createBySid;
private String createByName;
// private String orgPath;
private String createTime;
@ApiModelProperty("申请部门sid")
private String createDeptSid;
@ApiModelProperty("申请部门")
private String createDeptName;
private List<String> fileList = new ArrayList<>();
private String remarks;
private List<AsBusclaimCheckApplyDetailVo> detailList = new ArrayList<>();
}

34
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyDto.java

@ -0,0 +1,34 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyDto {
private String sid;
private String createBySid;
private String createByName;
// private String orgPath;
private String createTime;
@ApiModelProperty("申请部门sid")
private String createDeptSid;
@ApiModelProperty("申请部门")
private String createDeptName;
private List<String> fileList = new ArrayList<>();
private String remarks;
private List<AsBusclaimCheckApplyDetailDto> detailsList = new ArrayList<>();
}

35
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyQuery.java

@ -0,0 +1,35 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyQuery implements Query {
private static final long serialVersionUID = -4951117831018159357L;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("申请部门")
private String createDeptName;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("申请日期开始时间")
private String createTimeStart;
@ApiModelProperty("申请日期结束时间")
private String createTimeEnd;
@ApiModelProperty("办结日期开始时间")
private String closeDateStart;
@ApiModelProperty("办结日期结束时间")
private String closeDateEnd;
private String createBySid;
private String orgPath;
}

36
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/AsBusclaimCheckApplyVo.java

@ -0,0 +1,36 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyVo {
//sid
private String sid;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("申请部门")
private String createDeptName;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请日期")
private String createTime;
@ApiModelProperty("办结日期")
private String closeDate;
private String file;
private List<String> fileList = new ArrayList<>();
}

23
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyDelegateQuery.java

@ -0,0 +1,23 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class BusclaimCheckApplyDelegateQuery {
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

18
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyNodeQuery.java

@ -0,0 +1,18 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class BusclaimCheckApplyNodeQuery {
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

24
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyNodeVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class BusclaimCheckApplyNodeVo {
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

43
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/BusclaimCheckApplyTaskQuery.java

@ -0,0 +1,43 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class BusclaimCheckApplyTaskQuery {
/**
* 终止驳回撤回
*/
@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;
}

35
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/CompleteBusclaimCheckApplyDto.java

@ -0,0 +1,35 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class CompleteBusclaimCheckApplyDto {
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
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;
}

19
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapply/flowable/SubmitBusclaimCheckApplyDto.java

@ -0,0 +1,19 @@
package com.yxt.anrui.as.api.asbusclaimcheckapply.flowable;
import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class SubmitBusclaimCheckApplyDto extends AsBusclaimCheckApplyDto {
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

48
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetail.java

@ -0,0 +1,48 @@
package com.yxt.anrui.as.api.asbusclaimcheckapplydetail;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyDetail extends BaseEntity {
private static final long serialVersionUID = -2991848535556294459L;
@ApiModelProperty("单据sid")
private String billSid;
@ApiModelProperty("索赔单号")
private String claimBillNo;
@ApiModelProperty("维修工单号")
private String repairBillNo;
@ApiModelProperty("车牌号")
private String vehmark;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("开票申请sid")
private String billInvoiceSid;
@ApiModelProperty("开票明细sid")
private String billInvoiceDetailSid;
@ApiModelProperty("索赔工时费")
private BigDecimal claimHourAmount;
@ApiModelProperty("索赔材料费")
private BigDecimal claimGoodsAmount;
@ApiModelProperty("外出费")
private BigDecimal claimOutAmount;
@ApiModelProperty("厂家补助费")
private BigDecimal claimSubsidyAmount;
@ApiModelProperty("其他费用")
private BigDecimal claimOtherAmount;
@ApiModelProperty("预留")
private BigDecimal reserved;
@ApiModelProperty("原因")
private String reason;
}

42
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailDto.java

@ -0,0 +1,42 @@
package com.yxt.anrui.as.api.asbusclaimcheckapplydetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyDetailDto {
@ApiModelProperty("索赔单号")
private String claimBillNo;
@ApiModelProperty("维修工单号")
private String repairBillNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("开票申请sid")
private String billInvoiceSid;
@ApiModelProperty("开票明细sid")
private String billInvoiceDetailSid;
@ApiModelProperty("索赔工时费")
private String claimHourAmount;
@ApiModelProperty("索赔材料费")
private String claimGoodsAmount;
@ApiModelProperty("外出费")
private String claimOutAmount;
@ApiModelProperty("厂家补助费")
private String claimSubsidyAmount;
@ApiModelProperty("其他费用")
private String claimOtherAmount;
@ApiModelProperty("预留")
private String reserved;
@ApiModelProperty("原因")
private String reason;
}

78
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailVo.java

@ -0,0 +1,78 @@
package com.yxt.anrui.as.api.asbusclaimcheckapplydetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Data
public class AsBusclaimCheckApplyDetailVo {
@ApiModelProperty("索赔单号")
private String claimBillNo;
@ApiModelProperty("维修工单号")
private String repairBillNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("开票申请sid")
private String billInvoiceSid;
@ApiModelProperty("开票明细sid")
private String billInvoiceDetailSid;
@ApiModelProperty("调整工时费")
private String claimHourAmount;
@ApiModelProperty("调整材料费")
private String claimGoodsAmount;
@ApiModelProperty("外出费")
private String claimOutAmount;
@ApiModelProperty("厂家补助费")
private String claimSubsidyAmount;
@ApiModelProperty("其他费用")
private String claimOtherAmount;
@ApiModelProperty("预留")
private String reserved;
@ApiModelProperty("原因")
private String reason;
//工单:工时费
private String hourAmount1;
//工单材料费
private String goodsAmount1;
//工单外出费
private String claimOutAmount1;
//工单厂家补助
private String claimSubsidyAmount1;
//工单其他费用
private String claimOtherAmount1;
//工单合计
private String all1;
//索赔开票工时费
private String claimHourAmount2;
//索赔开票材料费
private String claimGoodsAmount2;
//索赔开票外出费
private String claimOutAmount2;
//索赔开票厂家补助
private String claimSubsidyAmount2;
//索赔开票其他金额
private String claimOtherAmount2;
//合计
private String all2;
}

1
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/flowable/BusclaimInvoiceDelegateQuery.java

@ -11,7 +11,6 @@ import lombok.Data;
@Data
public class BusclaimInvoiceDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;

2
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimbill/AsBusclaimBillMapper.java

@ -21,4 +21,6 @@ public interface AsBusclaimBillMapper extends BaseMapper<AsBusclaimBill> {
IPage<AsBusclaimBillVo> listPage(IPage<AsBusclaimBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusclaimBill> qw);
int saveList(List<AsBusclaimBill> resultList);
AsBusclaimBill selectByBillNo(String billNo);
}

8
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimbill/AsBusclaimBillMapper.xml

@ -33,4 +33,12 @@
#{item.claimOtherAmount,jdbcType=DECIMAL})
</foreach>
</insert>
<select id="selectByBillNo" resultType="com.yxt.anrui.as.api.asbusclaimbill.AsBusclaimBill">
select *
from as_busclaim_bill
where billNo = #{billNo}
order by id desc
limit 1
</select>
</mapper>

4
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimbill/AsBusclaimBillService.java

@ -70,4 +70,8 @@ public class AsBusclaimBillService extends MybatisBaseService<AsBusclaimBillMapp
public int saveList(List<AsBusclaimBill> resultList) {
return baseMapper.saveList(resultList);
}
public AsBusclaimBill selectByBillNo(String billNo) {
return baseMapper.selectByBillNo(billNo);
}
}

38
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheck/AsBusclaimCheckService.java

@ -3,6 +3,7 @@ package com.yxt.anrui.as.biz.asbusclaimcheck;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.asbusclaimbill.AsBusclaimBill;
import com.yxt.anrui.as.api.asbusclaimcheck.AsBusclaimCheck;
import com.yxt.anrui.as.api.asbusclaimcheck.AsBusclaimCheckDto;
import com.yxt.anrui.as.api.asbusclaimcheck.AsBusclaimCheckQuery;
@ -10,12 +11,16 @@ import com.yxt.anrui.as.api.asbusclaimcheck.AsBusclaimCheckVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBill;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBillQuery;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBillVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetail;
import com.yxt.anrui.as.biz.asbusclaimbill.AsBusclaimBillService;
import com.yxt.anrui.as.biz.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetailService;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
@ -28,6 +33,12 @@ import java.util.List;
**/
@Service
public class AsBusclaimCheckService extends MybatisBaseService<AsBusclaimCheckMapper, AsBusclaimCheck> {
@Autowired
private AsBusclaimBillService asBusclaimBillService;
@Autowired
private AsBusclaimInvoiceBillDetailService asBusclaimInvoiceBillDetailService;
public ResultBean saveCheck(List<AsBusclaimCheckDto> list) {
ResultBean rb = ResultBean.fireFail();
list.removeAll(Collections.singleton(null));
@ -46,9 +57,36 @@ public class AsBusclaimCheckService extends MybatisBaseService<AsBusclaimCheckMa
AsBusclaimCheckQuery query = pagerQuery.getParams();
QueryWrapper<AsBusclaimCheck> qw = new QueryWrapper<>();
//ToDo:添加查询条件
if (StringUtils.isNotBlank(query.getRepairBillNo())) {
qw.like("ac.repairBillNo", query.getRepairBillNo());
}
IPage<AsBusclaimCheck> page = PagerUtil.queryToPage(pagerQuery);
IPage<AsBusclaimCheckVo> pagging = baseMapper.listPage(page, qw);
List<AsBusclaimCheckVo> records = pagging.getRecords();
records.removeAll(Collections.singleton(null));
if (!records.isEmpty()) {
for (int i = 0; i < records.size(); i++) {
AsBusclaimCheckVo asBusclaimCheckVo = records.get(i);
String billNo = asBusclaimCheckVo.getBillNo();
AsBusclaimBill asBusclaimBill = asBusclaimBillService.selectByBillNo(billNo);
if (asBusclaimBill != null) {
asBusclaimCheckVo.setHourAmount1(asBusclaimBill.getHourAmount().toString());
asBusclaimCheckVo.setGoodsAmount1(asBusclaimBill.getGoodsAmount().toString());
asBusclaimCheckVo.setClaimOutAmount1(asBusclaimBill.getClaimOutAmount().toString());
asBusclaimCheckVo.setClaimSubsidyAmount1(asBusclaimBill.getClaimSubsidyAmount().toString());
asBusclaimCheckVo.setClaimOtherAmount1(asBusclaimBill.getClaimOtherAmount().toString());
}
AsBusclaimInvoiceBillDetail asBusclaimInvoiceBillDetail = asBusclaimInvoiceBillDetailService.fetchBySid(asBusclaimCheckVo.getBillInvoiceDetailSid());
if (asBusclaimInvoiceBillDetail != null) {
asBusclaimCheckVo.setClaimHourAmount2(asBusclaimInvoiceBillDetail.getClaimHourAmount().toString());
asBusclaimCheckVo.setClaimGoodsAmount2(asBusclaimInvoiceBillDetail.getClaimGoodsAmount().toString());
asBusclaimCheckVo.setClaimOutAmount2(asBusclaimInvoiceBillDetail.getClaimOutAmount().toString());
asBusclaimCheckVo.setClaimSubsidyAmount2(asBusclaimInvoiceBillDetail.getClaimSubsidyAmount().toString());
asBusclaimCheckVo.setClaimOtherAmount2(asBusclaimInvoiceBillDetail.getClaimOtherAmount().toString());
}
}
}
PagerVo<AsBusclaimCheckVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}

26
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyMapper.java

@ -0,0 +1,26 @@
package com.yxt.anrui.as.biz.asbusclaimcheckapply;
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.as.api.asbusclaimcheckapply.AsBusclaimCheckApply;
import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Mapper
public interface AsBusclaimCheckApplyMapper extends BaseMapper<AsBusclaimCheckApply> {
IPage<AsBusclaimCheckApplyVo> listPage(IPage<AsBusclaimCheckApply> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusclaimCheckApply> qw);
int selectBySid(String join);
int updateFlowFiled(Map<String, Object> beanToMap);
}

44
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyMapper.xml

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.as.biz.asbusclaimcheckapply.AsBusclaimCheckApplyMapper">
<select id="listPage" resultType="com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyVo">
select a.sid,
a.nodeState,
a.billNo,
a.useOrgName,
a.createDeptName,
a.createByName,
DATE_FORMAT(a.createTime, '%Y-%m-%d') as createTime,
a.closeDate,
a.file
from as_busclaim_check_apply a
<where>
${ew.sqlSegment}
</where>
</select>
<select id="selectBySid" resultType="int">
select count(*)
from as_busclaim_check_apply
where length(nodeState) > 0
and find_in_set(sid, #{list})
</select>
<update id="updateFlowFiled">
UPDATE as_busclaim_check_apply
SET nodeState=#{nodeState}
<if test="taskDefKey != null and taskDefKey != ''">
, taskDefKey=#{taskDefKey}
</if>
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
</mapper>

110
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyRest.java

@ -0,0 +1,110 @@
package com.yxt.anrui.as.biz.asbusclaimcheckapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyDetailsVo;
import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyDto;
import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyQuery;
import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApplyVo;
import com.yxt.anrui.as.api.asbusclaimcheckapply.flowable.*;
import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
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.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @description: 索赔调整申请
* @author: dimengzhe
* @date: 2024/5/11
**/
@RestController
@RequestMapping("v1/AsBusclaimCheckApply")
public class AsBusclaimCheckApplyRest {
@Autowired
private AsBusclaimCheckApplyService asBusclaimCheckApplyService;
@PostMapping("/listPage")
@ApiOperation("索赔单调整分页")
ResultBean<PagerVo<AsBusclaimCheckApplyVo>> listPage(@RequestBody PagerQuery<AsBusclaimCheckApplyQuery> pagerQuery) {
ResultBean<PagerVo<AsBusclaimCheckApplyVo>> rb = ResultBean.fireFail();
PagerVo<AsBusclaimCheckApplyVo> pv = asBusclaimCheckApplyService.listPage(pagerQuery);
return rb.success().setData(pv);
}
@PostMapping("/saveOrUpdateBill")
@ApiOperation("新增修改保存")
ResultBean<String> saveOrUpdateBill(@RequestBody AsBusclaimCheckApplyDto dto) {
return asBusclaimCheckApplyService.saveOrUpdateBill(dto);
}
@ApiOperation("删除/批量删除")
@DeleteMapping("/delBySids")
ResultBean delBySids(@RequestBody String[] sids) {
return asBusclaimCheckApplyService.delAllBySids(sids);
}
@GetMapping("/details")
@ApiOperation("详情")
ResultBean<AsBusclaimCheckApplyDetailsVo> details(@RequestParam("sid") String sid) {
return asBusclaimCheckApplyService.details(sid);
}
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitBusclaimCheckApplyDto dto) {
return asBusclaimCheckApplyService.submitApply(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CompleteBusclaimCheckApplyDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return asBusclaimCheckApplyService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<BusclaimCheckApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap BusclaimCheckApplyNodeQuery query) {
return asBusclaimCheckApplyService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<BusclaimCheckApplyNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap BusclaimCheckApplyNodeQuery query) {
return asBusclaimCheckApplyService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody BusclaimCheckApplyTaskQuery query) {
return asBusclaimCheckApplyService.taskReject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody BusclaimCheckApplyTaskQuery query) {
return asBusclaimCheckApplyService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody BusclaimCheckApplyTaskQuery query) {
return asBusclaimCheckApplyService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody BusclaimCheckApplyDelegateQuery query) {
return asBusclaimCheckApplyService.delegate(query);
}
}

530
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapply/AsBusclaimCheckApplyService.java

@ -0,0 +1,530 @@
package com.yxt.anrui.as.biz.asbusclaimcheckapply;
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.as.api.asbusclaimbill.AsBusclaimBill;
import com.yxt.anrui.as.api.asbusclaimcheckapply.*;
import com.yxt.anrui.as.api.asbusclaimcheckapply.flowable.*;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailDto;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetail;
import com.yxt.anrui.as.biz.asbusclaimbill.AsBusclaimBillService;
import com.yxt.anrui.as.biz.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailMapper;
import com.yxt.anrui.as.biz.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailService;
import com.yxt.anrui.as.biz.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetailService;
import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.anrui.as.feign.flowable.flow.FlowableFeign;
import com.yxt.anrui.as.feign.flowable.flow.ProcDefEnum;
import com.yxt.anrui.as.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.anrui.as.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.anrui.as.feign.flowable.flow2.FlowFeign;
import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.anrui.as.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.anrui.as.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.anrui.as.feign.message.MessageFeign;
import com.yxt.anrui.as.feign.message.MessageFlowVo;
import com.yxt.anrui.as.feign.message.MessageFlowableQuery;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils;
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: 2024/5/11
**/
@Service
public class AsBusclaimCheckApplyService extends MybatisBaseService<AsBusclaimCheckApplyMapper, AsBusclaimCheckApply> {
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private AsBusclaimCheckApplyDetailService asBusclaimCheckApplyDetailService;
@Autowired
private AsBusclaimCheckApplyDetailMapper asBusclaimCheckApplyDetailMapper;
@Autowired
private AsBusclaimBillService asBusclaimBillService;
@Autowired
private AsBusclaimInvoiceBillDetailService asBusclaimInvoiceBillDetailService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowableFeign flowableFeign;
public PagerVo<AsBusclaimCheckApplyVo> listPage(PagerQuery<AsBusclaimCheckApplyQuery> pagerQuery) {
AsBusclaimCheckApplyQuery query = pagerQuery.getParams();
QueryWrapper<AsBusclaimCheckApply> qw = new QueryWrapper<>();
//ToDo:添加查询条件
//分公司
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("a.useOrgName", query.getUseOrgName());
}
//申请部门
if (StringUtils.isNotBlank(query.getCreateDeptName())) {
qw.like("a.createDeptName", query.getCreateDeptName());
}
//申请人
if (StringUtils.isNotBlank(query.getCreateByName())) {
qw.like("a.createByName", query.getCreateByName());
}
//单据编号
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("a.billNo", query.getBillNo());
}
//申请日期开始时间-申请日期结束时间
qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (a.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (a.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')"
);
//办结日期开始时间-办结日期结束时间
qw.apply(StringUtils.isNotBlank(query.getCloseDateStart()), "date_format (a.closeDate,'%Y-%m-%d') >= date_format('" + query.getCloseDateStart() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getCloseDateEnd()), "date_format (a.closeDate,'%Y-%m-%d') <= date_format('" + query.getCloseDateEnd() + "','%Y-%m-%d')"
);
IPage<AsBusclaimCheckApply> page = PagerUtil.queryToPage(pagerQuery);
IPage<AsBusclaimCheckApplyVo> pagging = baseMapper.listPage(page, qw);
List<AsBusclaimCheckApplyVo> records = pagging.getRecords();
records.removeAll(Collections.singleton(null));
if (!records.isEmpty()) {
for (int i = 0; i < records.size(); i++) {
AsBusclaimCheckApplyVo asBusclaimCheckApplyVo = records.get(i);
String file = asBusclaimCheckApplyVo.getFile();
if (StringUtils.isNotBlank(file)) {
List<String> processFile = Arrays.asList(file.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
asBusclaimCheckApplyVo.setFileList(processFile);
}
}
}
PagerVo<AsBusclaimCheckApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<String> saveOrUpdateBill(AsBusclaimCheckApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
if (StringUtils.isBlank(sid)) {
AsBusclaimCheckApply asBusclaimCheckApply = new AsBusclaimCheckApply();
BeanUtil.copyProperties(dto, asBusclaimCheckApply, "sid");
asBusclaimCheckApply.setCreateBySid(dto.getCreateBySid());
sid = asBusclaimCheckApply.getSid();
List<String> fileList = dto.getFileList();
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
String files = String.join(",", fileList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
asBusclaimCheckApply.setFile(files);
}
List<AsBusclaimCheckApplyDetailDto> detailList = dto.getDetailsList();
detailList.removeAll(Collections.singleton(null));
if (!detailList.isEmpty()) {
asBusclaimCheckApplyDetailService.saveOrUpdateDetails(sid, detailList);
}
baseMapper.insert(asBusclaimCheckApply);
} else {
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(sid);
if (asBusclaimCheckApply == null) {
return rb.setMsg("该单据不存在");
}
BeanUtil.copyProperties(dto, asBusclaimCheckApply, "sid");
List<String> fileList = dto.getFileList();
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
String files = String.join(",", fileList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
asBusclaimCheckApply.setFile(files);
}
List<AsBusclaimCheckApplyDetailDto> detailList = dto.getDetailsList();
detailList.removeAll(Collections.singleton(null));
if (!detailList.isEmpty()) {
asBusclaimCheckApplyDetailService.saveOrUpdateDetails(sid, detailList);
}
baseMapper.updateById(asBusclaimCheckApply);
}
return rb.success().setData(sid);
}
public ResultBean delAllBySids(String[] sids) {
ResultBean rb = ResultBean.fireFail();
//查询该sid中是否有流程不是待提交的
int count = baseMapper.selectBySid(StringUtils.join(sids, ","));
if (count > 0) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
List<String> sidss = Arrays.asList(sids);
for (int i = 0; i < sidss.size(); i++) {
asBusclaimCheckApplyDetailMapper.deleteByMainSid(sidss.get(i));
}
delBySids(sids);
return rb.success().setMsg("删除成功");
}
public ResultBean<AsBusclaimCheckApplyDetailsVo> details(String sid) {
ResultBean<AsBusclaimCheckApplyDetailsVo> rb = ResultBean.fireFail();
AsBusclaimCheckApplyDetailsVo asBusclaimCheckApplyDetailsVo = new AsBusclaimCheckApplyDetailsVo();
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(sid);
if (asBusclaimCheckApply == null) {
return rb.setMsg("该单据不存在");
}
BeanUtil.copyProperties(asBusclaimCheckApply, asBusclaimCheckApplyDetailsVo);
if (StringUtils.isNotBlank(asBusclaimCheckApply.getFile())) {
List<String> fileList = Arrays.asList(asBusclaimCheckApply.getFile().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
asBusclaimCheckApplyDetailsVo.setFileList(fileList);
}
List<AsBusclaimCheckApplyDetailVo> detailList = asBusclaimCheckApplyDetailService.selectDetails(sid);
detailList.removeAll(Collections.singleton(null));
if (!detailList.isEmpty()) {
for (int i = 0; i < detailList.size(); i++) {
AsBusclaimCheckApplyDetailVo asBusclaimCheckApplyDetailVo = detailList.get(i);
String billNo = asBusclaimCheckApplyDetailVo.getClaimBillNo();
AsBusclaimBill asBusclaimBill = asBusclaimBillService.selectByBillNo(billNo);
if (asBusclaimBill != null) {
asBusclaimCheckApplyDetailVo.setHourAmount1(asBusclaimBill.getHourAmount().toString());
asBusclaimCheckApplyDetailVo.setGoodsAmount1(asBusclaimBill.getGoodsAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimOutAmount1(asBusclaimBill.getClaimOutAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimSubsidyAmount1(asBusclaimBill.getClaimSubsidyAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimOtherAmount1(asBusclaimBill.getClaimOtherAmount().toString());
}
AsBusclaimInvoiceBillDetail asBusclaimInvoiceBillDetail = asBusclaimInvoiceBillDetailService.fetchBySid(asBusclaimCheckApplyDetailVo.getBillInvoiceDetailSid());
if (asBusclaimInvoiceBillDetail != null) {
asBusclaimCheckApplyDetailVo.setClaimHourAmount2(asBusclaimInvoiceBillDetail.getClaimHourAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimGoodsAmount2(asBusclaimInvoiceBillDetail.getClaimGoodsAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimOutAmount2(asBusclaimInvoiceBillDetail.getClaimOutAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimSubsidyAmount2(asBusclaimInvoiceBillDetail.getClaimSubsidyAmount().toString());
asBusclaimCheckApplyDetailVo.setClaimOtherAmount2(asBusclaimInvoiceBillDetail.getClaimOtherAmount().toString());
}
}
asBusclaimCheckApplyDetailsVo.setDetailList(detailList);
}
return rb.success().setData(asBusclaimCheckApplyDetailsVo);
}
public ResultBean submitApply(SubmitBusclaimCheckApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, asBusclaimCheckApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
ResultBean<String> resultBean = saveOrUpdateBill(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
asBusclaimCheckApply = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//用户的部门全路径sid
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asBusclaimCheckApply.getCreateDeptSid()).getData();
if (sysOrganization != null) {
bv.setOrgSidPath(sysOrganization.getOrgSidPath());
}
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getCreateBySid());
bv.setFormVariables(variables);
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.ASBUSCLAIMCHECKAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
asBusclaimCheckApply = fetchBySid(businessSid);
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
AsBusclaimCheckApply finalAsBusclaimCheckApply = asBusclaimCheckApply;
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(finalAsBusclaimCheckApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("索赔单调整申请");
ResultBean<String> 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(asBusclaimCheckApply.getTaskId());
bv.setTaskDefKey(asBusclaimCheckApply.getTaskDefKey());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private int updateFlowFiled(Map<String, Object> beanToMap) {
return baseMapper.updateFlowFiled(beanToMap);
}
private int submitBusinessData(SubmitBusclaimCheckApplyDto dto, AsBusclaimCheckApply asBusclaimCheckApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (asBusclaimCheckApply != null) {
String businessTaskId = asBusclaimCheckApply.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();
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(asBusclaimCheckApply.getCreateDeptSid()).getData();
if (sysOrganization != null) {
bv.setOrgSidPath(sysOrganization.getOrgSidPath());
}
bv.setModelId(asBusclaimCheckApply.getProcDefId());
if (bv.getTaskId().equals(asBusclaimCheckApply.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.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())) {
asBusclaimCheckApply = fetchBySid(businessSid);
asBusclaimCheckApply.setCloseDate(DateUtil.today());
baseMapper.updateById(asBusclaimCheckApply);
} else {
//极光推送
asBusclaimCheckApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcDefId(asBusclaimCheckApply.getProcDefId());
messageFlowVo.setProcInsId(asBusclaimCheckApply.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("索赔单调整申请");
messageFlowableQuery.setMsgContent(asBusclaimCheckApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("索赔单调整申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<BusclaimCheckApplyNodeVo>> getPreviousNodesForReject(BusclaimCheckApplyNodeQuery query) {
ResultBean<List<BusclaimCheckApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(query.getBusinessSid());
bv.setModelId(asBusclaimCheckApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<BusclaimCheckApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BusclaimCheckApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<BusclaimCheckApplyNodeVo>> getNextNodesForSubmit(BusclaimCheckApplyNodeQuery query) {
ResultBean<List<BusclaimCheckApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(query.getBusinessSid());
bv.setModelId(asBusclaimCheckApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<BusclaimCheckApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BusclaimCheckApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean taskReject(BusclaimCheckApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(businessSid);
if (asBusclaimCheckApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = asBusclaimCheckApply.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<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
asBusclaimCheckApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = asBusclaimCheckApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(asBusclaimCheckApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("索赔单调整申请");
ResultBean<List<LatestTaskVo>> 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(asBusclaimCheckApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("索赔单调整申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(BusclaimCheckApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(query.getBusinessSid());
String businessTaskId = asBusclaimCheckApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> 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 breakProcess(BusclaimCheckApplyTaskQuery 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("请填写意见");
}
AsBusclaimCheckApply asBusclaimCheckApply = fetchBySid(query.getBusinessSid());
String businessTaskId = asBusclaimCheckApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(asBusclaimCheckApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> 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<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(BusclaimCheckApplyDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

20
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailMapper.java

@ -0,0 +1,20 @@
package com.yxt.anrui.as.biz.asbusclaimcheckapplydetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetail;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Mapper
public interface AsBusclaimCheckApplyDetailMapper extends BaseMapper<AsBusclaimCheckApplyDetail> {
int deleteByMainSid(String sid);
List<AsBusclaimCheckApplyDetailVo> selectDetails(String sid);
}

30
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailMapper.xml

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.as.biz.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailMapper">
<delete id="deleteByMainSid">
delete
from as_busclaim_check_apply_detail
where billSid = #{sid}
</delete>
<select id="selectDetails"
resultType="com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailVo">
select a.claimBillNo,
a.repairBillNo,
a.vehmark,
a.vinNo,
a.claimHourAmount,
a.claimGoodsAmount,
a.claimOutAmount,
a.claimSubsidyAmount,
a.claimOtherAmount,
a.repairBillNo,
a.reserved,
a.reason,
a.claimBillNo,
a.billInvoiceSid,
a.billInvoiceDetailSid
from as_busclaim_check_apply_detail a
where billSid = #{sid}
</select>
</mapper>

14
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailRest.java

@ -0,0 +1,14 @@
package com.yxt.anrui.as.biz.asbusclaimcheckapplydetail;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@RestController
@RequestMapping("v1/AsBusclaimCheckApplyDetail")
public class AsBusclaimCheckApplyDetailRest {
}

35
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaimcheckapplydetail/AsBusclaimCheckApplyDetailService.java

@ -0,0 +1,35 @@
package com.yxt.anrui.as.biz.asbusclaimcheckapplydetail;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetail;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailDto;
import com.yxt.anrui.as.api.asbusclaimcheckapplydetail.AsBusclaimCheckApplyDetailVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetail;
import com.yxt.anrui.as.api.asbusclaiminvoicebilldetail.AsBusclaimInvoiceBillDetailDto;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/11
**/
@Service
public class AsBusclaimCheckApplyDetailService extends MybatisBaseService<AsBusclaimCheckApplyDetailMapper, AsBusclaimCheckApplyDetail> {
public void saveOrUpdateDetails(String sid, List<AsBusclaimCheckApplyDetailDto> detailList) {
baseMapper.deleteByMainSid(sid);
for (int i = 0; i < detailList.size(); i++) {
AsBusclaimCheckApplyDetailDto dto = detailList.get(i);
AsBusclaimCheckApplyDetail asBusclaimCheckApplyDetail = new AsBusclaimCheckApplyDetail();
BeanUtil.copyProperties(dto, asBusclaimCheckApplyDetail, "sid");
asBusclaimCheckApplyDetail.setBillSid(sid);
baseMapper.insert(asBusclaimCheckApplyDetail);
}
}
public List<AsBusclaimCheckApplyDetailVo> selectDetails(String sid) {
return baseMapper.selectDetails(sid);
}
}

1
yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java

@ -12,6 +12,7 @@ public enum ProcDefEnum {
ASOLDPARTHANDLEAPPLY("旧件处理申请", "process_sshks74p:1:10887504"),
REVERSESETTLEAPPLY("工单反结算申请", "process_g3r02po8:1:10975004"),
ASBUSCLAIMINVOICEBILL("索赔单开票申请", "process_33p7rz6h:1:11297504"),
ASBUSCLAIMCHECKAPPLY("索赔单调整申请", "process_7icw4lhq:1:11310004"),
;

10
yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java

@ -66,8 +66,6 @@ public class PmsPurchaseBillRest {
@Autowired
private PmsPurchaseBillService pmsPurchaseBillService;
@Autowired
private HttpServletResponse response;
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
@ -77,6 +75,14 @@ public class PmsPurchaseBillRest {
return rb.success().setData(pv);
}
@ApiOperation("选择原单")
@PostMapping("/choiceBillListPage")
public ResultBean<PagerVo<PmsPurchaseChoiceBillVo>> choiceBillListPage(@RequestBody PagerQuery<PmsPurchaseBillQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<PmsPurchaseChoiceBillVo> pv = pmsPurchaseBillService.choiceBillListPage(pq);
return rb.success().setData(pv);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean<String> save(@RequestBody PmsPurchaseBillDto dto){

58
yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java

@ -25,17 +25,24 @@
*********************************************************/
package com.yxt.pms.apiadmin.pms;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.pms.biz.pms.pmspurchasebackbill.*;
import com.yxt.pms.biz.pms.pmspurchasebackbill.flowable.*;
import com.yxt.pms.biz.pms.pmspurchasebill.flowable.*;
import com.yxt.pms.feign.flowable.flow.BusinessVariables;
import com.yxt.pms.feign.flowable.flow.ProcDefEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
@ -94,4 +101,55 @@ public class PmsPurchasebackBillRest {
PmsPurchasebackBillDetailsVo vo = pmsPurchasebackBillService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid SubmitPmsPurchasebackBillDto dto) {
return pmsPurchasebackBillService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody PmsPurchasebackBillCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
return pmsPurchasebackBillService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
public ResultBean<List<PmsPurchasebackBillNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap PmsPurchasebackBillNodeQuery query) {
return pmsPurchasebackBillService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
public ResultBean<List<PmsPurchasebackBillNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap PmsPurchasebackBillNodeQuery query) {
return pmsPurchasebackBillService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) {
return pmsPurchasebackBillService.reject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) {
return pmsPurchasebackBillService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) {
return pmsPurchasebackBillService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody PmsPurchasebackBillDelegateQuery query) {
return pmsPurchasebackBillService.delegate(query);
}
}

5
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java

@ -77,6 +77,11 @@ public class PmsPurchasebackBill extends BaseEntity {
@ApiModelProperty("单据状态")
private String documentState;
@ApiModelProperty("应付金额")
private BigDecimal paidAmount;
@ApiModelProperty("应收金额")
private BigDecimal receivableAmount;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("申请部门名称")

5
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java

@ -81,6 +81,11 @@ public class PmsPurchasebackBillDetailsVo implements Vo {
@ApiModelProperty("转入预付款")
private BigDecimal toPrepayment; // 转入预付款
@ApiModelProperty("应付金额")
private BigDecimal paidAmount;
@ApiModelProperty("应收金额")
private BigDecimal receivableAmount;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("申请部门名称")

5
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java

@ -80,6 +80,11 @@ public class PmsPurchasebackBillDto implements Dto {
@ApiModelProperty("转入预付款")
private BigDecimal toPrepayment; // 转入预付款
@ApiModelProperty("应付金额")
private BigDecimal paidAmount;
@ApiModelProperty("应收金额")
private BigDecimal receivableAmount;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("申请部门名称")

4
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java

@ -35,6 +35,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* Project: yxt-pms(采购) <br/>
@ -54,4 +55,7 @@ public interface PmsPurchasebackBillMapper extends BaseMapper<PmsPurchasebackBil
IPage<PmsPurchasebackBillVo> selectPageVo(IPage<PmsPurchasebackBill> page, @Param(Constants.WRAPPER) Wrapper<PmsPurchasebackBill> qw);
String selectNum(String billNo);
int updateFlowFiled(Map<String, Object> map);
}

29
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml

@ -17,7 +17,8 @@
pb.`purchaseReasonValue`,
pb.`purchaseTypeValue`,
pb.supplierName,
SUM(ppbd.backAmount) AS backAmountCount
SUM(ppbd.backAmount) AS backAmountCount,
ppb.receivableAmount
FROM
pms_purchaseback_bill ppb
LEFT JOIN pms_purchase_bill pb
@ -26,4 +27,30 @@
ON ppb.`sid` = ppbd.`billSid`
<where> ${ew.sqlSegment} </where>
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from pms_purchaseback_bill
where billNo LIKE concat(#{billNo}, '%')
order by billNo desc
limit 1
</select>
<update id="updateFlowFiled">
UPDATE pms_purchaseback_bill
SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
<if test="nodeState == '已办结' or nodeState == '终止'">
, finishTime = NOW()
</if>
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid=#{sid}
</update>
</mapper>

311
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java

@ -26,19 +26,30 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.core.result.ResultBean;
import com.yxt.pms.biz.pms.pmspurchasebackbill.flowable.*;
import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailDetailsVo;
import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailDto;
import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailService;
import com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseBill;
import com.yxt.pms.biz.pms.pmspurchasebill.flowable.*;
import com.yxt.pms.biz.pms.pmspurchasebilldetail.PmsPurchaseBillDetailService;
import com.yxt.pms.biz.pms.pmspurchasebillinvoice.PmsPurchaseBillInvoiceService;
import com.yxt.pms.biz.pms.pmspurchasepay.PmsPurchasePayService;
import com.yxt.pms.feign.flowable.flow.FlowableFeign;
import com.yxt.pms.feign.flowable.flow.*;
import com.yxt.pms.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.pms.feign.flowable.flow2.FlowFeign;
import com.yxt.pms.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.pms.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.pms.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.pms.feign.message.MessageFeign;
import com.yxt.pms.feign.message.MessageFlowVo;
import com.yxt.pms.feign.message.MessageFlowableQuery;
import com.yxt.pms.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.pms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.pms.feign.portal.sysstafforg.SysStaffOrgFeign;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
@ -49,8 +60,8 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* Project: yxt-pms(采购) <br/>
@ -185,4 +196,298 @@ public class PmsPurchasebackBillService extends MybatisBaseService<PmsPurchaseba
pmsPurchasebackDetailService.delByMainSid(sid);
}
}
public ResultBean submit(SubmitPmsPurchasebackBillDto dto) {
ResultBean rb = ResultBean.fireFail();
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, pmsPurchasebackBill);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
String businessSid = saveOrUpdateDto(dto);
pmsPurchasebackBill = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//用户的部门全路径sid
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(pmsPurchasebackBill.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(pmsPurchasebackBill.getCreateBySid());
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
variables.put("app", appMap);
//流程定义id
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
bv.setFormVariables(variables);
if (r == 1) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
pmsPurchasebackBill = fetchBySid(businessSid);
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(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("采购退货单申请");
messageFeign.pushMessage(messageFlowableQuery);
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(pmsPurchasebackBill.getTaskId());
bv.setTaskDefKey(pmsPurchasebackBill.getNodeId());
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private synchronized int submitBusinessData(SubmitPmsPurchasebackBillDto dto, PmsPurchasebackBill pmsPurchasebackBill) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (pmsPurchasebackBill != null) {
String businessTaskId = pmsPurchasebackBill.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;
}
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
if (StringUtils.isBlank(pmsPurchasebackBill.getProcDefId())) {
flowProcessMapQuery.setProDefKey(bv.getModelId());
} else {
flowProcessMapQuery.setProDefKey(pmsPurchasebackBill.getProcDefId());
}
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(pmsPurchasebackBill.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
if (bv.getTaskId().equals(pmsPurchasebackBill.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.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 {
//极光推送
pmsPurchasebackBill = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcDefId(pmsPurchasebackBill.getProcDefId());
ufVo.setProcInsId(pmsPurchasebackBill.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("采购退货单申请");
messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("采购退货单申请");
messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<PmsPurchasebackBillNodeVo>> getPreviousNodesForReject(PmsPurchasebackBillNodeQuery query) {
ResultBean<List<PmsPurchasebackBillNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<PmsPurchasebackBillNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), PmsPurchasebackBillNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<PmsPurchasebackBillNodeVo>> getNextNodesForSubmit(PmsPurchasebackBillNodeQuery query) {
ResultBean<List<PmsPurchasebackBillNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<PmsPurchasebackBillNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), PmsPurchasebackBillNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean reject(PmsPurchasebackBillTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(businessSid);
if (pmsPurchasebackBill == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = pmsPurchasebackBill.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<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
pmsPurchasebackBill = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = pmsPurchasebackBill.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(pmsPurchasebackBill.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("采购退货单申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(pmsPurchasebackBill.getCreateBySid())) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("采购退货单申请");
messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(PmsPurchasebackBillTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(query.getBusinessSid());
String businessTaskId = pmsPurchasebackBill.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> 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 breakProcess(PmsPurchasebackBillTaskQuery 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("请填写意见");
}
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(query.getBusinessSid());
String businessTaskId = pmsPurchasebackBill.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(pmsPurchasebackBill.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> 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<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(PmsPurchasebackBillDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

37
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java

@ -0,0 +1,37 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 14:57
* @Description
*/
@Data
public class PmsPurchasebackBillCompleteDto implements Dto {
private static final long serialVersionUID = 6378752532534735663L;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id(PC)")
private String instanceId;
@ApiModelProperty(value = "流程id(移动)")
private String procInsId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
private String orgPath;
}

26
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class PmsPurchasebackBillDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

25
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java

@ -0,0 +1,25 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:04
* @Description
*/
@Data
public class PmsPurchasebackBillNodeQuery implements Query {
private static final long serialVersionUID = 9117613683840483366L;
@ApiModelProperty(value = "环节定义id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
private Integer next;
}

26
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java

@ -0,0 +1,26 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:03
* @Description
*/
@Data
public class PmsPurchasebackBillNodeVo implements Vo {
private static final long serialVersionUID = -833419512294877848L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

48
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java

@ -0,0 +1,48 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:06
* @Description
*/
@Data
public class PmsPurchasebackBillTaskQuery implements Query {
private static final long serialVersionUID = 1288615499873178778L;
/**
* 终止驳回撤回
*/
@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(PC)")
private String instanceId;
@ApiModelProperty("流程实例Id(移动)")
private String procInsId;
}

25
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java

@ -0,0 +1,25 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.pms.biz.pms.pmspurchasebackbill.PmsPurchasebackBillDto;
import com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseBillDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liuguohui
* @version 1.0
* @description
* @date 2022/04/13
*/
@ApiModel("提交")
@Data
public class SubmitPmsPurchasebackBillDto extends PmsPurchasebackBillDto {
@ApiModelProperty("意见")
private String comment;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

12
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetail.java

@ -56,8 +56,6 @@ public class PmsPurchasebackDetail extends BaseEntity {
private String createByName; // 制单人姓名
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品库存sid")
private String inventorySid; // 商品库存sid
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
@ -70,22 +68,12 @@ public class PmsPurchasebackDetail extends BaseEntity {
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格")
private String goodsSkuOwnSpec; // 规格
@ApiModelProperty("退货前的库存数量")
private BigDecimal currentCount; // 退货前的库存数量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库区/货位sid")
private String areaSid; // 库区/货位sid
@ApiModelProperty("库区名称")
private String warehouseAreaName; // 库区名称
@ApiModelProperty("货架sid")
private String rackSid; // 货架sid
@ApiModelProperty("货架名称")
private String warehouseRackName; // 货架名称
@ApiModelProperty("已退数量")
private BigDecimal returnedCount; // 已退数量
@ApiModelProperty("退货数量")

12
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailDetailsVo.java

@ -57,8 +57,6 @@ public class PmsPurchasebackDetailDetailsVo implements Vo {
private String createByName; // 制单人姓名
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品库存sid")
private String inventorySid; // 商品库存sid
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
@ -71,22 +69,12 @@ public class PmsPurchasebackDetailDetailsVo implements Vo {
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格")
private String goodsSkuOwnSpec; // 规格
@ApiModelProperty("退货前的库存数量")
private BigDecimal currentCount; // 退货前的库存数量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库区/货位sid")
private String areaSid; // 库区/货位sid
@ApiModelProperty("库区名称")
private String warehouseAreaName; // 库区名称
@ApiModelProperty("货架sid")
private String rackSid; // 货架sid
@ApiModelProperty("货架名称")
private String warehouseRackName; // 货架名称
@ApiModelProperty("已退数量")
private BigDecimal returnedCount; // 已退数量
@ApiModelProperty("退货数量")

12
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailDto.java

@ -57,8 +57,6 @@ public class PmsPurchasebackDetailDto implements Dto {
private String createByName; // 制单人姓名
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品库存sid")
private String inventorySid; // 商品库存sid
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
@ -71,22 +69,12 @@ public class PmsPurchasebackDetailDto implements Dto {
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格")
private String goodsSkuOwnSpec; // 规格
@ApiModelProperty("退货前的库存数量")
private BigDecimal currentCount; // 退货前的库存数量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库区/货位sid")
private String areaSid; // 库区/货位sid
@ApiModelProperty("库区名称")
private String warehouseAreaName; // 库区名称
@ApiModelProperty("货架sid")
private String rackSid; // 货架sid
@ApiModelProperty("货架名称")
private String warehouseRackName; // 货架名称
@ApiModelProperty("已退数量")
private BigDecimal returnedCount; // 已退数量
@ApiModelProperty("退货数量")

5
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailMapper.java

@ -54,11 +54,6 @@ public interface PmsPurchasebackDetailMapper extends BaseMapper<PmsPurchasebackD
IPage<PmsPurchasebackDetailVo> selectPageVo(IPage<PmsPurchasebackDetail> page, @Param(Constants.WRAPPER) Wrapper<PmsPurchasebackDetail> qw);
List<PmsPurchasebackDetailVo> selectListAllVo(@Param(Constants.WRAPPER) Wrapper<PmsPurchasebackDetail> qw);
@Select("select * from pms_purchaseback_detail")
List<PmsPurchasebackDetailVo> selectListVo();
@Delete("delete from pms_purchaseback_detail where billSid = #{dtoSid}")
void delByMainSid(String dtoSid);

4
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailMapper.xml

@ -6,8 +6,4 @@
<select id="selectPageVo" resultType="com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailVo">
SELECT * FROM pms_purchaseback_detail <where> ${ew.sqlSegment} </where>
</select>
<select id="selectListAllVo" resultType="com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailVo">
SELECT * FROM pms_purchaseback_detail <where> ${ew.sqlSegment} </where>
</select>
</mapper>

45
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailQuery.java

@ -51,49 +51,4 @@ import java.math.BigDecimal;
@ApiModel(value = "采购退货单据明细 查询条件", description = "采购退货单据明细 查询条件")
public class PmsPurchasebackDetailQuery implements Query {
@ApiModelProperty("制单人姓名")
private String createByName; // 制单人姓名
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品库存sid")
private String inventorySid; // 商品库存sid
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("商品Skusid")
private String goodsSkuSid; // 商品Skusid
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle; // 商品Sku名称
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格")
private String goodsSkuOwnSpec; // 规格
@ApiModelProperty("退货前的库存数量")
private BigDecimal currentCount; // 退货前的库存数量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库区/货位sid")
private String areaSid; // 库区/货位sid
@ApiModelProperty("库区名称")
private String warehouseAreaName; // 库区名称
@ApiModelProperty("货架sid")
private String rackSid; // 货架sid
@ApiModelProperty("货架名称")
private String warehouseRackName; // 货架名称
@ApiModelProperty("已退数量")
private BigDecimal returnedCount; // 已退数量
@ApiModelProperty("退货数量")
private BigDecimal backCount; // 退货数量
@ApiModelProperty("税额")
private BigDecimal maxAmount; // 税额
@ApiModelProperty("含税价")
private BigDecimal maxPrice; // 含税价
@ApiModelProperty("退货金额")
private BigDecimal backAmount; // 退货金额
}

47
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackdetail/PmsPurchasebackDetailVo.java

@ -51,51 +51,4 @@ import java.math.BigDecimal;
@ApiModel(value = "采购退货单据明细 视图数据对象", description = "采购退货单据明细 视图数据对象")
public class PmsPurchasebackDetailVo implements Vo {
private String sid; // sid
@ApiModelProperty("制单人姓名")
private String createByName; // 制单人姓名
@ApiModelProperty("单据sid")
private String billSid; // 单据sid
@ApiModelProperty("商品库存sid")
private String inventorySid; // 商品库存sid
@ApiModelProperty("商品基础信息Sid")
private String goodsSpuSid; // 商品基础信息Sid
@ApiModelProperty("商品名称")
private String goodsSpuName; // 商品名称
@ApiModelProperty("商品Skusid")
private String goodsSkuSid; // 商品Skusid
@ApiModelProperty("商品Sku名称")
private String goodsSkuTitle; // 商品Sku名称
@ApiModelProperty("商品编码(图号)")
private String goodsSkuCode; // 商品编码(图号)
@ApiModelProperty("规格")
private String goodsSkuOwnSpec; // 规格
@ApiModelProperty("退货前的库存数量")
private BigDecimal currentCount; // 退货前的库存数量
@ApiModelProperty("计量单位")
private String unit; // 计量单位
@ApiModelProperty("仓库sid")
private String warehouseSid; // 仓库sid
@ApiModelProperty("仓库名称")
private String warehouseName; // 仓库名称
@ApiModelProperty("库区/货位sid")
private String areaSid; // 库区/货位sid
@ApiModelProperty("库区名称")
private String warehouseAreaName; // 库区名称
@ApiModelProperty("货架sid")
private String rackSid; // 货架sid
@ApiModelProperty("货架名称")
private String warehouseRackName; // 货架名称
@ApiModelProperty("已退数量")
private BigDecimal returnedCount; // 已退数量
@ApiModelProperty("退货数量")
private BigDecimal backCount; // 退货数量
@ApiModelProperty("税额")
private BigDecimal maxAmount; // 税额
@ApiModelProperty("含税价")
private BigDecimal maxPrice; // 含税价
@ApiModelProperty("退货金额")
private BigDecimal backAmount; // 退货金额
}

2
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java

@ -56,6 +56,8 @@ public interface PmsPurchaseBillMapper extends BaseMapper<PmsPurchaseBill> {
IPage<PmsPurchaseBillVo> selectPageVo(IPage<PmsPurchaseBill> page, @Param(Constants.WRAPPER) Wrapper<PmsPurchaseBill> qw);
IPage<PmsPurchaseChoiceBillVo> choiceBillListPage(IPage<PmsPurchaseBill> page, @Param(Constants.WRAPPER) QueryWrapper<PmsPurchaseBill> qw);
String selectNum(String billNo);
int updateFlowFiled(Map<String, Object> map);

28
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml

@ -30,6 +30,34 @@
<where> ${ew.sqlSegment} </where>
</select>
<select id="choiceBillListPage" resultType="com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseChoiceBillVo">
SELECT
ppb.`sid`,
ppb.billNo,
ppb.`createTime`,
ppb.`purchaserName`,
ppb.`purchaseTypeValue`,
ppb.`purchaseReasonValue`,
ppb.`payTypeValue`,
ppb.`supplierName`,
IF(ppbi.`isInvoicing` = 1, '是','否') AS isInvoicing,
ppbi.billType,
ppbi.taxRate,
ppb.`remarks`,
SUM(ppbd.`amount`) AS amountCount,
ppb.freight,
ppb.discountAmount,
ppb.errorAmount,
ppb.`payableAmount`
FROM
pms_purchase_bill ppb
LEFT JOIN pms_purchase_bill_invoice ppbi
ON ppbi.`billSid` = ppb.`sid`
LEFT JOIN pms_purchase_bill_detail ppbd
ON ppbd.`billSid` = ppb.`sid`
<where> ${ew.sqlSegment} </where>
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from pms_purchase_bill

50
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillService.java

@ -156,6 +156,56 @@ public class PmsPurchaseBillService extends MybatisBaseService<PmsPurchaseBillMa
return p;
}
public PagerVo<PmsPurchaseChoiceBillVo> choiceBillListPage(PagerQuery<PmsPurchaseBillQuery> pq) {
PmsPurchaseBillQuery query = pq.getParams();
QueryWrapper<PmsPurchaseBill> qw = new QueryWrapper<>();
String orgPath = query.getOrgPath();
String createOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
qw.eq("ppb.createOrgSid", createOrgSid);
if (StringUtils.isNotBlank(query.getCreateOrgName())) {
qw.like("ppb.createOrgName", query.getCreateOrgName());
}
if (StringUtils.isNotBlank(query.getDeptName())) {
qw.like("ppb.deptName", query.getDeptName());
}
if (StringUtils.isNotBlank(query.getCreateByName())) {
qw.like("ppb.createByName", query.getCreateByName());
}
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("ppb.billNo", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getPurchaseTypeValue())) {
qw.like("ppb.purchaseTypeValue", query.getPurchaseTypeValue());
}
if (StringUtils.isNotBlank(query.getPurchaseReasonValue())) {
qw.like("ppb.purchaseReasonValue", query.getPurchaseReasonValue());
}
if (StringUtils.isNotBlank(query.getPayTypeValue())) {
qw.like("ppb.payTypeValue", query.getPayTypeValue());
}
if (StringUtils.isNotBlank(query.getSupplierName())) {
qw.like("ppb.supplierName", query.getSupplierName());
}
if (StringUtils.isNotBlank(query.getIsInvoicing())) {
qw.eq("ppbi.isInvoicing", query.getIsInvoicing());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (ppb.createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createEndTime), "date_format (ppb.createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
String finishStartTime = query.getFinishStartTime();
String finishEndTime = query.getFinishEndTime();
qw.apply(StringUtils.isNotEmpty(finishStartTime), "date_format (ppb.finishTime,'%Y-%m-%d') >= date_format('" + finishStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(finishEndTime), "date_format (ppb.finishTime,'%Y-%m-%d') <= date_format('" + finishEndTime + "','%Y-%m-%d')"
);
qw.groupBy("ppb.sid");
IPage<PmsPurchaseBill> page = PagerUtil.queryToPage(pq);
IPage<PmsPurchaseChoiceBillVo> pagging = baseMapper.choiceBillListPage(page, qw);
PagerVo<PmsPurchaseChoiceBillVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public String saveOrUpdateDto(PmsPurchaseBillDto dto) {
String dtoSid = dto.getSid();
PmsPurchasePayDto purchasePay = dto.getPurchasePay();

61
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseChoiceBillVo.java

@ -54,45 +54,38 @@ public class PmsPurchaseChoiceBillVo implements Vo {
private String sid; // sid
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("供应商名称")
private String supplierName;
@ApiModelProperty("供应商联系电话")
private String supplierPhone;
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("单据日期")
private Date createTime;
@ApiModelProperty("采购员姓名")
private String purchaserName;
@ApiModelProperty("库管员姓名")
private String storekeeperName;
@ApiModelProperty("结算标志")
private String settleState;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("结算时间")
private Date settleTime;
@ApiModelProperty("票据类型value(不含税、增值税、普通税、已含增值税)")
private String billTypeValue;
@ApiModelProperty("采购类型Value(厂家采购、外采、其他)")
private String purchaseTypeValue;
@ApiModelProperty("采购原因(储备/客户订单/在修车辆)")
private String purchaseReasonValue;
@ApiModelProperty("付款方式value(预付款/月结/单笔付款)")
private String payTypeValue;
@ApiModelProperty("供应商名称")
private String supplierName;
@ApiModelProperty("是否需要开发票(是1,否0)")
private String isInvoicing;
@ApiModelProperty("票据类型(不含税、增值税、普通税、已含增值税)")
private String billType;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("发票号码")
private String invoiceCode;
@ApiModelProperty("发票信息")
private String invoiceInfo;
@ApiModelProperty("采购数量")
private BigDecimal count;
@ApiModelProperty("单台进货价")
private BigDecimal cost;
@ApiModelProperty("总体进货价")
private BigDecimal costCount;
@ApiModelProperty("税额")
private BigDecimal taxAmount;
@ApiModelProperty("含税价")
private BigDecimal taxPrice; // 含税价
@ApiModelProperty("采购金额")
private BigDecimal amount; // 采购金额
@ApiModelProperty("销售单价")
private BigDecimal salesPrice;
@ApiModelProperty("采购金额合计")
private BigDecimal amountCount;
@ApiModelProperty("运费")
private BigDecimal freight;
@ApiModelProperty("优惠金额")
private BigDecimal discountAmount;
@ApiModelProperty("误差调整金额")
private BigDecimal errorAmount;
@ApiModelProperty("应付金额(=采购金额+运费-优惠金额)")
private BigDecimal payableAmount;
}

1
yxt-pms-biz/src/main/java/com/yxt/pms/feign/flowable/flow/ProcDefEnum.java

@ -8,6 +8,7 @@ public enum ProcDefEnum {
/***************************正式流程id***********************************/
PMSPURCHASEBILL("采购单申请", "process_cx2htjth:1:11280004"),
PMSPURCHASEBACKBILL("采购退货单申请", "process_cx2htjth:1:11280004"),
;

Loading…
Cancel
Save