Browse Source

Merge remote-tracking branch 'origin/master'

master
God 3 years ago
parent
commit
9775b6d45b
  1. 32
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelmodprice/BaseModelVehicleVersionVo.java
  2. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelmodpricemodel/BaseModelModpriceModelVo.java
  3. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/AppBaseOutsourcingApplicationVo.java
  4. 32
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/AppBaseVesionVo.java
  5. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualdetails/AppBaseVehicleActualDetailsVo.java
  6. 32
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehiVesionVo.java
  7. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/AppCommonContractPageVo.java
  8. 6
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/AppCommonContractQuery.java
  9. 1
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/AppCrmCustomerFileDto.java
  10. 17
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContract.java
  11. 34
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java
  12. 38
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java
  13. 17
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/AppSubmitContractInfoDto.java
  14. 38
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractCompleteDto.java
  15. 24
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeQuery.java
  16. 26
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeVo.java
  17. 45
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractTaskQuery.java
  18. 1
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java
  19. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseaccadjapply/BaseAccadjApplyService.java
  20. 4
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java
  21. 30
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemanufacturerretware/BaseManufacturerRetwareService.java
  22. 6
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigMapper.xml
  23. 12
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigService.java
  24. 29
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelmodprice/BaseModelModpriceService.java
  25. 79
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java
  26. 12
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml
  27. 7
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java
  28. 75
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java
  29. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java
  30. 6
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.java
  31. 60
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.xml
  32. 42
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java
  33. 421
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java
  34. 4
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsurance.java
  35. 4
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceDetailsVo.java
  36. 4
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceDto.java
  37. 2
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceQuery.java
  38. 3
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceVo.java
  39. 2
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/app/AppBusSalesOrderInsuranceDto.java
  40. 2
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/app/AppBusSalesOrderInsuranceVo.java
  41. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java
  42. 84
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busmaindeposit/BusMainDepositService.java
  43. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderMapper.java
  44. 6
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderMapper.xml
  45. 162
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java
  46. 45
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderdeposit/BusSalesOrderDepositService.java
  47. 3
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderinsurance/BusSalesOrderInsuranceMapper.xml
  48. 3
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderinsurance/BusSalesOrderInsuranceService.java
  49. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.xml
  50. 1
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java
  51. 6
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java
  52. 6
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java
  53. 1
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java
  54. 7
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/bdmaterial/BdMaterial.java
  55. 78
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/purmrb/PurMrb.java
  56. 4
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/saloutstock/SalOutStock.java
  57. 32
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/stkinstock/StkInStock.java
  58. 198
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/stktransferdirect/StkTransferDirect.java
  59. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/submitkd/SubmitKD.java
  60. 16
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  61. 10
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/purmrb/data_FPURMRBENTRY.json
  62. 14
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/purmrb/data_model.json
  63. 2
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/saloutstock/data_model.json
  64. 3
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stkinstock/data_FInStockEntry.json
  65. 6
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stkinstock/data_model.json
  66. 66
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/StkTransferDirectCastToKingDeeBillFields.java
  67. 36
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/StkTransferDirectService.java
  68. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data.json
  69. 58
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_FBillEntry.json
  70. 13
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_data.json
  71. 42
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_model.json
  72. 175
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/remarks.txt
  73. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/webapi测试的数据.txt
  74. BIN
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/直接调拨单的参数必填备注.xlsx
  75. 9
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/TaskUserInfo.java
  76. 1
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  77. 70
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  78. 155
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  79. 2
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturn.java
  80. 29
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java
  81. 4
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclegression/ScmVehicleGressionMapper.java
  82. 5
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclegression/ScmVehicleGressionService.java
  83. 6
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleinventory/ScmVehicleInventoryService.java
  84. 21
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnService.java
  85. 25
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclestayinventory/ScmVehicleStayInventoryService.java
  86. 14
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatewithholding/bicyclerebatewithholdingAdd.vue
  87. 10
      anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatewithholding/bicyclerebatewithholdingInfo.vue
  88. 7
      anrui-scm/anrui-scm-ui/src/views/supplychain/caigoutuiku/caigoutuiku.vue
  89. 37
      anrui-scm/anrui-scm-ui/src/views/supplychain/cheliangneigou/vehicleselect.vue
  90. 37
      anrui-scm/anrui-scm-ui/src/views/workFlow/cheliangneigouFlow/neigouguanli/vehicleselect.vue
  91. 10
      anrui-scm/anrui-scm-ui/src/views/workFlow/danchefanliyutiFlow/danchefanliyutiDaiBanInfo.vue
  92. 16
      anrui-scm/anrui-scm-ui/src/views/workFlow/danchefanliyutiFlow/danchefanliyutiEdit.vue
  93. 10
      anrui-scm/anrui-scm-ui/src/views/workFlow/danchefanliyutiFlow/danchefanliyutiYiBanInfo.vue
  94. 2
      anrui-system-ui/src/views/Home/Home.vue
  95. 56
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/AppCommonContractFeign.java
  96. 44
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/AppCommonContractFeignFallback.java
  97. 69
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/CommonContractInitVo.java
  98. 73
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/CrmCustomerFileDto.java
  99. 37
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/flowable/ContractDto.java
  100. 25
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/flowable/ContractQuery.java

32
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelmodprice/BaseModelVehicleVersionVo.java

@ -0,0 +1,32 @@
package com.yxt.anrui.base.api.basemodelmodprice;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/8/30 9:51
* @Description
*/
@Data
public class BaseModelVehicleVersionVo implements Vo {
private static final long serialVersionUID = -1925653992768754705L;
@ApiModelProperty("版本编码")
private Integer moduleVersion;
@ApiModelProperty("apk下载地址")
private String path;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String type;
@ApiModelProperty("插件名称")
private String modulePluginName;
@ApiModelProperty("地址")
private String moduleAction;
private String json;
}

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelmodpricemodel/BaseModelModpriceModelVo.java

@ -26,6 +26,7 @@
package com.yxt.anrui.base.api.basemodelmodpricemodel;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelVehicleVersionVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
@ -69,4 +70,7 @@ public class BaseModelModpriceModelVo implements Vo {
private String incOrDecInPrice; // 价格增减数额
@ApiModelProperty("备注")
private String remarks; // 备注
private BaseModelVehicleVersionVo carDetailPage;
}

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/AppBaseOutsourcingApplicationVo.java

@ -60,4 +60,6 @@ public class AppBaseOutsourcingApplicationVo implements Vo {
private String modelSid;
@ApiModelProperty("配置sid")
private String configSid;
private AppBaseVesionVo carDetailPage;
}

32
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/AppBaseVesionVo.java

@ -0,0 +1,32 @@
package com.yxt.anrui.base.api.baseoutsourcingapplication;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/8/30 11:00
* @Description
*/
@Data
public class AppBaseVesionVo implements Vo {
private static final long serialVersionUID = 6536128762018795190L;
@ApiModelProperty("版本编码")
private Integer moduleVersion;
@ApiModelProperty("apk下载地址")
private String path;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String type;
@ApiModelProperty("插件名称")
private String modulePluginName;
@ApiModelProperty("地址")
private String moduleAction;
private String json;
}

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualdetails/AppBaseVehicleActualDetailsVo.java

@ -1,5 +1,6 @@
package com.yxt.anrui.base.api.basevehicleactualdetails;
import com.yxt.anrui.base.api.basevehicleactualsales.BaseVehiVesionVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -32,4 +33,6 @@ public class AppBaseVehicleActualDetailsVo implements Vo {
private int dayNum;
@ApiModelProperty("车辆数量")
private int vehicleNum;
private BaseVehiVesionVo carDetailPage;
}

32
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehiVesionVo.java

@ -0,0 +1,32 @@
package com.yxt.anrui.base.api.basevehicleactualsales;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/8/30 10:37
* @Description
*/
@Data
public class BaseVehiVesionVo implements Vo {
private static final long serialVersionUID = 7281325868701017122L;
@ApiModelProperty("版本编码")
private Integer moduleVersion;
@ApiModelProperty("apk下载地址")
private String path;
@ApiModelProperty("0.内置Activity 1.内置WebView 2.RePlugin插件")
private String type;
@ApiModelProperty("插件名称")
private String modulePluginName;
@ApiModelProperty("地址")
private String moduleAction;
private String json;
}

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/AppCommonContractPageVo.java

@ -1,5 +1,6 @@
package com.yxt.anrui.base.api.commoncontract;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -22,10 +23,14 @@ public class AppCommonContractPageVo implements Vo {
@ApiModelProperty("经办人")
private String handler;
@ApiModelProperty("车型")
private String model;
@ApiModelProperty("合同金额")
private String contractPrice;
@ApiModelProperty("是否显示办理按钮")
@JsonProperty("isShowUpdate")
private boolean isShowUpdate;
@ApiModelProperty("节点状态")

6
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/AppCommonContractQuery.java

@ -26,13 +26,13 @@ public class AppCommonContractQuery implements Query {
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("合同类型key")
@ApiModelProperty("状态")
private String type;
@ApiModelProperty("")
private String names;
@ApiModelProperty("业务员sid")
private String staffSid;
@ApiModelProperty("分公司sid")
private String useOrgSid;
}

1
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/AppCrmCustomerFileDto.java

@ -1,5 +1,6 @@
package com.yxt.anrui.base.api.commoncontract;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

17
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContract.java

@ -29,8 +29,7 @@ import java.util.Date;
public class CommonContract extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("合同编号(合同类型+部门编码+yyyyMMdd+001)")
private String contractNo;
@ -96,4 +95,18 @@ public class CommonContract extends BaseEntity {
private BigDecimal price;
@ApiModelProperty("单台订金")
private BigDecimal oneDeposit;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty(value = "节点状态")
private String nodeState;
@ApiModelProperty(value = "节点id")
private String nodeId;
@ApiModelProperty(value = "流程id")
private String procDefId;
@ApiModelProperty(value = "实例id")
private String procInstId;
@ApiModelProperty(value = "任务id")
private String taskId;
}

34
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java

@ -1,11 +1,13 @@
package com.yxt.anrui.base.api.commoncontract;
import com.yxt.anrui.base.api.commoncontract.flowable.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -150,7 +152,7 @@ public interface CommonContractFeign {
public ResultBean<PagerVo<AppCommonContractPageVo>> getContractList(@RequestBody PagerQuery<AppCommonContractQuery> pagerQuery);
@ApiOperation("移动端-初始化合同审核")
@PostMapping("/getContractInfo/{contractSid}/{userSid}")
@GetMapping("/getContractInfo/{contractSid}/{userSid}")
@ResponseBody
public ResultBean<AppCommonContractInitVo> getContractInfo(@PathVariable("contractSid") String contractSid, @PathVariable("userSid") String userSid);
@ -159,4 +161,34 @@ public interface CommonContractFeign {
@ResponseBody
public ResultBean saveContractInfo(@RequestBody AppCrmCustomerFileDto dto);
//====================移动端合同审核流程
@ApiOperation("移动端-提交合同审核流程")
@PostMapping("/submitContractInfo")
public ResultBean submitContractInfo(@Valid @RequestBody AppSubmitContractInfoDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody CommonContractCompleteDto query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<CommonContractNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap CommonContractNodeQuery query);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<CommonContractNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap CommonContractNodeQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody CommonContractTaskQuery query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody CommonContractTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody CommonContractTaskQuery query);
}

38
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java

@ -1,5 +1,7 @@
package com.yxt.anrui.base.api.commoncontract;
import com.yxt.anrui.base.api.busvehicleapply.flow.GetNodeVo;
import com.yxt.anrui.base.api.commoncontract.flowable.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -8,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;
/**
@ -165,4 +168,39 @@ public class CommonContractFeignFallback implements CommonContractFeign {
public ResultBean saveContractInfo(AppCrmCustomerFileDto dto) {
return null;
}
@Override
public ResultBean submitContractInfo(AppSubmitContractInfoDto dto) {
return null;
}
@Override
public ResultBean complete(CommonContractCompleteDto query) {
return null;
}
@Override
public ResultBean<List<CommonContractNodeVo>> getPreviousNodesForReject(CommonContractNodeQuery query) {
return null;
}
@Override
public ResultBean<List<CommonContractNodeVo>> getNextNodesForSubmit(CommonContractNodeQuery query) {
return null;
}
@Override
public ResultBean taskReject(CommonContractTaskQuery query) {
return null;
}
@Override
public ResultBean revokeProcess(CommonContractTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(CommonContractTaskQuery query) {
return null;
}
}

17
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/AppSubmitContractInfoDto.java

@ -0,0 +1,17 @@
package com.yxt.anrui.base.api.commoncontract.flowable;
import com.yxt.anrui.base.api.commoncontract.AppCrmCustomerFileDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class AppSubmitContractInfoDto extends AppCrmCustomerFileDto {
private static final long serialVersionUID = -2769162783495307511L;
@ApiModelProperty("意见")
private String comment;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

38
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractCompleteDto.java

@ -0,0 +1,38 @@
package com.yxt.anrui.base.api.commoncontract.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/8/30 15:00
* @Description
*/
@Data
public class CommonContractCompleteDto implements Dto {
private static final long serialVersionUID = -1577957348084710482L;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
@NotBlank(message = "参数错误:orgSidPath")
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;
}

24
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeQuery.java

@ -0,0 +1,24 @@
package com.yxt.anrui.base.api.commoncontract.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/8/30 15:02
* @Description
*/
@Data
public class CommonContractNodeQuery implements Query {
private static final long serialVersionUID = 2719079015837709118L;
@ApiModelProperty(value = "环节定义id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

26
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeVo.java

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

45
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractTaskQuery.java

@ -0,0 +1,45 @@
package com.yxt.anrui.base.api.commoncontract.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/8/30 15:03
* @Description
*/
@Data
public class CommonContractTaskQuery implements Query {
private static final long serialVersionUID = 4020176288666396111L;
/**
* 终止驳回撤回
*/
@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;
}

1
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java

@ -19,6 +19,7 @@ public enum BillTypeEnum {
KCDDBGSQ("KCDDBG","库存地点变更申请"),
JYDDDJSQ("JYDDDJSQ","简易订单订金收取"),
JYDDCLYD("JYDDCLYD","简易订单车辆预定"),
XSDDHT("XSDDHT","销售订单合同"),
XSDD("XSDD","销售订单"),
;

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseaccadjapply/BaseAccadjApplyService.java

@ -415,7 +415,7 @@ public class BaseAccadjApplyService extends MybatisBaseService<BaseAccadjApplyMa
/**
* 发货组织:FStockOrgId (必填项)
*/
salOutStock.setFStockOrgId("101");
//salOutStock.setFStockOrgId("101");
List<SalOutStock.FEntity> fEntity=new ArrayList<>();

4
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseinternalpurchase/BaseInternalPurchaseService.java

@ -541,6 +541,7 @@ public class BaseInternalPurchaseService extends MybatisBaseService<BaseInternal
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcInsId(baseInternalPurchase.getProcInstId());
ufVo.setProcDefId(baseInternalPurchase.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
@ -623,6 +624,7 @@ public class BaseInternalPurchaseService extends MybatisBaseService<BaseInternal
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcInsId(baseInternalPurchase.getProcInstId());
ufVo.setProcDefId(baseInternalPurchase.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
@ -676,6 +678,7 @@ public class BaseInternalPurchaseService extends MybatisBaseService<BaseInternal
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcInsId(baseInternalPurchase.getProcInstId());
ufVo.setProcDefId(baseInternalPurchase.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
@ -744,6 +747,7 @@ public class BaseInternalPurchaseService extends MybatisBaseService<BaseInternal
BeanUtil.copyProperties(ufVo,messageFlowVo);
String procId = baseInternalPurchase.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(baseInternalPurchase.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);

30
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemanufacturerretware/BaseManufacturerRetwareService.java

@ -293,11 +293,11 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
/**
* 需求组织:FRequireOrgId (必填项)
*/
purMrb.setFRequireOrgId( "101");
//purMrb.setFRequireOrgId( "101");
/**
* 采购组织:FPurchaseOrgId (必填项)
*/
purMrb.setFPurchaseOrgId("101");
//purMrb.setFPurchaseOrgId("101");
/**
* 供应商:FSupplierID (必填项)
*/
@ -305,23 +305,23 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
/**
* 接收方:FACCEPTORID
*/
purMrb.setFACCEPTORID("010001");
//purMrb.setFACCEPTORID("010001");
/**
* 结算方:FSettleId
*/
purMrb.setFSettleId("010001");
//purMrb.setFSettleId("010001");
/**
* 收款方:FCHARGEID
*/
purMrb.setFCHARGEID("010001");
//purMrb.setFCHARGEID("010001");
/**
* 货主:FOwnerIdHead (必填项)
*/
purMrb.setFOwnerIdHead("101");
//purMrb.setFOwnerIdHead("101");
/**
* 结算组织:FSettleOrgId (必填项)
*/
purMrb.setFSettleOrgId("101");
//purMrb.setFSettleOrgId("101");
List<PurMrb.FPURMRBENTRY> FPURMRBENTRY=new ArrayList<>();
PurMrb.FPURMRBENTRY fp=new PurMrb.FPURMRBENTRY();
/**
@ -335,7 +335,7 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
/**
* 库存单位:FUnitID (必填项)
*/
fp.setFUnitID("liang");
// fp.setFUnitID("liang");
/**
* 批号:FLot
*/
@ -347,15 +347,15 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
/**
* 补料数量:FREPLENISHQTY
*/
fp.setFREPLENISHQTY(1.0);
//fp.setFREPLENISHQTY(1.0);
/**
* 扣款数量:FKEAPAMTQTY
*/
fp.setFKEAPAMTQTY(1.0);
//fp.setFKEAPAMTQTY(1.0);
/**
* 计价单位:FPRICEUNITID (必填项)
*/
fp.setFPRICEUNITID("liang");
//fp.setFPRICEUNITID("liang");
/**
* 仓库:FSTOCKID
*/
@ -367,19 +367,19 @@ public class BaseManufacturerRetwareService extends MybatisBaseService<BaseManuf
/**
* 计价基本数量:FPriceBaseQty
*/
fp.setFPriceBaseQty(1.0);
//fp.setFPriceBaseQty(1.0);
/**
* 采购单位:FCarryUnitId (必填项)
*/
fp.setFCarryUnitId("liang");
//fp.setFCarryUnitId("liang");
/**
* 采购数量:FCarryQty
*/
fp.setFCarryQty(1.0);
//fp.setFCarryQty(1.0);
/**
* 采购基本数量:FCarryBaseQty
*/
fp.setFCarryBaseQty(1.0);
//fp.setFCarryBaseQty(1.0);
FPURMRBENTRY.add(fp);
/**
* 物料列表

6
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigMapper.xml

@ -585,7 +585,7 @@
FROM base_vehmodel_config bvc
WHERE bvc.modelSid = #{modelSid}
AND bvc.configurationItemsSid = #{configSid}
AND bvc.useOrgSid != #{useOrg}
AND bvc.useOrgSid != #{useOrg} and LENGTH(bvc.useOrgSid) >0
</select>
<select id="getCarConfigSummary" resultType="com.yxt.anrui.base.api.basemodelconfig.AppModelConfigListVo">
SELECT bmc.sid,
@ -643,9 +643,7 @@
bmc.independentSources,
bmc.fuelTank,
bmc.multimedia,
if(MIN(bvc.guidedPrice) = MAX(bvc.guidedPrice), convert(MAX(bvc.guidedPrice) / 10000, decimal (10, 2)),
CONCAT(convert(MIN(bvc.guidedPrice) / 10000, decimal (10, 2)), '-',
convert(MAX(bvc.guidedPrice) / 10000, decimal (10, 2)))) AS price,
convert(bvc.guidedPrice/10000,decimal(10,2)) AS price,
bvc.priceValidity,
bvm.sid as modelSid,
bvm.vehicleAlias as modelName,

12
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigService.java

@ -558,8 +558,10 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
List<MoreConfigVo> moreConfigVos = baseMapper.getCompanyModelList(appModelConfigListVo.getModelSid(), appModelConfigListVo.getConfigSid(), orgSid, VehicleState.LockEnum.UN_LOCK.getCode());
for (MoreConfigVo moreConfigVo : moreConfigVos) {
String sid = moreConfigVo.getUseOrgSid();
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sid).getData();
moreConfigVo.setCompanyName(sysOrganization.getName());
if(StringUtils.isNotBlank(sid)){
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sid).getData();
moreConfigVo.setCompanyName(sysOrganization.getName());
}
if (StringUtils.isBlank(moreConfigVo.getProduceCarNum())) {
moreConfigVo.setProduceCarNum("0");
}
@ -842,8 +844,10 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
List<MoreConfigVo> moreConfigVos = baseMapper.getCompanyModelList(appModelConfigListVo.getModelSid(), appModelConfigListVo.getConfigSid(), orgSid, VehicleState.LockEnum.UN_LOCK.getCode());
for (MoreConfigVo moreConfigVo : moreConfigVos) {
String sid = moreConfigVo.getUseOrgSid();
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sid).getData();
moreConfigVo.setCompanyName(sysOrganization.getName());
if(StringUtils.isNotBlank(sid)){
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sid).getData();
moreConfigVo.setCompanyName(sysOrganization.getName());
}
if (StringUtils.isBlank(moreConfigVo.getProduceCarNum())) {
moreConfigVo.setProduceCarNum("0");
}

29
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelmodprice/BaseModelModpriceService.java

@ -27,6 +27,7 @@ package com.yxt.anrui.base.biz.basemodelmodprice;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basemodelmodprice.*;
@ -49,6 +50,8 @@ import com.yxt.anrui.flowable.api.sysprourl.SysProUrlFeign;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubVersionVo;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubsetVersionFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
@ -99,6 +102,8 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
private SysProUrlFeign sysProUrlFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private AppSubsetVersionFeign appSubsetVersionFeign;
public PagerVo<BaseModelModpriceVo> listPageVo(PagerQuery<BaseModelModpriceQuery> pq) {
BaseModelModpriceQuery query = pq.getParams();
@ -158,6 +163,24 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
BaseModelModprice baseModelModprice = fetchBySid(sid);
BeanUtil.copyProperties(baseModelModprice, baseModelModpriceDetailVo);
List<BaseModelModpriceModelVo> baseModelModpriceModelVos = baseModelModpriceModelService.fetchByMainSid(sid);
//添加移动端车型页面信息
ResultBean<AppSubVersionVo> resultBean = appSubsetVersionFeign.selectLast();
AppSubVersionVo appSubVersionVo = resultBean.getData();
baseModelModpriceModelVos.removeAll(Collections.singleton(null));
if (!baseModelModpriceModelVos.isEmpty()) {
baseModelModpriceModelVos.stream().forEach(vos -> {
BaseModelVehicleVersionVo appVehicleVersionVo = new BaseModelVehicleVersionVo();
String modelSid = vos.getModelSid();
String configSid = vos.getConfigSid();
Map<String, Object> map = new HashMap<>();
map.put("modelSid", modelSid);
map.put("configSid", configSid);
map.put("selectType", 0);
appSubVersionVo.setJson(JSONObject.toJSONString(map));
BeanUtil.copyProperties(appSubVersionVo, appVehicleVersionVo);
vos.setCarDetailPage(appVehicleVersionVo);
});
}
baseModelModpriceDetailVo.setBaseModelModpriceModels(baseModelModpriceModelVos);
return rb.success().setData(baseModelModpriceDetailVo);
}
@ -240,7 +263,6 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
messageFlowableQuery.setMsgContent(baseModelModprice.getApplyPeoName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, baseModelModprice);
return voResultBean;
}
if (r == 2) {
@ -331,6 +353,7 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcInsId(baseModelModprice.getProcInstId());
ufVo.setProcDefId(baseModelModprice.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
@ -338,8 +361,6 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
messageFlowableQuery.setMsgContent(baseModelModprice.getApplyPeoName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, baseModelModprice);
}
return rb.success().setData(resultBean.getData());
} else {
@ -404,6 +425,7 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = baseModelModprice.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(baseModelModprice.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(query.getBusinessSid());
@ -418,7 +440,6 @@ public class BaseModelModpriceService extends MybatisBaseService<BaseModelModpri
}
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, baseModelModprice);
return rb.success();
}
}

79
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java

@ -26,8 +26,8 @@
package com.yxt.anrui.base.biz.baseoutsourcingapplication;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.baseoutsourcingapplication.*;
@ -56,6 +56,8 @@ import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlFeign;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubVersionVo;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubsetVersionFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
@ -86,7 +88,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -137,6 +138,8 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
private FileUploadComponent fileUploadComponent;
@Resource
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private AppSubsetVersionFeign appSubsetVersionFeign;
private QueryWrapper<BaseOutsourcingApplication> createQueryWrapper(BaseOutsourcingApplicationQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -465,6 +468,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(uff,messageFlowVo);
uff.setProcInsId(baseOutsourcingApplication.getProcInstSid());
uff.setProcDefId(baseOutsourcingApplication.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
@ -510,8 +514,24 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
appMap.put("sid",bv.getBusinessSid());
bv.getFormVariables().put("app",appMap);
//================添加app相关参数
/* BaseOutsourcingApplicationDto dto = baseMapper.getBySid(bv.getBusinessSid());
ResultBean<List<GetNodeVo>> nextNodesForSubmit = getNextNodesForSubmit(dto);
List<GetNodeVo> datas = nextNodesForSubmit.getData();
GetNodeVo getNodeVo = datas.get(0);
List<String> candidateGroups = getNodeVo.getCandidateGroups();
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(candidateGroups.get(0));
userQuery.setOrgSidPath(bv.getOrgSidPath());
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRole(userQuery).getData();
ResultBean<UpdateFlowFieldVo> rb = flowableFeign.handleProsess(bv);
String taskDefKey = rb.getData().getTaskDefKey();
if(sysUserVos.size()==0){
bv.setTaskDefKey(rb.getData().getTaskDefKey());
bv.setTaskId(rb.getData().getTaskId());
return complete(bv);
}*/
BaseOutsourcingApplicationDto dto= baseMapper.getBySid(bv.getBusinessSid());
ResultBean<UpdateFlowFieldVo> rb = complete_handleProsess(bv,dto);
/* String taskDefKey = rb.getData().getTaskDefKey();
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(rb.getData());
updateFlowFiled(stringObjectMap);
if ("Event_end".equals(taskDefKey)) {
@ -562,12 +582,41 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
// String msgSid = getMessage(uff, appMap, baseOutsourcingApplication);
//======================添加消息推送结束
}
*/
return rb;
} else {
return ResultBean.fireFail().setMsg("操作失败,提交的数据不一致!");
}
}
public ResultBean<UpdateFlowFieldVo> complete_handleProsess(BusinessVariables bv, BaseOutsourcingApplicationDto dto) {
ResultBean<List<GetNodeVo>> nextNodesForSubmit = getNextNodesForSubmit(dto);
List<GetNodeVo> datas = nextNodesForSubmit.getData();
GetNodeVo getNodeVo = datas.get(0);
List<String> candidateGroups = getNodeVo.getCandidateGroups();
ResultBean<UpdateFlowFieldVo> rb = flowableFeign.handleProsess(bv);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(rb.getData());
updateFlowFiled(stringObjectMap);
//消息推送===========开始
UpdateFlowFieldVo uff = rb.getData();
if (!"Event_end".equals(uff.getTaskDefKey())) {
BaseOutsourcingApplication baseOutsourcingApplication = fetchBySid(bv.getBusinessSid());
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(uff,messageFlowVo);
uff.setProcInsId(baseOutsourcingApplication.getProcInstSid());
uff.setProcDefId(baseOutsourcingApplication.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) bv.getFormVariables().get("app"));
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("外采申请");
messageFlowableQuery.setMsgContent(baseOutsourcingApplication.getCreateByName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
//消息推送结束=====
return rb;
}
/**
* 创建采购入库单
* @return
@ -576,19 +625,19 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
StkInStock stkInStock=new StkInStock();
stkInStock.setSid(booad.getApplicationDate());
stkInStock.setFPurchaseOrgId("101");
stkInStock.setFStockOrgId("101");
// stkInStock.setFStockOrgId("101");
stkInStock.setFPurchaseDeptId("05.04");
stkInStock.setFSupplierId("010001");
stkInStock.setFDate(booad.getApplicationDate());
stkInStock.setFOwnerIdHead("101");
stkInStock.setFSettleOrgId("101");
// stkInStock.setFOwnerIdHead("101");
// stkInStock.setFSettleOrgId("101");
List<StkInStock.FInStockEntry> FInStockEntry=new ArrayList<>();
StkInStock.FInStockEntry fise=new StkInStock.FInStockEntry();
fise.setFMaterialId(" JX091054");
fise.setFRealQty(1.0);
fise.setFPriceUnitQty("0");
fise.setFRemainInStockQty(1.0);
// fise.setFPriceUnitQty("0");
// fise.setFRemainInStockQty(1.0);
fise.setFLot("1234567890");
fise.setFStockId("CK001");
fise.setFUnitID("liang");
@ -854,6 +903,18 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService<BaseOu
if (commonAppendixVos != null && commonAppendixVos.size() > 0) {
stringList.add(fileUploadComponent.getUrlPrefix()+commonAppendixVos.get(0).getFilePath());
}
ResultBean<AppSubVersionVo> resultBean = appSubsetVersionFeign.selectLast();
AppSubVersionVo appSubVersionVo = resultBean.getData();
AppBaseVesionVo appVehicleVersionVo = new AppBaseVesionVo();
String modelSid = vo.getModelSid();
String configSid = vo.getConfigSid();
Map<String, Object> map = new HashMap<>();
map.put("modelSid", modelSid);
map.put("configSid", configSid);
map.put("selectType", 0);
appSubVersionVo.setJson(JSONObject.toJSONString(map));
BeanUtil.copyProperties(appSubVersionVo, appVehicleVersionVo);
vo.setCarDetailPage(appVehicleVersionVo);
vo.setImages(stringList);
return rb.success().setData(vo);
}

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

@ -512,6 +512,11 @@
AND bv.modelConfigSid = #{configSid}
AND bv.lockedState = #{state}
and bv.useOrgSid = #{orgSid}
AND (
bv.vehicleStateValue = '库存'
or bv.vehicleStateValue = '在途'
or bv.vehicleStateValue = '调入'
)
</select>
<select id="selExistingCarPageList"
@ -566,8 +571,7 @@
OR bv.vehicleStateValue = '在途'
or bv.vehicleStateValue = '调入')
AND lockedState = #{lockedStateKey}
AND bv.useOrgSid =
#{useOrgSid}) AS nowCarNum,
AND bv.useOrgSid = #{useOrgSid}) AS nowCarNum,
(select SUM(distinct cast((cast(bo.platformNo as signed)-IFNULL(cast(bo.lockingNum as signed),'0')) as signed))
as quantity from bus_vehicle_order bo
LEFT JOIN bus_vehicle_apply_detail bd on bo.purchaseApplyMediumModelSid = bd.sid
@ -577,6 +581,7 @@
left join base_vehicle_brand bb on bb.sid = bvm.carBrand
<where>
${ew.sqlSegment}
and length(bvc.guidedPrice)>0
</where>
ORDER BY nowCarNum DESC
</select>
@ -599,6 +604,7 @@
WHERE bvc.modelSid = #{modelSid}
AND bvc.useOrgSid != #{useOrg}
group by bvc.useOrgSid
HAVING LENGTH(bvc.useOrgSid)> 0
</select>
<select id="getAppModelConfig"
@ -646,7 +652,7 @@
(SELECT count(*)
FROM base_vehmodel_config bvc2
WHERE bvc2.modelSid = bvm.sid
AND bvc2.useOrgSid = #{useOrgSid}) AS configNum,
AND bvc2.useOrgSid = #{useOrgSid} and Length(bvc2.guidedPrice)>0) AS configNum,
(SELECT count(*)
FROM base_vehicle bv
WHERE bv.modelSid = bvm.sid

7
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java

@ -10,7 +10,6 @@ import com.yxt.anrui.base.api.basevehicle.*;
import com.yxt.anrui.base.api.basevehicle.app.AppBaseVehicleOrderVo;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificate;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificateVo;
import com.yxt.anrui.base.api.basevehmodelconfig.BaseVehmodelVo;
import com.yxt.anrui.base.api.commonappendix.CommonAppendix;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum;
@ -858,8 +857,10 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
List<MoreConfigVo> moreConfigVos = baseMapper.getCompanyModelList(record.getModelSid(), orgSid, VehicleState.LockEnum.UN_LOCK.getCode());
for (MoreConfigVo moreConfigVo : moreConfigVos) {
String sid = moreConfigVo.getUseOrgSid();
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sid).getData();
moreConfigVo.setCompanyName(sysOrganization.getName());
if(StringUtils.isNotBlank(sid)){
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(sid).getData();
moreConfigVo.setCompanyName(sysOrganization.getName());
}
if (StringUtils.isBlank(moreConfigVo.getProduceCarNum())) {
moreConfigVo.setProduceCarNum("0");
}

75
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java

@ -2,6 +2,7 @@ package com.yxt.anrui.base.biz.basevehicleactualsales;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
@ -24,9 +25,10 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlFeign;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubVersionVo;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubsetVersionFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
@ -36,7 +38,9 @@ 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 com.yxt.messagecenter.api.message.*;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -71,6 +75,8 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
private SysProUrlFeign sysProUrlFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private AppSubsetVersionFeign appSubsetVersionFeign;
/**
* 分页列表
@ -328,7 +334,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
messageFlowableQuery.setMsgContent(baseVehicleActualSales.getApplicationName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, baseVehicleActualSales);
return voResultBean;
}
if (r == 2) {
@ -398,6 +403,7 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcDefId(baseVehicleActualSales.getProcDefId());
ufVo.setProcInsId(baseVehicleActualSales.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
@ -406,7 +412,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
messageFlowableQuery.setMsgContent(baseVehicleActualSales.getApplicationName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, baseVehicleActualSales);
}
return rb.success().setData(resultBean.getData());
@ -504,6 +509,7 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
BeanUtil.copyProperties(ufVo,messageFlowVo);
String procId = baseVehicleActualSales.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(baseVehicleActualSales.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(query.getBusinessSid());
@ -519,7 +525,6 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, baseVehicleActualSales);
return rb.success();
}
}
@ -606,52 +611,22 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
String orgSid = sysStaffOrgFeign.getPathSidByUserSid(vo.getUserSid()).getData();
//查询未售买断的车辆信息
List<AppBaseVehicleActualDetailsVo> records = baseVehicleActualDetailsService.getList(sid, orgSid);
records.removeAll(Collections.singleton(null));
ResultBean<AppSubVersionVo> resultBean = appSubsetVersionFeign.selectLast();
AppSubVersionVo appSubVersionVo = resultBean.getData();
if (!records.isEmpty()) {
records.stream().forEach(vos -> {
BaseVehiVesionVo appVehicleVersionVo = new BaseVehiVesionVo();
String modelSid = vos.getModelSid();
String configSid = vos.getConfigSid();
Map<String, Object> map = new HashMap<>();
map.put("modelSid", modelSid);
map.put("configSid", configSid);
map.put("selectType", 0);
appSubVersionVo.setJson(JSONObject.toJSONString(map));
BeanUtil.copyProperties(appSubVersionVo, appVehicleVersionVo);
vos.setCarDetailPage(appVehicleVersionVo);});}
vo.setRecords(records);
return rb.success().setData(vo);
}
public String getMessage(UpdateFlowFieldVo ufVo, Map<String, Object> appMap, BaseVehicleActualSales baseVehicleActualSales) {
//=====极光推送信息========================================参数组装
String procId = baseVehicleActualSales.getProcInstId();
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = resultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
//根据用户的sid查询用户的id
ResultBean<String> stringList1 = sysUserFeign.selectIdBySid(receiveSidList);
List<String> reveiveIdList = Arrays.asList(stringList1.getData().split(","));
MessageFlowableDto messageFlowableDto = new MessageFlowableDto();
MessageJsonDto messageJsonDto = new MessageJsonDto();
BeanUtil.copyProperties(ufVo, messageJsonDto);
//查询流程审批的页面操作地址组装json的参数
//根据taskDef和移动端标识
ResultBean<SysProUrlVo> selectUrlByKey = sysProUrlFeign.selectUrlByKey(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId(), ufVo.getTaskDefKey(), "1", "2");
SysProUrlVo sysProUrlVo = selectUrlByKey.getData();
messageFlowableDto.setBusinessSid(baseVehicleActualSales.getSid());
messageFlowableDto.setApp_type("2");
if (sysProUrlVo.getUrl().contains("#")) {
messageFlowableDto.setModuleAction(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(0));
List<Integer> codesInteger = Arrays.asList(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(1).split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());
int[] ints = codesInteger.stream().mapToInt(Integer::valueOf).toArray();
;
messageJsonDto.setButtons(ints);
} else {
messageFlowableDto.setModuleAction(sysProUrlVo.getUrl());
}
messageFlowableDto.setModuleSid(Arrays.asList(sysProUrlVo.getModulePluginName().split("#")).get(0));
messageJsonDto.setTaskName(ufVo.getNodeState());
messageJsonDto.setProcInsId(ufVo.getProcInsId());
messageJsonDto.setAppMap(appMap);
messageFlowableDto.setJson(messageJsonDto);
messageFlowableDto.setList(receiveSidList);
messageFlowableDto.setReceiveIdList(reveiveIdList);
messageFlowableDto.setModuleName("未售买断申请");
messageFlowableDto.setMsgContent("未售买断申请");
messageFlowableDto.setMsgTitle("未售买断申请");
messageFlowableDto.setCreateName(baseVehicleActualSales.getApplicationName());
messageFlowableDto.setTaskId(ufVo.getTaskId());
ResultBean<String> stringResultBean = messageFeign.getMessage(messageFlowableDto);
String msgSid = stringResultBean.getData();
return msgSid;
}
}

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java

@ -535,6 +535,7 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcDefId(busVehicleApply.getProcDefId());
ufVo.setProcInsId(busVehicleApply.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
@ -685,6 +686,7 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa
BeanUtil.copyProperties(ufVo,messageFlowVo);
String procId = busVehicleApply.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(busVehicleApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);

6
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.java

@ -9,6 +9,7 @@ import com.yxt.anrui.base.api.commoncontract.*;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
/**
* Project: anrui-base(安瑞基础) <br/>
@ -79,4 +80,9 @@ public interface CommonContractMapper extends BaseMapper<CommonContract> {
AppCommonContractInitVo getContractInfo(@Param("contractSid") String contractSid, @Param("staffSid") String staffSid);
int selectNum(String bill);
int updateFlowFiled(Map<String, Object> map);
@Update("update common_contract set `state`=#{state} where sid=#{businessSid}")
void updateBySidAndState(@Param("businessSid") String businessSid, @Param("state") String state);
}

60
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.xml

@ -3,7 +3,7 @@
<mapper namespace="com.yxt.anrui.base.biz.commoncontract.CommonContractMapper">
<insert id="saveList">
INSERT INTO common_contract(sid, contractNo, contractType, partyA, partyB, partyC, createBySid,
createDate, address, deposit, contractAmount, remarks)
createDate, address, deposit, contractAmount, remarks)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(UUID(),<!--sid-->
@ -39,19 +39,19 @@
</select>
<select id="listExcel" resultType="com.yxt.anrui.base.api.commoncontract.CommonContractExportVo">
SELECT cc.`contractNo`,
cc.`contractType`,
cc.`partyA`,
cc.`partyB`,
cc.`partyC`,
suser.`userName` creatName,
cc.`createDate`,
cc.`address`,
cc.`deposit`,
cc.`contractAmount`,
cc.`remarks`
cc.`contractType`,
cc.`partyA`,
cc.`partyB`,
cc.`partyC`,
suser.`userName` creatName,
cc.`createDate`,
cc.`address`,
cc.`deposit`,
cc.`contractAmount`,
cc.`remarks`
FROM common_contract cc
LEFT JOIN anrui_portal.`sys_user` suser
ON cc.createBySid = suser.`sid`
LEFT JOIN anrui_portal.`sys_user` suser
ON cc.createBySid = suser.`sid`
<where>
${ew.sqlSegment}
</where>
@ -68,13 +68,15 @@
</select>
<select id="getContractList" resultType="com.yxt.anrui.base.api.commoncontract.AppCommonContractPageVo">
SELECT sid AS contractSid,
contractNo AS contractId,
contractTypeKey AS contractType,
partyB,
handler,
contractAmount AS contractPrice,
nodeState
SELECT sid AS contractSid,
contractNo AS contractId,
contractType,
partyB,
modelName as model,
staffName as handler,
contractAmount AS contractPrice,
if(length(nodeState) > 0, nodeState, '待提交') as nodeState,
if(length(nodeState) > 0, false , true ) as isShowUpdate
FROM common_contract
<where>
${ew.sqlSegment}
@ -108,8 +110,24 @@
</delete>
<select id="selectNum" resultType="int">
select IFNULL(CAST(REPLACE(MAX(contractNo), #{bill}, '') AS SIGNED),0) as code
select IFNULL(CAST(REPLACE(MAX(contractNo), #{bill}, '') AS SIGNED), 0) as code
from common_contract
where contractNo LIKE concat(#{bill}, '%')
</select>
<update id="updateFlowFiled">
UPDATE common_contract
SET nodeState=#{nodeState}
, nodeId=#{taskDefKey}
<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>

42
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java

@ -1,11 +1,15 @@
package com.yxt.anrui.base.biz.commoncontract;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum;
import com.yxt.anrui.base.api.commonappendix.PcCommonAppendixDto;
import com.yxt.anrui.base.api.commoncontract.*;
import com.yxt.anrui.base.api.commoncontract.flowable.*;
import com.yxt.anrui.base.biz.commonappendix.CommonAppendixService;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.base.utils.StringUtils;
@ -524,4 +528,42 @@ public class CommonContractRest implements CommonContractFeign {
ResultBean resultBean = commonContractService.saveContractInfo(dto);
return rb.success();
}
@Override
public ResultBean submitContractInfo(AppSubmitContractInfoDto dto) {
return commonContractService.submitContractInfo(dto);
}
@Override
public ResultBean complete(CommonContractCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.CONTRACTAPPLY.getProDefId());
return commonContractService.complete(bv);
}
@Override
public ResultBean<List<CommonContractNodeVo>> getPreviousNodesForReject(CommonContractNodeQuery query) {
return commonContractService.getPreviousNodesForReject(query);
}
@Override
public ResultBean<List<CommonContractNodeVo>> getNextNodesForSubmit(CommonContractNodeQuery query) {
return commonContractService.getNextNodesForSubmit(query);
}
@Override
public ResultBean taskReject(CommonContractTaskQuery query) {
return commonContractService.taskReject(query);
}
@Override
public ResultBean revokeProcess(CommonContractTaskQuery query) {
return commonContractService.revokeProcess(query);
}
@Override
public ResultBean breakProcess(CommonContractTaskQuery query) {
return commonContractService.breakProcess(query);
}
}

421
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java

@ -1,11 +1,18 @@
package com.yxt.anrui.base.biz.commoncontract;
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.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModprice;
import com.yxt.anrui.base.api.basemodelmodprice.flow.SubmitBaseModelModPriceDto;
import com.yxt.anrui.base.api.commonappendix.CommonAppendix;
import com.yxt.anrui.base.api.commoncontract.*;
import com.yxt.anrui.base.api.commoncontract.flowable.AppSubmitContractInfoDto;
import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeQuery;
import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeVo;
import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractTaskQuery;
import com.yxt.anrui.base.biz.basemodelszconfig.BaseModelSzconfigService;
import com.yxt.anrui.base.biz.basetrailer.BaseTrailerService;
import com.yxt.anrui.base.biz.basevehiclebrand.BaseVehicleBrandService;
@ -25,12 +32,20 @@ import com.yxt.anrui.crm.api.crmcustomer.CrmCustomerFeign;
import com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign;
import com.yxt.anrui.flowable.api.sysformlink.SysFormStateVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
@ -46,6 +61,9 @@ 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 com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
@ -130,6 +148,12 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private BusDepositFictitiousFeign busDepositFictitiousFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
private QueryWrapper<CommonContract> createQueryWrapper(CommonContractQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -962,8 +986,6 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
*/
public PagerVo<AppCommonContractPageVo> getContractList(PagerQuery<AppCommonContractQuery> pagerQuery) {
AppCommonContractQuery query = pagerQuery.getParams();
String staffSid = sysUserFeign.getUserOrgInfoByUserSid(query.getUserSid()).getData().getStaffSid();
query.setStaffSid(staffSid);
QueryWrapper<CommonContract> qw = appCreateQueryWrapper(query);
IPage<CommonContract> page = PagerUtil.queryToPage(pagerQuery);
IPage<AppCommonContractPageVo> iPage = baseMapper.getContractList(page, qw);
@ -977,9 +999,9 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
QueryWrapper<CommonContract> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getType())) { //合同类型
qw.eq("contractTypeKey", query.getType());
}
// if (StringUtils.isNotBlank(query.getType())) { //合同类型
// qw.eq("contractTypeKey", query.getType());
// }
if (StringUtils.isNotBlank(query.getNames())) { // 甲方名称
qw.like("partyA", query.getNames());
}
@ -989,8 +1011,11 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
if (StringUtils.isNotBlank(query.getNames())) { // 其他方名称
qw.like("partyC", query.getNames());
}
if (StringUtils.isNotBlank(query.getStaffSid())) { // 业务员sid
qw.like("staffSid", query.getStaffSid());
if (StringUtils.isNotBlank(query.getUserSid())) { // 业务员sid
qw.eq("staffSid", query.getUserSid());
}
if (StringUtils.isNotBlank(query.getType())) { // 业务员sid
qw.eq("state", query.getType());
}
return qw;
}
@ -1003,46 +1028,49 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
* @return
*/
public AppCommonContractInitVo getContractInfo(String contractSid, String userSid) {
String staffSid = sysUserFeign.getUserOrgInfoByUserSid(userSid).getData().getStaffSid();
AppCommonContractInitVo vo = baseMapper.getContractInfo(contractSid, staffSid);
AppCommonContractInitVo vo = baseMapper.getContractInfo(contractSid, userSid);
String urlPrefix = fileUploadComponent.getUrlPrefix();
String[] split1 = vo.getAppdixUrl().split(",");
List<String> contract = new ArrayList<>();
List<String> contractImages = Arrays.asList(split1);
for (String contractImage : contractImages) {
String contractImageUrl = urlPrefix + contractImage;
contract.add(contractImageUrl);
vo.setUserSid(userSid);
if (StringUtils.isNotBlank(vo.getAppdixUrl())) {
String[] split1 = vo.getAppdixUrl().split(",");
List<String> contract = new ArrayList<>();
List<String> contractImages = Arrays.asList(split1);
for (String contractImage : contractImages) {
String contractImageUrl = urlPrefix + contractImage;
contract.add(contractImageUrl);
}
vo.setContractImages(contract);
}
vo.setContractImages(contract);
String[] split2 = vo.getSceneSignUrl().split(",");
List<String> siteSig = new ArrayList<>();
List<String> siteSigImages = Arrays.asList(split2);
for (String siteSigImage : siteSigImages) {
String siteSigImagesUrl = urlPrefix + siteSigImage;
siteSig.add(siteSigImagesUrl);
if (StringUtils.isNotBlank(vo.getSceneSignUrl())) {
String[] split2 = vo.getSceneSignUrl().split(",");
List<String> siteSig = new ArrayList<>();
List<String> siteSigImages = Arrays.asList(split2);
for (String siteSigImage : siteSigImages) {
String siteSigImagesUrl = urlPrefix + siteSigImage;
siteSig.add(siteSigImagesUrl);
}
vo.setSiteSigImages(siteSig);
}
vo.setSiteSigImages(siteSig);
if (vo.getCustomerKey().equals("1")) {
vo.setIdCardArchives(false);
if (StringUtils.isNotBlank(vo.getSceneSignUrl())) {
String[] split3 = vo.getSceneSignUrl().split(",");
List<String> idCard = new ArrayList<>();
List<String> idCardImages = Arrays.asList(split3);
for (String idCardImage : idCardImages) {
String idCardImagesUrl = urlPrefix + idCardImage;
idCard.add(idCardImagesUrl);
if (StringUtils.isNotBlank(vo.getCustomerKey())) {
if (vo.getCustomerKey().equals("1")) {
vo.setIdCardArchives(false);
if (StringUtils.isNotBlank(vo.getSceneSignUrl())) {
String[] split3 = vo.getSceneSignUrl().split(",");
List<String> idCard = new ArrayList<>();
List<String> idCardImages = Arrays.asList(split3);
for (String idCardImage : idCardImages) {
String idCardImagesUrl = urlPrefix + idCardImage;
idCard.add(idCardImagesUrl);
}
vo.setIdCardImages(idCard);
} else {
vo.setIdCardImages(new ArrayList<>());
}
vo.setIdCardImages(idCard);
} else {
vo.setIdCardImages(new ArrayList<>());
}
} else if (vo.getCustomerKey().equals("2")) {
vo.setIdCardArchives(true);
} else if (vo.getCustomerKey().equals("2")) {
vo.setIdCardArchives(true);
// 往里添加客户档案里的身份证信息
}
}
return vo;
}
@ -1056,9 +1084,8 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
@Transactional(rollbackFor = Exception.class)
public ResultBean saveContractInfo(AppCrmCustomerFileDto dto) {
ResultBean rb = ResultBean.fireFail();
AppUserOrgInfoVo data = sysUserFeign.getUserOrgInfoByUserSid(dto.getUserSid()).getData();
CommonContract commonContract = new CommonContract();
CommonContract commonContract = fetchBySid(dto.getContractSid());
commonContract.setContractNo(dto.getContractId());
commonContract.setPrice(dto.getPrice());
commonContract.setNum(Integer.valueOf(dto.getNumber()));
@ -1066,43 +1093,151 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
commonContract.setPartyB(dto.getPartyB());
commonContract.setContractAmount(dto.getContractPrice());
commonContract.setCustomerSid(dto.getCustomerSid());
commonContract.setStaffSid(data.getStaffSid());
commonContract.setStaffSid(dto.getUserSid());
commonContract.setStaffName(data.getStaffName());
commonContract.setOrgSid(data.getOrgSid());
String s1 = "";
String s2 = "";
String s3 = "";
if (dto.getContractImages().size() > 0) {
if (dto.getContractImages() != null) {
for (String contractImage : dto.getContractImages()) {
if (contractImage.indexOf(fileUploadComponent.getUrlPrefix()) > -1) {
contractImage = contractImage.replace(fileUploadComponent.getUrlPrefix(), "");
}
s1 += contractImage + ",";
commonContract.setAppdixUrl(s1.substring(0, s1.length() - 1));
}
commonContract.setAppdixUrl(s1.substring(0, s1.length() - 1));
}
if (dto.getContractImages().size() > 0) {
if (dto.getContractImages() != null) {
for (String siteSigImages : dto.getSiteSigImages()) {
if (siteSigImages.indexOf(fileUploadComponent.getUrlPrefix()) > -1) {
siteSigImages = siteSigImages.replace(fileUploadComponent.getUrlPrefix(), "");
}
s2 += siteSigImages + ",";
commonContract.setSceneSignUrl(s2.substring(0, s2.length() - 1));
}
commonContract.setSceneSignUrl(s2.substring(0, s2.length() - 1));
}
if (dto.getContractImages().size() > 0) {
if (dto.getContractImages() != null) {
for (String idCardImage : dto.getIdCardImages()) {
if (idCardImage.indexOf(fileUploadComponent.getUrlPrefix()) > -1) {
idCardImage = idCardImage.replace(fileUploadComponent.getUrlPrefix(), "");
}
s3 += idCardImage + ",";
commonContract.setIdImagesUrl(s3.substring(0, s3.length() - 1));
}
}
updateById(commonContract);
return rb.success().setData(commonContract.getSid());
}
public ResultBean submitContractInfo(AppSubmitContractInfoDto dto) {
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> orgByStaffSid = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!orgByStaffSid.getSuccess()) {
return rb.setMsg(orgByStaffSid.getMsg());
}
//用户的组织全路径
String orgSidPath = orgByStaffSid.getData().getOrgSidPath();
CommonContract commonContract = fetchBySid(dto.getContractSid());
int r = submitBusinessData(dto, commonContract);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
ResultBean<String> resultBean = saveContractInfo(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
baseMapper.updateBySidAndState(businessSid, "2");
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
//用户的部门全路径sid
bv.setOrgSidPath(orgSidPath);
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
appMap.put("sid", businessSid);
variables.put("app", appMap);
//流程定义id
bv.setModelId(ProcDefEnum.CONTRACTAPPLY.getProDefId());
if (r == 1) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
commonContract = 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(commonContract.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("业务");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
commonContract.setIdImagesUrl(s3.substring(0, s3.length() - 1));
bv.setTaskId(commonContract.getTaskId());
bv.setTaskDefKey(commonContract.getNodeId());
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
save(commonContract);
return rb.success();
return rb;
}
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(AppSubmitContractInfoDto dto, CommonContract commonContract) {
int r = 0;
if (StringUtils.isBlank(dto.getContractSid())) {
r = 1;
} else {
if (commonContract != null) {
String businessTaskId = commonContract.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<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) {
@ -1252,6 +1387,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
//签订日期、签订地点
//订金、合同金额
commonContract.setDeposit(new BigDecimal(depositTotal));
commonContract.setContractAmount(depositTotal);
//合同附件
//身份证信息附件
//车型sid
@ -1287,4 +1423,183 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
String billNo = Rule.getBillNo(bill, i);
return billNo;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
CommonContract commonContract = 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);
if (bv.getTaskId().equals(commonContract.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if (!"Event_end".equals(resultBean.getData().getTaskDefKey())) {
//极光推送
commonContract = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcInsId(commonContract.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("合同审核申请");
messageFlowableQuery.setMsgContent(commonContract.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean<List<CommonContractNodeVo>> getPreviousNodesForReject(CommonContractNodeQuery query) {
ResultBean<List<CommonContractNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
bv.setFormVariables(variables);
bv.setModelId(ProcDefEnum.CONTRACTAPPLY.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<CommonContractNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), CommonContractNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<CommonContractNodeVo>> getNextNodesForSubmit(CommonContractNodeQuery query) {
ResultBean<List<CommonContractNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
bv.setFormVariables(variables);
bv.setModelId(ProcDefEnum.CONTRACTAPPLY.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<CommonContractNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), CommonContractNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean taskReject(CommonContractTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
CommonContract commonContract = fetchBySid(businessSid);
if (commonContract == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = commonContract.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);
//极光推送
commonContract = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = commonContract.getProcInstId();
ufVo.setProcInsId(procId);
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(commonContract.getStaffSid())) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(commonContract.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(CommonContractTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
CommonContract commonContract = fetchBySid(query.getBusinessSid());
String businessTaskId = commonContract.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(CommonContractTaskQuery 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("请填写意见");
}
CommonContract commonContract = fetchBySid(query.getBusinessSid());
String businessTaskId = commonContract.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
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("操作失败!提交的数据不一致!");
}
}

4
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsurance.java

@ -59,6 +59,8 @@ public class BusSalesOrderInsurance extends BaseEntity {
@ApiModelProperty("单台车保费预估金额")
private BigDecimal insuranceCarMoney;
@ApiModelProperty("公司入保期数")
private Integer insuranceNum;
private String insuranceNum;
private String insuranceNumKey;
}

4
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceDetailsVo.java

@ -57,9 +57,11 @@ public class BusSalesOrderInsuranceDetailsVo implements Vo {
@JsonSerialize(using = ToStringSerializer.class)
private String insuranceCarMoney;
@ApiModelProperty("公司入保期数")
private Integer insuranceNum;
private String insuranceNum;
@ApiModelProperty(value = "保险备注")
private String remarks;
private String insuranceNumKey;
}

4
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceDto.java

@ -54,9 +54,11 @@ public class BusSalesOrderInsuranceDto implements Dto {
@ApiModelProperty("单台车保费预估金额")
private String insuranceCarMoney;
@ApiModelProperty("公司入保期数")
private Integer insuranceNum;
private String insuranceNum;
@ApiModelProperty(value = "备注")
private String remarks;
private String insuranceNumKey;
}

2
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceQuery.java

@ -58,6 +58,6 @@ public class BusSalesOrderInsuranceQuery implements Query {
@ApiModelProperty("单台车保费预估金额")
private BigDecimal insuranceCarMoney;
@ApiModelProperty("公司入保期数")
private Integer insuranceNum;
private String insuranceNum;
}

3
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/BusSalesOrderInsuranceVo.java

@ -61,6 +61,7 @@ public class BusSalesOrderInsuranceVo implements Vo {
@JsonSerialize(using = ToStringSerializer.class)
private String insuranceCarMoney;
@ApiModelProperty("公司入保期数")
private Integer insuranceNum;
private String insuranceNum;
private String insuranceNumKey;
}

2
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/app/AppBusSalesOrderInsuranceDto.java

@ -27,4 +27,6 @@ public class AppBusSalesOrderInsuranceDto implements Dto {
@ApiModelProperty(value = "销售订单sid")
private String salesOrderSid;
private String insuranceNumKey;
}

2
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderinsurance/app/AppBusSalesOrderInsuranceVo.java

@ -27,4 +27,6 @@ public class AppBusSalesOrderInsuranceVo implements Vo {
private String number;
@ApiModelProperty(value = "备注")
private String remarks;
private String numberKey;
}

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java

@ -601,7 +601,7 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
/**
* 发货组织:FStockOrgId (必填项)
*/
salOutStock.setFStockOrgId("101");
//salOutStock.setFStockOrgId("101");
List<SalOutStock.FEntity> fEntity=new ArrayList<>();

84
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busmaindeposit/BusMainDepositService.java

@ -94,9 +94,7 @@ 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 com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowableDto;
import com.yxt.messagecenter.api.message.MessageJsonDto;
import com.yxt.messagecenter.api.message.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -1778,7 +1776,17 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
busMainDeposit = fetchBySid(businessSid);
String msgSid = getMessage(ufVo, appMap, busMainDeposit);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcInsId(busMainDeposit.getProcInsId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("简易订单-订金申请");
messageFlowableQuery.setMsgContent(busMainDeposit.getStaffName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return voResultBean;
}
if (r == 2) {
@ -1889,7 +1897,18 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
baseVehicleFeign.updateMainDepositByVinNo(busMainDepositUpdateQuery);
//极光推送
busMainDeposit = fetchBySid(businessSid);
String msgSid = getMessage(ufVo, appMap, busMainDeposit);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcInsId(busMainDeposit.getProcInsId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("简易订单-订车申请");
messageFlowableQuery.setMsgContent(busMainDeposit.getStaffName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, busMainDeposit);
return voResultBean;
}
if (r == 2) {
@ -1934,7 +1953,23 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
baseVehicleFeign.updateMainDepositByVinNo(busMainDepositUpdateQuery);
//极光推送
busMainDeposit = fetchBySid(bv.getBusinessSid());
String msgSid = getMessage(ufVo, appMap, busMainDeposit);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
ufVo.setProcInsId(busMainDeposit.getProcInsId());
ufVo.setProcDefId(busMainDeposit.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
if ("01".equals(busMainDeposit.getDepositBillTypeKey())) {//订金收取
messageFlowableQuery.setModuleName("简易订单-订金申请");
}else{
messageFlowableQuery.setModuleName("简易订单-订车申请");
}
messageFlowableQuery.setMsgContent(busMainDeposit.getStaffName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, busMainDeposit);
}
return rb.success().setData(resultBean.getData());
} else {
@ -2023,7 +2058,30 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
updateFlowFiled(map);
//极光推送
busMainDeposit = fetchBySid(query.getBusinessSid());
String msgSid = getMessage(ufVo, appMap, busMainDeposit);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo,messageFlowVo);
String procId = busMainDeposit.getProcInsId();
ufVo.setProcInsId(busMainDeposit.getProcInsId());
ufVo.setProcDefId(busMainDeposit.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(query.getBusinessSid());
if ("01".equals(busMainDeposit.getDepositBillTypeKey())) {//订金收取
messageFlowableQuery.setModuleName("简易订单-订金申请");
}else{
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(busMainDeposit.getStaffSid())){
messageFlowableQuery.setMsgContent("您提交的"+messageFlowableQuery.getModuleName()+"已被驳回,请重新提交");
}else{
messageFlowableQuery.setMsgContent(busMainDeposit.getStaffName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批");
}
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
@ -2087,15 +2145,7 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
return rb.setMsg("操作失败!提交的数据不一致!");
}
/**
* 消息推送
*
* @param ufVo
* @param appMap
* @param busMainDeposit
* @return
*/
public String getMessage(UpdateFlowFieldVo ufVo, Map<String, Object> appMap, BusMainDeposit busMainDeposit) {
/* public String getMessage(UpdateFlowFieldVo ufVo, Map<String, Object> appMap, BusMainDeposit busMainDeposit) {
//=====极光推送信息========================================参数组装
String procId = busMainDeposit.getProcInsId();
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.getLatestTasks(procId);
@ -2149,6 +2199,6 @@ public class BusMainDepositService extends MybatisBaseService<BusMainDepositMapp
String msgSid = stringResultBean.getData();
return msgSid;
}
}*/
}

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderMapper.java

@ -157,4 +157,6 @@ public interface BusSalesOrderMapper extends BaseMapper<BusSalesOrder> {
AppOrderDetailsVo getSaleOrderDetails(String sid);
int updateFlowFiled(Map<String, Object> map);
int selectNum(String bill);
}

6
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderMapper.xml

@ -207,4 +207,10 @@
</if>
WHERE sid = #{sid}
</update>
<select id="selectNum" resultType="int">
select IFNULL(CAST(REPLACE(MAX(billNo), #{bill}, '') AS SIGNED),0) as code
from bus_sales_order
where billNo LIKE concat(#{bill}, '%')
</select>
</mapper>

162
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java

@ -46,6 +46,9 @@ import com.yxt.anrui.base.api.busvehicleorder.BusVehicleOrderFeign;
import com.yxt.anrui.base.api.busvehicleorder.BusVehicleOrderVo;
import com.yxt.anrui.base.api.commoncontract.CommonContractBuscenterVo;
import com.yxt.anrui.base.api.commoncontract.CommonContractFeign;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousDetailsVo;
import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousDto;
import com.yxt.anrui.buscenter.api.bussalesorder.*;
@ -94,13 +97,13 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlFeign;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
@ -114,8 +117,8 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowableDto;
import com.yxt.messagecenter.api.message.MessageJsonDto;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -909,12 +912,31 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
//更新业务中的流程相关的参数
updateFlowFiled(map);
if(!"Event_end".equals(ufVo.getTaskDefKey())){
//极光推送
busSalesOrder = fetchBySid(query.getBusinessSid());
String msgSid = getMessage(ufVo, (Map<String, Object>) variables.get("app"), busSalesOrder);
//极光推送
busSalesOrder = fetchBySid(query.getBusinessSid());
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = busSalesOrder.getProcInstId();
ufVo.setProcInsId(procId);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) variables.get("app"));
messageFlowableQuery.setBusinessSid(query.getBusinessSid());
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(busSalesOrder.getStaffSid())) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(busSalesOrder.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, (Map<String, Object>) variables.get("app"), busSalesOrder);
return rb.success();
}
}
@ -1243,15 +1265,23 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
*/
public AppBusSalesOrderBillInfoVo getBillInfo(String saleOrderSid) {
AppBusSalesOrderBillInfoVo vo = baseMapper.getBillInfo(saleOrderSid);
String affiliatedOrgSid = vo.getAffiliatedOrgSid();
if (StringUtils.isNotBlank(affiliatedOrgSid)) {
if(vo != null){
String affiliatedOrgSid = vo.getAffiliatedOrgSid();
if (StringUtils.isNotBlank(affiliatedOrgSid)) {
vo.setAffiliatedType("1");
vo.setAffiliatedOrgNameChoose(vo.getAffiliatedCompany());
} else {
vo.setAffiliatedType("0");
vo.setAffiliatedOrgNameWrite(vo.getAffiliatedCompany());
}
vo.setSaleOrderSid(saleOrderSid);
}else{
vo = new AppBusSalesOrderBillInfoVo();
//根据意向车型查询信息
vo.setIntentionSid(saleOrderSid);
vo.setAffiliatedType("1");
vo.setAffiliatedOrgNameChoose(vo.getAffiliatedCompany());
} else {
vo.setAffiliatedType("0");
vo.setAffiliatedOrgNameWrite(vo.getAffiliatedCompany());
}
vo.setSaleOrderSid(saleOrderSid);
return vo;
}
@ -1286,7 +1316,8 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
busSalesOrder.setCustomerPhoto(customerTempInfoVo.getCustomerPhoto());
busSalesOrder.setCustomerClass(customerTempInfoVo.getCustomerType());
busSalesOrder.setCustomerClassKey(customerTempInfoVo.getCustomerTypeKey());
busSalesOrder.setBillNo(generateBillNo(dto.getUserSid()).get("billNo_Num"));
String billNo = getApplyCode(dto.getUserSid());
busSalesOrder.setBillNo(billNo);
busSalesOrder.setCreateDate(new Date());
if ("0".equals(affiliatedType)) {
busSalesOrder.setAffiliatedCompany(dto.getAffiliatedOrgNameWrite());
@ -1359,6 +1390,20 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
return rb.success().setData(sid);
}
public String getApplyCode(String userSid) {
//获取分公司sid
ResultBean<String> resultBean = sysStaffOrgFeign.getPathSidByUserSid(userSid);
ResultBean<SysOrganizationVo> resultBean1 = sysOrganizationFeign.fetchBySid(resultBean.getData());
String orgCode = resultBean1.getData().getOrgCode();
BillNo b = new BillNo();
b.setOrgCode(orgCode);
b.setBillType(BillTypeEnum.XSDD.getBillType());
String bill = Rule.getBill(b);
int i = baseMapper.selectNum(bill);
String billNo = Rule.getBillNo(bill, i);
return billNo;
}
/**
* 初始化销售订单车型信息以及验证销售订单的车型信息是否发生了变化
*
@ -1482,7 +1527,13 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
}
if ("3".equals(busSalesOrder.getType())) {
type = "2";
//查询数量
BusSalesOrderPrice busSalesOrderPrice = busSalesOrderPriceService.selectBySalesOrderSid(saleOrderSid);
if (busSalesOrderPrice != null) {
if (busSalesOrderPrice.getQuantity() != null) {
vo.setArrangeNumber(busSalesOrderPrice.getQuantity().toString());
}
}
}
vo.setOrderInfo(orderInfo);
vo.setState(type);
@ -2120,6 +2171,10 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
String x2 = "入保期数";
vo.setInsuranceInfo(busSalesOrderInsurance.getInsuranceName() + x + x1 + busSalesOrderInsurance.getInsuranceCarMoney() + "元" + x + x2 + busSalesOrderInsurance.getInsuranceNum() + "期");
}
}else{
if ("0".equals(busSalesOrder.getIsInsurance())) {
vo.setInsuranceInfo("未在公司入保");
}
}
/***************************车型信息***************************************/
AppOrderModelInfoVo modelInfo = busSalesOrderModelService.selectModel(sid);
@ -2267,7 +2322,17 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
busSalesOrder = fetchBySid(businessSid);
String msgSid = getMessage(ufVo, (Map<String, Object>) variables.get("app"), busSalesOrder);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) variables.get("app"));
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("销售订单申请");
messageFlowableQuery.setMsgContent(busSalesOrder.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, (Map<String, Object>) variables.get("app"), busSalesOrder);
return voResultBean;
}
if (r == 2) {
@ -2342,8 +2407,22 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//极光推送
busSalesOrder = fetchBySid(bv.getBusinessSid());
String msgSid = getMessage(ufVo, (Map<String, Object>) variables.get("app"), busSalesOrder);
if (!"Event_end".equals(resultBean.getData().getTaskDefKey())) {
//极光推送
busSalesOrder = fetchBySid(bv.getBusinessSid());
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcInsId(busSalesOrder.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap((Map<String, Object>) variables.get("app"));
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("销售订单申请");
messageFlowableQuery.setMsgContent(busSalesOrder.getStaffName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("业务中心");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
// String msgSid = getMessage(ufVo, (Map<String, Object>) variables.get("app"), busSalesOrder);
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
@ -2418,49 +2497,4 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
// variables.put("isLoan1", "3".equals(busSalesOrder.getType()));
return variables;
}
public String getMessage(UpdateFlowFieldVo ufVo, Map<String, Object> appMap, BusSalesOrder busSalesOrder) {
//=====极光推送信息========================================参数组装
String procId = busSalesOrder.getProcInstId();
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = resultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
//根据用户的sid查询用户的id
ResultBean<String> stringList1 = sysUserFeign.selectIdBySid(receiveSidList);
List<String> reveiveIdList = Arrays.asList(stringList1.getData().split(","));
MessageFlowableDto messageFlowableDto = new MessageFlowableDto();
MessageJsonDto messageJsonDto = new MessageJsonDto();
BeanUtil.copyProperties(ufVo, messageJsonDto);
//查询流程审批的页面操作地址组装json的参数
//根据taskDef和移动端标识
ResultBean<SysProUrlVo> selectUrlByKey = sysProUrlFeign.selectUrlByKey(ProcDefEnum.SALESORDER.getProDefId(), ufVo.getTaskDefKey(), "1", "2");
SysProUrlVo sysProUrlVo = selectUrlByKey.getData();
messageFlowableDto.setBusinessSid(busSalesOrder.getSid());
messageFlowableDto.setApp_type("2");
if (sysProUrlVo.getUrl().contains("#")) {
messageFlowableDto.setModuleAction(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(0));
List<Integer> codesInteger = Arrays.asList(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(1).split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());
int[] ints = codesInteger.stream().mapToInt(Integer::valueOf).toArray();
;
messageJsonDto.setButtons(ints);
} else {
messageFlowableDto.setModuleAction(sysProUrlVo.getUrl());
}
messageFlowableDto.setModuleSid(Arrays.asList(sysProUrlVo.getModulePluginName().split("#")).get(0));
messageJsonDto.setTaskName(ufVo.getNodeState());
messageJsonDto.setProcInsId(ufVo.getProcInsId());
messageJsonDto.setAppMap(appMap);
messageFlowableDto.setJson(messageJsonDto);
messageFlowableDto.setList(receiveSidList);
messageFlowableDto.setReceiveIdList(reveiveIdList);
messageFlowableDto.setModuleName("销售订单申请");
messageFlowableDto.setMsgContent("销售订单申请");
messageFlowableDto.setMsgTitle("销售订单申请");
messageFlowableDto.setCreateName(busSalesOrder.getStaffName());
messageFlowableDto.setTaskId(ufVo.getTaskId());
ResultBean<String> stringResultBean = messageFeign.getMessage(messageFlowableDto);
String msgSid = stringResultBean.getData();
return msgSid;
}
}

45
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderdeposit/BusSalesOrderDepositService.java

@ -150,8 +150,10 @@ public class BusSalesOrderDepositService extends MybatisBaseService<BusSalesOrde
if (!listVos.isEmpty()) {
for (AppBusSalesOrderDepositListVo listVo : listVos) {
String payPath = listVo.getPayPath();
List<String> stringList = Arrays.asList(payPath.split(","));
listVo.setEntrustImage(stringList);
if(StringUtils.isNotBlank(payPath)){
List<String> stringList = Arrays.asList(payPath.split(","));
listVo.setEntrustImage(stringList);
}
//根据销售订单
if (!busSalesOrder.getCustomerName().equals(listVo.getName())) {
listVo.setShowImage(true);
@ -182,16 +184,47 @@ public class BusSalesOrderDepositService extends MybatisBaseService<BusSalesOrde
if (busSalesOrder == null) {
return rb.setMsg("该销售订单单据不存在");
}
//先计算需补交订金是多少
//总的结转金额
BigDecimal makeUpDecimal = new BigDecimal("0");
if ("02".equals(dto.getDepositTypeKey())) {
List<AppBusSalesOrderDepositListDto> listVos = dto.getVirtualOrderList();
listVos.removeAll(Collections.singleton(null));
for (AppBusSalesOrderDepositListDto listDto : listVos) {
//查询付款人是否和客户一样
BusDeposit busDeposit = busDepositService.selectByBillSid(listDto.getDepositBillSid());
if (!busSalesOrder.getCustomerName().equals(busDeposit.getDraweeName())) {
if (listDto.getEntrustImage().isEmpty()) {
return rb.setMsg("选择的虚拟订金单中有付款人与该客户不一致,请上传款项支付委托书");
}
}
makeUpDecimal = makeUpDecimal.add(new BigDecimal(listDto.getPrice()));
}
}
BusSalesOrderDeposit busSalesOrderDeposit = baseMapper.selectByOrderSid(salesOrderSid);
String depositSid = "";
if (busSalesOrderDeposit == null) {
busSalesOrderDeposit = new BusSalesOrderDeposit();
BeanUtil.copyProperties(dto, busSalesOrderDeposit, "sid");
//计算需补交订金
if(StringUtils.isNotBlank(dto.getDepositAll())){
if("02".equals(dto.getDepositTypeKey())){
BigDecimal bigDecimalAll = new BigDecimal(dto.getDepositAll());
busSalesOrderDeposit.setMakeUpDeposit(bigDecimalAll.subtract(makeUpDecimal));
}
}
depositSid = busSalesOrderDeposit.getSid();
baseMapper.insert(busSalesOrderDeposit);
} else {
depositSid = busSalesOrderDeposit.getSid();
BeanUtil.copyProperties(dto, busSalesOrderDeposit, "sid");
//计算需补交订金
if(StringUtils.isNotBlank(dto.getDepositAll())){
if("02".equals(dto.getDepositTypeKey())){
BigDecimal bigDecimalAll = new BigDecimal(dto.getDepositAll());
busSalesOrderDeposit.setMakeUpDeposit(bigDecimalAll.subtract(makeUpDecimal));
}
}
baseMapper.updateById(busSalesOrderDeposit);
if ("01".equals(dto.getDepositTypeKey())) {
//将需补交订金设置为null
@ -208,14 +241,6 @@ public class BusSalesOrderDepositService extends MybatisBaseService<BusSalesOrde
List<AppBusSalesOrderDepositListDto> listVos = dto.getVirtualOrderList();
listVos.removeAll(Collections.singleton(null));
for (AppBusSalesOrderDepositListDto listDto : listVos) {
//查询付款人是否和客户一样
BusDeposit busDeposit = busDepositService.selectByBillSid(listDto.getDepositBillSid());
if (!busSalesOrder.getCustomerName().equals(busDeposit.getDraweeName())) {
if (listDto.getEntrustImage().isEmpty()) {
return rb.setMsg("选择的虚拟订金单中有付款人与该客户不一致,请上传款项支付委托书");
}
}
BusDepositFictitious busDepositFictitious = new BusDepositFictitious();
BeanUtil.copyProperties(listDto, busDepositFictitious, "sid");
busDepositFictitious.setDepositSid(depositSid);

3
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderinsurance/BusSalesOrderInsuranceMapper.xml

@ -49,7 +49,8 @@
insuranceName as name,
insuranceCarMoney as price,
insuranceNum as number,
remarks
remarks,
insuranceNumKey as numberKey
from bus_sales_order_insurance
where salesOrderSid = #{sid}
</select>

3
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderinsurance/BusSalesOrderInsuranceService.java

@ -112,6 +112,9 @@ public class BusSalesOrderInsuranceService extends MybatisBaseService<BusSalesOr
}
} else if ("0".equals(dto.getIsInsureType())) {
if(StringUtils.isBlank(dto.getRemarks())){
return rb.setMsg("备注不能为空");
}
//查询保险信息是否有数据
BusSalesOrderInsurance busSalesOrderInsurance = baseMapper.selectByOrderSid(dto.getSalesOrderSid());
if (busSalesOrderInsurance != null) {

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.xml

@ -68,6 +68,8 @@
NULL), IF(LENGTH(trim(GROUP_CONCAT(topPrice))) > 0, GROUP_CONCAT('上装价格:', topPrice),
NULL),
IF(LENGTH(trim(GROUP_CONCAT(moreConfig))) > 0, GROUP_CONCAT('更多配置:', moreConfig),
NULL),
IF(LENGTH(trim(GROUP_CONCAT(remarks))) > 0, GROUP_CONCAT('备注:', remarks),
NULL)) as topBean,
contractPath,
topName

1
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/CrmVehicledemandFeign.java

@ -154,4 +154,5 @@ public interface CrmVehicledemandFeign {
@GetMapping("/getInfo/{intentionSid}")
ResultBean<CrmVehicleDemandOrderVo> getInfo(@PathVariable("intentionSid") String intentionSid);
}

6
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeign.java

@ -7,6 +7,7 @@ import com.yxt.anrui.fin.api.kingdee.bdmaterial.BdMaterial;
import com.yxt.anrui.fin.api.kingdee.purmrb.PurMrb;
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock;
import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock;
import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -72,4 +73,9 @@ public interface FinKingDeeFeign {
@ResponseBody
public ResultBean<List<KingDeeResult>> draftBdMaterialList(@RequestBody List<BdMaterial> bdMaterial) ;
@ApiOperation("保存直接调拨单的接口")
@PostMapping("/draftStkTransferDirect")
@ResponseBody
public ResultBean<List<KingDeeResult>> draftStkTransferDirect(@RequestBody StkTransferDirect stkTransferDirect) ;
}

6
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/FinKingDeeFeignFallBack.java

@ -7,6 +7,7 @@ import com.yxt.anrui.fin.api.kingdee.bdmaterial.BdMaterial;
import com.yxt.anrui.fin.api.kingdee.purmrb.PurMrb;
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock;
import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock;
import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect;
import com.yxt.common.core.result.ResultBean;
import java.util.List;
@ -53,4 +54,9 @@ implements FinKingDeeFeign{
return null;
}
@Override
public ResultBean<List<KingDeeResult>> draftStkTransferDirect(StkTransferDirect stkTransferDirect) {
return null;
}
}

1
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/KingDeeBillId.java

@ -8,6 +8,7 @@ public enum KingDeeBillId {
STK_INSTOCK("STK_InStock","采购入库单"),
PUR_MRB("PUR_MRB","采购退料单"),
SAL_OUTSTOCK("SAL_OUTSTOCK","销售出库单"),
STK_TRANSFERDIRECT("STK_TransferDirect","直接调拨单"),
BD_MATERIAL("BD_MATERIAL","物料");
private String ID;
private String NAME;

7
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/bdmaterial/BdMaterial.java

@ -37,6 +37,13 @@ public class BdMaterial {
@NotBlank(message = "物料分组:FMaterialGroup (必填项)")
@JsonProperty("FMaterialGroup")
private String FMaterialGroup;
/**
*车辆类型:F_PAEZ_Base (必填项)
*/
@NotBlank(message = "车辆类型:F_PAEZ_Base ")
@JsonProperty("F_PAEZ_Base")
private String F_PAEZ_Base;
private final static BdMaterial bdMaterial = new BdMaterial();
static {
/**

78
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/purmrb/PurMrb.java

@ -29,14 +29,14 @@ public class PurMrb {
public String FStockOrgId;
/**
* 需求组织:FRequireOrgId (必填项)
*/@NotBlank
@JsonProperty("FRequireOrgId")
public String FRequireOrgId;
*///@NotBlank
//@JsonProperty("FRequireOrgId")
//public String FRequireOrgId;
/**
* 采购组织:FPurchaseOrgId (必填项)
*/@NotBlank
@JsonProperty("FPurchaseOrgId")
public String FPurchaseOrgId;
*///@NotBlank
//@JsonProperty("FPurchaseOrgId")
//public String FPurchaseOrgId;
/**
* 供应商:FSupplierID (必填项)
*/@NotBlank
@ -44,29 +44,29 @@ public class PurMrb {
public String FSupplierID;
/**
* 接收方:FACCEPTORID
*/@NotBlank
@JsonProperty("FACCEPTORID")
public String FACCEPTORID;
*///@NotBlank
//@JsonProperty("FACCEPTORID")
//public String FACCEPTORID;
/**
* 结算方:FSettleId
*/@NotBlank
@JsonProperty("FSettleId")
public String FSettleId;
*///@NotBlank
//@JsonProperty("FSettleId")
//public String FSettleId;
/**
* 收款方:FCHARGEID
*/@NotBlank
@JsonProperty("FCHARGEID")
public String FCHARGEID;
*///@NotBlank
//@JsonProperty("FCHARGEID")
//public String FCHARGEID;
/**
* 货主:FOwnerIdHead (必填项)
*/@NotBlank
@JsonProperty("FOwnerIdHead")
public String FOwnerIdHead;
*///@NotBlank
//@JsonProperty("FOwnerIdHead")
//public String FOwnerIdHead;
/**
* 结算组织:FSettleOrgId (必填项)
*/@NotBlank
@JsonProperty("FSettleOrgId")
public String FSettleOrgId;
*///@NotBlank
//@JsonProperty("FSettleOrgId")
//public String FSettleOrgId;
/**
* 物料列表
*/@NotBlank
@ -90,7 +90,7 @@ public class PurMrb {
* 库存单位:FUnitID (必填项)
*/@NotBlank
@JsonProperty("FUnitID")
public String FUnitID;
public String FUnitID="liang";
/**
* 批号:FLot
*/@NotBlank
@ -103,19 +103,19 @@ public class PurMrb {
public double FRMREALQTY;
/**
* 补料数量:FREPLENISHQTY
*/@NotBlank
@JsonProperty("FREPLENISHQTY")
public double FREPLENISHQTY;
*///@NotBlank
//@JsonProperty("FREPLENISHQTY")
//public double FREPLENISHQTY;
/**
* 扣款数量:FKEAPAMTQTY
*/@NotBlank
@JsonProperty("FKEAPAMTQTY")
public double FKEAPAMTQTY;
*///@NotBlank
//@JsonProperty("FKEAPAMTQTY")
//public double FKEAPAMTQTY;
/**
* 计价单位:FPRICEUNITID (必填项)
*/@NotBlank
@JsonProperty("FPRICEUNITID")
public String FPRICEUNITID;
public String FPRICEUNITID="liang";
/**
* 仓库:FSTOCKID
*/@NotBlank
@ -128,24 +128,24 @@ public class PurMrb {
public String FStockStatusId;
/**
* 计价基本数量:FPriceBaseQty
*/@NotBlank
@JsonProperty("FPriceBaseQty")
public double FPriceBaseQty;
*///@NotBlank
//@JsonProperty("FPriceBaseQty")
//public double FPriceBaseQty;
/**
* 采购单位:FCarryUnitId (必填项)
*/@NotBlank
@JsonProperty("FCarryUnitId")
public String FCarryUnitId;
public String FCarryUnitId="liang";
/**
* 采购数量:FCarryQty
*/@NotBlank
@JsonProperty("FCarryQty")
public double FCarryQty;
*///@NotBlank
//@JsonProperty("FCarryQty")
//public double FCarryQty;
/**
* 采购基本数量:FCarryBaseQty
*/@NotBlank
@JsonProperty("FCarryBaseQty")
public double FCarryBaseQty;
*///@NotBlank
//@JsonProperty("FCarryBaseQty")
//public double FCarryBaseQty;
}

4
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/saloutstock/SalOutStock.java

@ -34,8 +34,8 @@ public class SalOutStock {
private String FSaleDeptID;
/**
* 发货组织:FStockOrgId (必填项)
*/ @JsonProperty("FStockOrgId")
private String FStockOrgId;
*/ //@JsonProperty("FStockOrgId")
// private String FStockOrgId;
/**
* 付款方:FPayerID FCustomerID
*/ @JsonProperty("FPayerID")

32
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/stkinstock/StkInStock.java

@ -23,9 +23,9 @@ public class StkInStock {
/**
* // 收料组织:FStockOrgId (必填项)
*/@JsonProperty("FStockOrgId")
@NotBlank
public String FStockOrgId;
*///@JsonProperty("FStockOrgId")
// @NotBlank
// public String FStockOrgId;
/**
* // 采购部门:FPurchaseDeptId (必填项)
@ -47,9 +47,9 @@ public class StkInStock {
/**
* // 货主:FOwnerIdHead (必填项)
*/@JsonProperty("FOwnerIdHead")
@NotBlank
public String FOwnerIdHead;
*///@JsonProperty("FOwnerIdHead")
//@NotBlank
// public String FOwnerIdHead;
/**
* // 货主类型:FOwnerTypeIdHead (必填项)
@ -65,9 +65,9 @@ public class StkInStock {
/**
* // 结算组织:FSettleOrgId (必填项)
*/@JsonProperty("FSettleOrgId")
@NotBlank
public String FSettleOrgId;
*///@JsonProperty("FSettleOrgId")
//@NotBlank
//public String FSettleOrgId;
/**
* // 物料列表:FInStockEntry (必填项)
@ -88,7 +88,7 @@ public class StkInStock {
* // 库存单位:FUnitID (必填项)
*/@JsonProperty("FUnitID")
@NotBlank
public String FUnitID;
public String FUnitID="liang";
/**
* // 实收数量:FRealQty
@ -98,15 +98,15 @@ public class StkInStock {
/**
* // 计价数量:FPriceUnitQty
*/@JsonProperty("FPriceUnitQty")
@NotBlank
public String FPriceUnitQty;
*///@JsonProperty("FPriceUnitQty")
// @NotBlank
// public String FPriceUnitQty;
/**
* // 采购数量:FRemainInStockQty
*/@JsonProperty("FRemainInStockQty")
@NotBlank
public double FRemainInStockQty;
*///@JsonProperty("FRemainInStockQty")
// @NotBlank
//public double FRemainInStockQty;
/**
* // 批号:FLot

198
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/stktransferdirect/StkTransferDirect.java

@ -0,0 +1,198 @@
package com.yxt.anrui.fin.api.kingdee.stktransferdirect;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* 直接调拨单
*/
@Data
public class StkTransferDirect {
@Data
public static class FBillEntry{
/* 调入库存状态:FDestStockStatusId (必填项)*/
@JsonProperty("FDestStockStatusId")
@NotBlank
public String FDestStockStatusId;
/*调出库存状态:FSrcStockStatusId (必填项)*/
@JsonProperty("FSrcStockStatusId")
@NotBlank
public String FSrcStockStatusId;
/*基本单位:FBaseUnitId (必填项)*/
@JsonProperty("FBaseUnitId")
@NotBlank
public String FBaseUnitId;
/*调入货主类型:FOwnerTypeId (必填项)*/
@JsonProperty("FOwnerTypeId")
@NotBlank
public String FOwnerTypeId;
/* 调出保管者:FKeeperOutId (必填项)*/
@JsonProperty("FKeeperOutId")
@NotBlank
public String FKeeperOutId;
/* 调出货主:FOwnerOutId (必填项)*/
@JsonProperty("FOwnerOutId")
@NotBlank
public String FOwnerOutId;
/*调出批号:FLot*/
@JsonProperty("FLot")
@NotBlank
public String FLot;
/* 调出货主类型:FOwnerTypeOutId (必填项)*/
@JsonProperty("FOwnerTypeOutId")
@NotBlank
public String FOwnerTypeOutId;
/*调入批号:FDestLot*/
@JsonProperty("FDestLot")
@NotBlank
public String FDestLot;
/* 调入货主:FOwnerId (必填项)*/
@JsonProperty("FOwnerId")
@NotBlank
public String FOwnerId;
/* 调入货主:FOwnerIdHead (必填项)*/
@JsonProperty("FOwnerIdHead")
@NotBlank
public String FOwnerIdHead;
/* 调出保管者类型:FKeeperTypeOutId (必填项)*/
@JsonProperty("FKeeperTypeOutId")
@NotBlank
public String FKeeperTypeOutId;
/* 调入保管者:FKeeperId (必填项)*/
@JsonProperty("FKeeperId")
@NotBlank
public String FKeeperId;
/* 调入保管者类型:FKeeperTypeId (必填项)*/
@JsonProperty("FKeeperTypeId")
@NotBlank
public String FKeeperTypeId;
/* 调入仓库:FDestStockId (必填项)*/
@JsonProperty("FDestStockId")
@NotBlank
public String FDestStockId;
/* 单位:FUnitID (必填项)*/
@JsonProperty("FUnitID")
@NotBlank
public String FUnitID;
/* 物料编码:FMaterialId (必填项)*/
@JsonProperty("FMaterialId")
@NotBlank
public String FMaterialId;
/* 调出仓库:FSrcStockId (必填项)*/
@JsonProperty("FSrcStockId")
@NotBlank
public String FSrcStockId;
}
/* 调出库存组织:FStockOutOrgId (必填项)*/
@JsonProperty("FStockOutOrgId")
@NotBlank
public String FStockOutOrgId;
/* 调拨类型:FTransferBizType (必填项)*/
@JsonProperty("FTransferBizType")
@NotBlank
public String FTransferBizType;
/* 调拨方向:FTransferDirect (必填项)*/
@JsonProperty("FTransferDirect")
@NotBlank
public String FTransferDirect;
/* 调出货主类型:FOwnerTypeOutIdHead (必填项)*/
@JsonProperty("FOwnerTypeOutIdHead")
@NotBlank
public String FOwnerTypeOutIdHead;
/* 调入库存组织:FStockOrgId (必填项)*/
@JsonProperty("FStockOrgId")
@NotBlank
public String FStockOrgId;
/* 调入货主类型:FOwnerTypeIdHead (必填项)*/
@JsonProperty("FOwnerTypeIdHead")
@NotBlank
public String FOwnerTypeIdHead;
/* 单据类型:FBillTypeID (必填项)*/
@JsonProperty("FBillTypeID")
@NotBlank
public String FBillTypeID;
/* 日期:FDate (必填项)*/
@JsonProperty("FDate")
@NotBlank
public String FDate;
/**
* FBillEntry
*/
@JsonProperty("FBillEntry")
@NotBlank
public List<FBillEntry> FBillEntry=new ArrayList<>();
public final static StkTransferDirect stkTransferDirect = new StkTransferDirect();
static {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
/* 单据类型:FBillTypeID (必填项)*/
stkTransferDirect.setFBillTypeID("ZJDB01_SYS");
/* 日期:FDate (必填项)*/
stkTransferDirect.setFDate(sdf.format(date));
/* 调出库存组织:FStockOutOrgId (必填项)*/
stkTransferDirect.setFStockOutOrgId("101");
/* 调出货主类型:FOwnerTypeOutIdHead (必填项)*/
stkTransferDirect.setFOwnerTypeOutIdHead("BD_OwnerOrg");
/* 调拨类型:FTransferBizType (必填项)*/
stkTransferDirect.setFTransferBizType("InnerOrgTransfer");
/* 调拨方向:FTransferDirect (必填项)*/
stkTransferDirect.setFTransferDirect("GENERAL");
/* 调入库存组织:FStockOrgId (必填项)*/
stkTransferDirect.setFStockOrgId("101");
/* 调入货主类型:FOwnerTypeIdHead (必填项)*/
stkTransferDirect.setFOwnerTypeIdHead("BD_OwnerOrg");
List<StkTransferDirect.FBillEntry> fBillEntry=new ArrayList<>();
StkTransferDirect.FBillEntry fbe=new StkTransferDirect.FBillEntry();
/*调入批号:FDestLot*/
fbe.setFDestLot("1234567890");
/*调出批号:FLot*/
fbe.setFLot("1234567890");
/*基本单位:FBaseUnitId (必填项)*/
fbe.setFBaseUnitId("liang");
/* 调入仓库:FDestStockId (必填项)*/
fbe.setFDestStockId("CK002");
/* 单位:FUnitID (必填项)*/
fbe.setFUnitID("liang");
/* 物料编码:FMaterialId (必填项)*/
fbe.setFMaterialId(" JX091054");
/* 调入库存状态:FDestStockStatusId (必填项)*/
fbe.setFDestStockStatusId("KCZT01_SYS");
/* 调入货主类型:FOwnerTypeId (必填项)*/
fbe.setFOwnerTypeId("BD_OwnerOrg");
/* 调入货主:FOwnerId (必填项)*/
fbe.setFOwnerId("101");
/* 调入货主:FOwnerId (必填项)*/
fbe.setFOwnerIdHead("101");
/* 调出保管者:FKeeperOutId (必填项)*/
fbe.setFKeeperOutId("101");
/* 调出货主:FOwnerOutId (必填项)*/
fbe.setFOwnerOutId("101");
/* 调出货主类型:FOwnerTypeOutId (必填项)*/
fbe.setFOwnerTypeOutId("BD_OwnerOrg");
/* 调出保管者类型:FKeeperTypeOutId (必填项)*/
fbe.setFKeeperTypeOutId("BD_KeeperOrg");
/* 调入保管者:FKeeperId (必填项)*/
fbe.setFKeeperId("101");
/* 调入保管者类型:FKeeperTypeId (必填项)*/
fbe.setFKeeperTypeId("BD_KeeperOrg");
/*调出库存状态:FSrcStockStatusId (必填项)*/
fbe.setFSrcStockStatusId("KCZT01_SYS");
/* 调出仓库:FSrcStockId (必填项)*/
fbe.setFSrcStockId("CK001");
fBillEntry.add(fbe);
stkTransferDirect.setFBillEntry(fBillEntry);
}
public static StkTransferDirect createStkTransferDirect() {
return stkTransferDirect;
}
}

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/submitkd/SubmitKD.java

@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 提交金蝶接口的数据格式
* 提交功能 金蝶接口的数据格式
*/
@Data
public class SubmitKD {

16
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java

@ -9,6 +9,7 @@ import com.yxt.anrui.fin.api.kingdee.bdmaterial.BdMaterial;
import com.yxt.anrui.fin.api.kingdee.purmrb.PurMrb;
import com.yxt.anrui.fin.api.kingdee.saloutstock.SalOutStock;
import com.yxt.anrui.fin.api.kingdee.stkinstock.StkInStock;
import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect;
import com.yxt.anrui.fin.biz.kingdee.appaybill.ApPayBillService;
import com.yxt.anrui.fin.biz.kingdee.appayable.APPayableService;
import com.yxt.anrui.fin.biz.kingdee.bdmaterial.BdMaterialService;
@ -16,6 +17,7 @@ import com.yxt.anrui.fin.biz.kingdee.purmrb.PurMrbService;
import com.yxt.anrui.fin.biz.kingdee.receivablebill.ReceivableBillService;
import com.yxt.anrui.fin.biz.kingdee.saloutstock.SalOutStockService;
import com.yxt.anrui.fin.biz.kingdee.stkinstock.STKInStockService;
import com.yxt.anrui.fin.biz.kingdee.stktransferdirect.StkTransferDirectService;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -64,6 +66,11 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
*/
@Autowired
private BdMaterialService bdMaterialService;
/**
* 保存直接调拨单
*/
@Autowired
private StkTransferDirectService stkTransferDirectService;
@ApiOperation("入账保存应付单的接口")
@PostMapping("/draftEntryBill")
@ResponseBody
@ -111,7 +118,7 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
@PostMapping("/draftBdMaterial")
@ResponseBody
@Override
public ResultBean<List<KingDeeResult>> draftBdMaterial(BdMaterial bdMaterial) {
public ResultBean<List<KingDeeResult>> draftBdMaterial(@RequestBody BdMaterial bdMaterial) {
return bdMaterialService.draftBdMaterial(bdMaterial);
}
@ -122,4 +129,11 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign {
public ResultBean<List<KingDeeResult>> draftBdMaterialList(@RequestBody List<BdMaterial> bdMaterial) {
return bdMaterialService.draftBdMaterialList(bdMaterial);
}
@ApiOperation("保存直接调拨单的接口")
@PostMapping("/draftStkTransferDirect")
@ResponseBody
@Override
public ResultBean<List<KingDeeResult>> draftStkTransferDirect(@RequestBody StkTransferDirect stkTransferDirect) {
return stkTransferDirectService.draftStkTransferDirect(stkTransferDirect);
}
}

10
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/purmrb/data_FPURMRBENTRY.json

@ -11,8 +11,8 @@
"FNumber": "@KD_Flot"
},
"FRMREALQTY": @KD_FRMREALQTY,
"FREPLENISHQTY": @KD_FREPLENISHQTY,
"FKEAPAMTQTY": @KD_FKEAPAMTQTY,
"FREPLENISHQTY": @KD_FRMREALQTY,
"FKEAPAMTQTY": @KD_FRMREALQTY,
"FPRICEUNITID": {
"FNumber": "@KD_FPRICEUNITID"
},
@ -24,12 +24,12 @@
},
"FIsReceiveUpdateStock": false,
"FGiveAway": false,
"FPriceBaseQty": @KD_FPriceBaseQty,
"FPriceBaseQty": @KD_FRMREALQTY,
"FCarryUnitId": {
"FNumber": "@KD_FCarryUnitId"
},
"FCarryQty": @KD_FCarryQty,
"FCarryBaseQty": @KD_FCarryBaseQty,
"FCarryQty": @KD_FRMREALQTY,
"FCarryBaseQty": @KD_FRMREALQTY,
"FBILLINGCLOSE": false,
"FIsStock": false
}

14
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/purmrb/data_model.json

@ -10,30 +10,30 @@
"FNumber": "@KD_FStockOrgId"
},
"FRequireOrgId": {
"FNumber": "@KD_FRequireOrgId"
"FNumber": "@KD_FStockOrgId"
},
"FPurchaseOrgId": {
"FNumber": "@KD_FPurchaseOrgId"
"FNumber": "@KD_FStockOrgId"
},
"FSupplierID": {
"FNumber": "@KD_FSupplierID"
},
"FACCEPTORID": {
"FNumber": "@KD_FACCEPTORID"
"FNumber": "@KD_FSupplierID"
},
"FSettleId": {
"FNumber": "@KD_FSettleId"
"FNumber": "@KD_FSupplierID"
},
"FCHARGEID": {
"FNumber": "@KD_FCHARGEID"
"FNumber": "@KD_FSupplierID"
},
"FOwnerTypeIdHead": "BD_OwnerOrg",
"FOwnerIdHead": {
"FNumber": "@KD_FOwnerIdHead"
"FNumber": "@KD_FStockOrgId"
},
"FPURMRBFIN": {
"FSettleOrgId": {
"FNumber": "@KD_FSettleOrgId"
"FNumber": "@KD_FStockOrgId"
},
"FSettleCurrId": {
"FNumber": "PRE001"

2
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/saloutstock/data_model.json

@ -14,7 +14,7 @@
"FNumber": "@KD_FSaleDeptID"
},
"FStockOrgId": {
"FNumber": "@KD_FStockOrgId"
"FNumber": "@KD_FSaleOrgId"
},
"FReceiverID": {
"FNumber": "@KD_FCustomerID"

3
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stkinstock/data_FInStockEntry.json

@ -29,7 +29,8 @@
"FNumber": "@KD_FUnitID"
},
"FBILLINGCLOSE": false,
"FRemainInStockQty": @KD_FRemainInStockQty,
"FPriceUnitQty":@KD_FRealQty,
"FRemainInStockQty":@KD_FRealQty,
"FAPNotJoinQty": 1.0,
"FRemainInStockBaseQty": 1.0
}

6
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stkinstock/data_model.json

@ -5,7 +5,7 @@
},
"FDate": "@KD_FDate",
"FStockOrgId": {
"FNumber": "@KD_FStockOrgId"
"FNumber": "@KD_FPurchaseOrgId"
},
"FDemandOrgId": {
"FNumber": ""
@ -30,11 +30,11 @@
},
"FOwnerTypeIdHead": "BD_OwnerOrg",
"FOwnerIdHead": {
"FNumber": "@KD_FOwnerIdHead"
"FNumber": "@KD_FPurchaseOrgId"
},
"FInStockFin": {
"FSettleOrgId": {
"FNumber": "@KD_FSettleOrgId"
"FNumber": "@KD_FPurchaseOrgId"
},
"FSettleCurrId": {
"FNumber": "PRE001"

66
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/StkTransferDirectCastToKingDeeBillFields.java

@ -0,0 +1,66 @@
package com.yxt.anrui.fin.biz.kingdee.stktransferdirect;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.yxt.anrui.fin.biz.kingdee.KingDeeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 封装转换的类
*/
public class StkTransferDirectCastToKingDeeBillFields {
private static Logger log=LoggerFactory.getLogger(StkTransferDirectCastToKingDeeBillFields.class);
/**
* 构造金蝶需要的数据结构 并对字段赋值
*
* @param map_fEntityModel_
* @param vehicleList
* @return
*/
public static String getKingDeeData(Map<String,String> map_fEntityModel_,List<Map<String,String>> vehicleList){
/**
* 取模板
*/
String readJsonFile = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data.json");
String fEntityData_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_data.json");
String fEntityModel_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_model.json");
String fBillEntry_ = KingDeeUtils.readJsonFile("com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_FBillEntry.json");
log.info("readJsonFile:{}",readJsonFile);
log.info("fEntityData_:{}",fEntityData_);
log.info("fEntityModel_:{}",fEntityModel_);
log.info("FBillEntry_:{}",fBillEntry_);
//模板字符创转json
JSONObject jsonObj= JSONObject.parseObject(readJsonFile, Feature.OrderedField);
JSONObject jsonFEntityData_= JSONObject.parseObject(fEntityData_,Feature.OrderedField);
fEntityModel_ =KingDeeUtils.replaceTemplateParams(fEntityModel_, map_fEntityModel_);
JSONObject jsonFEntityModel_= JSONObject.parseObject(fEntityModel_,Feature.OrderedField);
List<JSONObject> list_fEntityDetail_=new ArrayList<>();
//对模板字段赋值 根据传递进来的map数据的集合进行赋值
for(int i=0;i<vehicleList.size();i++){
Map<String,String> params=vehicleList.get(i);
Map<String,String> map_fEntityDetail_=new HashMap<>();
for (Map.Entry<String, String> entry : params.entrySet()) {
map_fEntityDetail_.put(entry.getKey(),entry.getValue());
}
fBillEntry_ =KingDeeUtils.replaceTemplateParams(fBillEntry_, map_fEntityDetail_);
list_fEntityDetail_.add(JSONObject.parseObject(fBillEntry_,Feature.OrderedField));
}
jsonFEntityModel_.put("FBillEntry", JSONArray.parseArray(JSON.toJSONString(list_fEntityDetail_)));
jsonFEntityData_.put("Model",JSONObject.parseObject(JSON.toJSONString(jsonFEntityModel_),Feature.OrderedField));
jsonObj.put("data",jsonFEntityData_.toJSONString());
return jsonObj.toJSONString();
}
}

36
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/StkTransferDirectService.java

@ -0,0 +1,36 @@
package com.yxt.anrui.fin.biz.kingdee.stktransferdirect;
import com.yxt.anrui.fin.api.kingdee.KingDeeBillId;
import com.yxt.anrui.fin.api.kingdee.stktransferdirect.StkTransferDirect;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class StkTransferDirectService extends FinKingDeeService {
/**
* 保存采购入库单
* @param stkTransferDirect
* @return
*/
public ResultBean draftStkTransferDirect(StkTransferDirect stkTransferDirect) {
stkTransferDirect=StkTransferDirect.createStkTransferDirect();
ResultBean rb=ResultBean.fireFail();
try {
//业务表的主表数据集合
Map<String,String> map_fEntityModel_= object2Map(stkTransferDirect);
List<StkTransferDirect.FBillEntry> fBillEntry = stkTransferDirect.getFBillEntry();
//准备 物料列表的数据 ForEntryBill
List<Map<String, String>> vehicleListMap = createVehicleLists(fBillEntry);
String kingDeeData = StkTransferDirectCastToKingDeeBillFields.getKingDeeData(map_fEntityModel_,vehicleListMap);
return saveBill(KingDeeBillId.STK_TRANSFERDIRECT.getID(),kingDeeData);
} catch (Exception e) {
e.printStackTrace();
}
return rb;
}
}

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data.json

@ -0,0 +1,4 @@
{
"formId": "STK_TransferDirect",
"data": "@KD_data"
}

58
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_FBillEntry.json

@ -0,0 +1,58 @@
{
"FMaterialId": {
"FNumber": "@KD_FMaterialId"
},
"FUnitID": {
"FNumber": "@KD_FUnitID"
},
"FDestLot":{
"FNumber": "@KD_FDestLot"
},
"FLot": {
"FNumber": "@KD_Flot"
},
"FQty": 1.0,
"FSrcStockId": {
"FNumber": "@KD_FSrcStockId"
},
"FDestStockId": {
"FNumber": "@KD_FDestStockId"
},
"FSrcStockStatusId": {
"FNumber": "@KD_FSrcStockStatusId"
},
"FDestStockStatusId": {
"FNumber": "@KD_FDestStockStatusId"
},
"FBusinessDate": "2022-08-31 00:00:00",
"FOwnerTypeOutId": "@KD_FOwnerTypeOutId",
"FOwnerOutId": {
"FNumber": "@KD_FOwnerOutId"
},
"FOwnerTypeId": "@KD_FOwnerTypeId",
"FOwnerId": {
"FNumber": "@KD_FOwnerId"
},
"FBaseUnitId": {
"FNumber": "@KD_FBaseUnitId"
},
"FBaseQty": 1.0,
"FISFREE": false,
"FKeeperTypeId": "@KD_FKeeperTypeId",
"FKeeperId": {
"FNumber": "@KD_FKeeperId"
},
"FKeeperTypeOutId": "@KD_FKeeperTypeOutId",
"FKeeperOutId": {
"FNumber": "@KD_FKeeperOutId"
},
"FDestMaterialId": {
"FNUMBER": " JX091054"
},
"FPriceUnitID": {
"FNumber": "liang"
},
"FPriceQty": 1.0,
"FPriceBaseQty": 1.0,
"FTransReserveLink": false
}

13
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_data.json

@ -0,0 +1,13 @@
{
"Creator": "",
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "True",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "True",
"ValidateFlag": "True",
"NumberSearch": "True",
"InterationFlags": "",
"Model":{}
}

42
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/data_model.json

@ -0,0 +1,42 @@
{
"FID": 0,
"FBillTypeID": {
"FNUMBER": "@KD_FBillTypeID"
},
"FBizType": "NORMAL",
"FTransferDirect": "@KD_FTransferDirect",
"FTransferBizType": "@KD_FTransferBizType",
"FSettleOrgId": {
"FNumber": "101"
},
"FSaleOrgId": {
"FNumber": "101"
},
"FStockOutOrgId": {
"FNumber": "@KD_FStockOutOrgId"
},
"FOwnerTypeOutIdHead": "@KD_FOwnerTypeOutIdHead",
"FOwnerOutIdHead": {
"FNumber": "101"
},
"FStockOrgId": {
"FNumber": "@KD_FStockOrgId"
},
"FIsIncludedTax": true,
"FIsPriceExcludeTax": true,
"FOwnerTypeIdHead": "@KD_FOwnerTypeIdHead",
"FSETTLECURRID": {
"FNUMBER": "PRE001"
},
"FOwnerIdHead": {
"FNumber": "101"
},
"FDate": "2022-08-31 00:00:00",
"FBaseCurrId": {
"FNumber": "PRE001"
},
"FCustID": {
"FNUMBER": "GYRHHR002529"
},
"FBillEntry": []
}

175
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/remarks.txt

@ -0,0 +1,175 @@
一、请求参数说明:
1.formid:业务对象表单Id,字符串类型(必录)
2.data:Json格式数据(详情参考Json格式数据)(必录)
2.1.Creator:创建者内码(非必录)
2.2.NeedUpDateFields:需要更新的字段,数组类型,格式:[key1,key2,...](非必录),注(更新单据体字段得加上单据体key)
2.3.NeedReturnFields:需返回结果的字段集合,数组类型,格式:[key,entitykey.key,...](非必录),注(返回单据体字段格式:entitykey.key)
2.4.IsDeleteEntry:是否删除已存在的分录,布尔类型,默认true(非必录)
2.5.SubSystemId:表单所在的子系统内码,字符串类型(非必录)
2.6.IsVerifyBaseDataField:是否验证所有的基础资料有效性,布尔类,默认false(非必录)
2.7.IsEntryBatchFill:是否批量填充分录,默认true(非必录)
2.8.ValidateFlag:是否验证标志,布尔类型,默认true(非必录)
2.9.NumberSearch:是否用编码搜索基础资料,布尔类型,默认true(非必录)
2.10.InterationFlags:交互标志集合,字符串类型,分号分隔,格式:"flag1;flag2;..."(非必录),例如(允许负库存标识:STK_InvCheckResult)
2.11.Model:表单数据包,Json类型(必录)
五、字段说明:
序列号单位:FSNUnitID
订单类别:FORDERTYPE
关联出库数量(基本单位):FBASEOUTJOINQTY
到货确认:FArrivalStatus
入库日期:FBusinessDate
序列号单位数量:FSNQty
备注:FNoteEntry
调入库存更新标识:FStockInFlag
调出库存更新标识:FStockOutFlag
关联出库数量:FOutJoinQty
业务流程:FBFLowId
源单编号:FSrcBillNo
到货确认人:FArrivalConfirmor
金额:FConsignAmount
税率%:FTaxRate
含税单价:FTaxPrice
折扣额:FDiscount
价税合计:FAllAmount
税额:FTaxAmount
补货数量:FRepairQty
拒收数量:FRefuseQty
到货日期:FArrivalDate
单价:FConsignPrice
实收数量:FActQty
是否补货:FIsRepair
库存辅单位:FSecUnitId
调入库存状态:FDestStockStatusId (必填项)
调出库存状态:FSrcStockStatusId (必填项)
调拨数量(基本单位):FBaseQty
基本单位:FBaseUnitId (必填项)
调拨数量(库存辅单位):FSecQty
生产日期:FProduceDate
辅助属性:FAuxPropId
BOM版本:FBomId
项目编号:FProjectNo
计划跟踪号:FMtoNo
有效期至:FExpiryDate
调入货主类型:FOwnerTypeId (必填项)
源单行号:FSrcSeq
源单类型:FSrcBillTypeId
调出保管者:FKeeperOutId (必填项)
关联退回数量(基本单位):FBaseJoinQty
关联退回数量:FReceiveQty
订单编号:FOrderNo
调出货主:FOwnerOutId (必填项)
调出货主类型:FOwnerTypeOutId (必填项)
调入货主:FOwnerId (必填项)
调出保管者类型:FKeeperTypeOutId (必填项)
调入保管者:FKeeperId (必填项)
调入保管者类型:FKeeperTypeId (必填项)
净价:FTaxNetPrice
服务上下文:FServiceContext
结算关联数量(销售基本单位):FJoinSaleBaseSettQty
出库关联数量(销售基本单位):FSalBaseOutJoinQty
计价基本数量:FPriceBaseQty
计价数量:FPriceQty
计价单位:FPriceUnitID
携带源单主业务单位:FSrcBizUnitId
销售基本单位退货关联数量:FSalBaseJoinQty
普通调拨源单类型:FGenSrcBillFormId
源单辅单位基本数量:FSrcAuxBaseQty
源单主单位基本数量:FSrcBizBaseQty
携带源单辅单位:FSrcAuxUnitId
销售基本单位数量旧值:FSalBaseQtyUp
转移预留关系:FTransReserveLink
赠品:FISFREE
第三方源单分录编码:FThirdSrcEntryId
备注:FSerialNote
序列号:FSerialId
序列号:FSerialNo
质量类型:FDeliChkQualifyType
通知单编号:FNoticeNo
基本单位数量旧值:FBaseQtyUp
销售订单EntryId:FSOEntryId
库存状态转换EntryId:FConvertEntryId
库存请检单EntryId:FQmEntryId
拒收标志:FRefuseFlag
退货备注:FRETURNNOTE
折扣率%:FDiscountRate
结算关联数量(辅单位):FJOINSECSETTQTY
保质期:FExpPeriod
保质期单位:FExpUnit
结算关联数量:FJoinSettleQty
客户物料名称:FCustMatName
客户物料编码:FCustMatId
未结算关联数量(基本单位):FJoinBaseUnSettQty
未结算关联数量:FJoinUnSettleQty
结算关联数量(基本单位):FJoinBaseSettQty
出库关联数量(辅单位):FSECOUTJOINQTY
捡货结果标记:FLotPickFlag
调拨数量(辅单位):FExtAuxUnitQty
辅单位:FExtAuxUnitId
销售数量:FSaleQty
销售基本数量:FSalBaseQty
销售单位:FSaleUnitId
结算可退数量(基本单位):FBaseSettCanRetQty
调入批号:FDestLot
退货关联数量(辅单位):FSECJOINQTY
消耗汇总:FIsConsumeSum
调入BOM:FDestBomId
调入物料:FDestMaterialId
总成本:FAmount
调出库存组织:FStockOutOrgId (必填项)
调拨类型:FTransferBizType (必填项)
调入货主:FOwnerIdHead
调拨方向:FTransferDirect (必填项)
调出货主:FOwnerOutIdHead
调出货主类型:FOwnerTypeOutIdHead (必填项)
调入库存组织:FStockOrgId (必填项)
单据状态:FDocumentStatus
单据编号:FBillNo
调入货主类型:FOwnerTypeIdHead (必填项)
单据类型:FBillTypeID (必填项)
日期:FDate (必填项)
创建人:FCreatorId
仓管员:FStockerId
作废状态:FCancelStatus
作废人:FCancellerId
备注:FNote
本位币:FBaseCurrId
库存组:FStockerGroupId
最后修改日期:FModifyDate
最后修改人:FModifierId
创建日期:FCreateDate
作废日期:FCancelDate
审核日期:FApproveDate
审核人:FApproverId
业务类型:FBizType
第三方源单编码:FThirdSrcBillNo
第三方源单内码:FThirdSrcId
价外税:FIsPriceExcludeTax
序列号上传:FScanBox
对应供应商:FSUPPLIERID
对应客户:FCustID
组织间结算跨法人标识:FIsInterLegalPerson
第三方系统:FThirdSystem
调入仓位:FDestStockLocId
调入仓库:FDestStockId (必填项)
调出仓位:FSrcStockLocId
成本价:FPrice
调拨数量:FQty
单位:FUnitID (必填项)
物料名称:FMaterialName
物料编码:FMaterialId (必填项)
调出仓库:FSrcStockId (必填项)
调出批号:FLot
规格型号:FModel
结算组织:FSettleOrgId
销售组织:FSaleOrgId
结算币别:FSETTLECURRID
汇率:FExchangeRate
跨组织业务类型:FTransferBizTypeId
是否含税:FIsIncludedTax
收款条件:FRecConditionId
结算方式:FSettleModeId
汇率类型:FExchangeTypeId
销售员:FSalerId
销售组:FSaleGroupId
销售部门:FSaleDeptId

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/webapi测试的数据.txt

@ -0,0 +1,5 @@
{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FID\":0,\"FBillTypeID\":{\"FNUMBER\":\"ZJDB01_SYS\"},\"FBizType\":\"NORMAL\",\"FTransferDirect\":\"GENERAL\",\"FTransferBizType\":\"InnerOrgTransfer\",\"FSettleOrgId\":{\"FNumber\":\"101\"},\"FSaleOrgId\":{\"FNumber\":\"101\"},\"FStockOutOrgId\":{\"FNumber\":\"101\"},\"FOwnerTypeOutIdHead\":\"BD_OwnerOrg\",\"FOwnerOutIdHead\":{\"FNumber\":\"101\"},\"FStockOrgId\":{\"FNumber\":\"101\"},\"FIsIncludedTax\":true,\"FIsPriceExcludeTax\":true,\"FOwnerTypeIdHead\":\"BD_OwnerOrg\",\"FSETTLECURRID\":{\"FNUMBER\":\"PRE001\"},\"FOwnerIdHead\":{\"FNumber\":\"101\"},\"FDate\":\"2022-08-31 00:00:00\",\"FBaseCurrId\":{\"FNumber\":\"PRE001\"},\"FCustID\":{\"FNUMBER\":\"GYRHHR002529\"},\"FBillEntry\":[{\"FMaterialId\":{\"FNumber\":\" JX091054\"},\"FUnitID\":{\"FNumber\":\"liang\"},\"FQty\":1.0,\"FSrcStockId\":{\"FNumber\":\"CK001\"},\"FDestStockId\":{\"FNumber\":\"CK002\"},\"FSrcStockStatusId\":{\"FNumber\":\"KCZT01_SYS\"},\"FDestStockStatusId\":{\"FNumber\":\"KCZT01_SYS\"},\"FBusinessDate\":\"2022-08-31 00:00:00\",\"FOwnerTypeOutId\":\"BD_OwnerOrg\",\"FOwnerOutId\":{\"FNumber\":\"101\"},\"FOwnerTypeId\":\"BD_OwnerOrg\",\"FOwnerId\":{\"FNumber\":\"101\"},\"FBaseUnitId\":{\"FNumber\":\"liang\"},\"FBaseQty\":1.0,\"FISFREE\":false,\"FKeeperTypeId\":\"BD_KeeperOrg\",\"FKeeperId\":{\"FNumber\":\"101\"},\"FKeeperTypeOutId\":\"BD_KeeperOrg\",\"FKeeperOutId\":{\"FNumber\":\"101\"},\"FDestMaterialId\":{\"FNUMBER\":\" JX091054\"},\"FPriceUnitID\":{\"FNumber\":\"liang\"},\"FPriceQty\":1.0,\"FPriceBaseQty\":1.0,\"FTransReserveLink\":false}]}}
{"formId":"STK_TransferDirect","data":"{\"Creator\":\"\",\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"True\",\"SubSystemId\":\"\",\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"True\",\"ValidateFlag\":\"True\",\"NumberSearch\":\"True\",\"InterationFlags\":\"\",\"Model\":{\"FID\":0,\"FBillTypeID\":{\"FNUMBER\":\"ZJDB01_SYS\"},\"FBizType\":\"NORMAL\",\"FTransferDirect\":\"GENERAL\",\"FTransferBizType\":\"InnerOrgTransfer\",\"FSettleOrgId\":{\"FNumber\":\"101\"},\"FSaleOrgId\":{\"FNumber\":\"101\"},\"FStockOutOrgId\":{\"FNumber\":\"101\"},\"FOwnerTypeOutIdHead\":\"BD_OwnerOrg\",\"FOwnerOutIdHead\":{\"FNumber\":\"101\"},\"FStockOrgId\":{\"FNumber\":\"101\"},\"FIsIncludedTax\":true,\"FIsPriceExcludeTax\":true,\"FOwnerTypeIdHead\":\"BD_OwnerOrg\",\"FSETTLECURRID\":{\"FNUMBER\":\"PRE001\"},\"FOwnerIdHead\":{\"FNumber\":\"101\"},\"FDate\":\"2022-08-31 00:00:00\",\"FBaseCurrId\":{\"FNumber\":\"PRE001\"},\"FCustID\":{\"FNUMBER\":\"GYRHHR002529\"},\"FBillEntry\":[{\"FOwnerTypeOutId\":\"BD_OwnerOrg\",\"FDestStockStatusId\":{\"FNumber\":\"KCZT01_SYS\"},\"FPriceBaseQty\":1.0,\"FBaseQty\":1.0,\"FBusinessDate\":\"2022-08-31 00:00:00\",\"FLot\":{\"FNumber\":\"@KD_Flot\"},\"FOwnerOutId\":{\"FNumber\":\"101\"},\"FSrcStockStatusId\":{\"FNumber\":\"KCZT01_SYS\"},\"FDestStockId\":{\"FNumber\":\"CK002\"},\"FMaterialId\":{\"FNumber\":\" JX091054\"},\"FOwnerTypeId\":\"BD_OwnerOrg\",\"FDestMaterialId\":{\"FNUMBER\":\" JX091054\"},\"FOwnerId\":{\"FNumber\":\"101\"},\"FISFREE\":false,\"FKeeperId\":{\"FNumber\":\"101\"},\"FPriceUnitID\":{\"FNumber\":\"liang\"},\"FKeeperOutId\":{\"FNumber\":\"101\"},\"FQty\":1.0,\"FDestLot\":{\"FNumber\":\"1234567890\"},\"FBaseUnitId\":{\"FNumber\":\"liang\"},\"FKeeperTypeId\":\"BD_KeeperOrg\",\"FTransReserveLink\":false,\"FUnitID\":{\"FNumber\":\"liang\"},\"FPriceQty\":1.0,\"FSrcStockId\":{\"FNumber\":\"CK001\"},\"FKeeperTypeOutId\":\"BD_KeeperOrg\"}]}}"}

BIN
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/stktransferdirect/直接调拨单的参数必填备注.xlsx

Binary file not shown.

9
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flowtask/TaskUserInfo.java

@ -3,6 +3,15 @@ package com.yxt.anrui.flowable.api.flowtask;
public class TaskUserInfo {
private String assigneeName;
private String assigneeHeadImage;
private String assigneeSid;
public String getAssigneeSid() {
return assigneeSid;
}
public void setAssigneeSid(String assigneeSid) {
this.assigneeSid = assigneeSid;
}
public String getAssigneeName() {
return assigneeName;

1
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -31,6 +31,7 @@ public enum ProcDefEnum {
BASESHUNINVOICAPPLY("调车开票申请","process_u4xrvaso:1:400008"),
BASEVEHINSTALLMODPRICE("上装调价申请","process_s0a0svth:1:492508"),
SCMVEHREBATEWITHAPPLY("单车返利预提申请","process_qegarc7r:1:535004"),
CONTRACTAPPLY("合同审核","process_gd8c9xd5:1:545008"),
;
ProcDefEnum(String proDefName, String proDefId) {

70
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -28,13 +28,14 @@ package com.yxt.anrui.flowable.biz.flow;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yxt.anrui.flowable.api.flow.*;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.api.flowtask.FlowRecordVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService;
import com.yxt.anrui.flowable.biz.process.ProcessService;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserQuery;
@ -43,6 +44,9 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.flowable.bpmn.model.ExtensionAttribute;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.bpmn.model.UserTask;
import org.flowable.engine.TaskService;
import org.flowable.task.api.DelegationState;
import org.flowable.task.api.Task;
@ -52,10 +56,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
* Project: anrui-parent <br/>
@ -83,10 +84,8 @@ public class FlowableRest implements FlowableFeign {
private SysUserFeign sysUserFeign;
@Resource
protected TaskService taskService;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Resource
private ProcessService processService;
@Override
public ResultBean businessStart(BusinessVariables bv) {
return flowableService.businessStart( bv);
@ -221,9 +220,19 @@ public class FlowableRest implements FlowableFeign {
Logger log= LoggerFactory.getLogger(FlowableRest.class);
@Override
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables dto) {
return handleProsess(dto,true);
}
/**
*
* @param dto
* @param b 是否连续跳转环节
* @return
*/
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables dto,boolean b) {
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
ResultBean rb = ResultBean.fireFail();
// Map<String, Object> formVariables = dto.getFormVariables();
// Map<String, Object> formVariables = dto.getFormVariables();
String taskId = dto.getTaskId();
if (StringUtils.isBlank(taskId)) {
@ -271,7 +280,7 @@ public class FlowableRest implements FlowableFeign {
return rb.setMsg("任务不存在");
}
String assignee = task.getAssignee();
if(StringUtils.isNotBlank(assignee)&& assignee.indexOf(userSid)<0){
if(b&&(StringUtils.isNotBlank(assignee)&& assignee.indexOf(userSid)<0)){
return rb.setMsg("当前用户不是环节的待办人,不能进行办理操作!");
}
String nodeState = "";
@ -309,6 +318,42 @@ public class FlowableRest implements FlowableFeign {
vo.setNodeState(FlowComment.SETTLE.getRemark());
}
}
//ResultBean<FlowRecordVo> flowRecordVoResultBean = flowableService.flowRecord(dto.getInstanceId(), dto.getModelId());
List<FlowElement> flowElements = processService.calApprovePath(dto.getModelId(), dto.getModelId(),
dto.getFormVariables());
boolean contains=false;
for(int i=0;i<flowElements.size();i++){
FlowElement flowElement = flowElements.get(i);
String id = flowElement.getId();
if(taskDefKey.equals(id)&&i+1<flowElements.size()){
FlowElement flowElement1 = flowElements.get(i + 1);
if(flowElement1 instanceof UserTask){
UserTask userTask=(UserTask)flowElement1;
List<String> candidateGroups = userTask.getCandidateGroups();
List<SysUserVo> sysUserVoLists=new ArrayList<>();
for(String roleSid:candidateGroups){
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
userQuery.setOrgSidPath(dto.getOrgSidPath());
List<SysUserVo> sysUserVos = sysUserFeign.getUserByRole(userQuery).getData();
sysUserVoLists.addAll(sysUserVos);
}
if(sysUserVoLists.size()==1&&sysUserVoLists.get(0).getSid().equals(nextUserSid)){
contains=true;
break;
}
}
}
if(contains){
break;
}
}
if(contains){
dto.setUserSid(nextUserSid);
dto.setTaskId(vo.getTaskId());
dto.setTaskDefKey(taskDefKey);
return handleProsess(dto,false);
}
vo.setProcInsId(instanceId);
vo.setProcDefId(task.getProcessDefinitionId());
vo.setNodeState(nodeState);
@ -316,7 +361,6 @@ public class FlowableRest implements FlowableFeign {
vo.setNextNodeUserSids(nextUserSid);
return rb.success().setData(vo);
}
@Override
public ResultBean<UpdateFlowFieldVo> revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl) {
ResultBean rb = ResultBean.fireFail();

155
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -10,6 +10,7 @@ import com.yxt.anrui.flowable.api.flowcomment.FlowCommentDto;
import com.yxt.anrui.flowable.api.flowtask.*;
import com.yxt.anrui.flowable.api.sysform.SysForm;
import com.yxt.anrui.flowable.api.sysprourl.SysProUrlVo;
import com.yxt.anrui.flowable.biz.flow.FlowableService;
import com.yxt.anrui.flowable.biz.process.ProcessService;
import com.yxt.anrui.flowable.biz.sysdeployform.SysDeployFormService;
import com.yxt.anrui.flowable.biz.sysprourl.SysProUrlService;
@ -110,7 +111,8 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
private SysStaffOrgFeign sysStaffOrgFeign;
@Resource
private SysOrganizationFeign sysOrganizationFeign;
@Resource
private FlowableService flowableService;
public ResultBean getProcessCirculationNodesByMap(BusinessVariables bv) {
String modelId = null;
if (bv.getModelId()!= null) {
@ -272,6 +274,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
for( SysUserVo data:data1){
TaskUserInfo taskUserInfo=new TaskUserInfo();
taskUserInfo.setAssigneeName(data.getName());
taskUserInfo.setAssigneeSid(data.getSid());
if(!StringUtils.isBlank(data.getHeadImage())){
taskUserInfo.setAssigneeHeadImage(fileUploadComponent.getUrlPrefix() +data.getHeadImage());
}
@ -1113,6 +1116,14 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
* @param flowTaskVo
*/
public ResultBean<List<LatestTaskVo>> taskReject(FlowTaskVo flowTaskVo) {
return taskReject_(flowTaskVo,false);
}
/**
* 驳回任务
*
* @param flowTaskVo
*/
public ResultBean<List<LatestTaskVo>> taskReject_(FlowTaskVo flowTaskVo,boolean b) {
// 当前任务 task
Task task = taskService.createTaskQuery().taskId(flowTaskVo.getTaskId()).singleResult();
if (task.isSuspended()) {
@ -1230,18 +1241,38 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}
// 最近环节
parentUserTaskList.forEach(item -> {
Map<String, Object> map2 = flowTaskMapper.getTaskByDefKey(task.getProcessInstanceId(), targetIds.get(0));
Map<String, Object> map = flowTaskMapper.getHistTaskByID(task.getProcessInstanceId(), targetIds.get(0));
String assignee_ =item.getAssignee();
if(map.get("ASSIGNEE_")!=null){
assignee_ = map.get("ASSIGNEE_").toString();
}
// String assignee_ = map.get("ASSIGNEE_").toString();
String id_ = map2.get("id_").toString();
/* List<FlowElement> flowElements = processService.calApprovePath(flowTaskVo.getInstanceId(), flowTaskVo.getInstanceId(),
flowTaskVo.getValues());
for(int i=0;i<flowElements.size();i++){
FlowElement flowElement = flowElements.get(i);
System.out.println(flowElement.getId());
}*/
ResultBean<List<LatestTaskVo>> listResultBean_2=null;
if(flowTaskVo.getUserSid().equals(assignee_)){
flowTaskVo.setTaskId(id_);
flowTaskVo.setUserSid(assignee_);
flowTaskVo.setTargetKey(item.getId());
listResultBean_2= taskReject_(flowTaskVo, true);
}else{taskService.setAssignee(id_, assignee_);}
LatestTaskVo latestTaskVo = new LatestTaskVo();
latestTaskVo.setASSIGNEE_(item.getAssignee());
// latestTaskVo.setId_(item.getId());
Map<String, Object> map = flowTaskMapper.getHistTaskByID(task.getProcessInstanceId(), targetIds.get(0));
Map<String, Object> map2 = flowTaskMapper.getTaskByDefKey(task.getProcessInstanceId(), targetIds.get(0));
String id_ = map2.get("id_").toString();
latestTaskVo.setId_(id_);
String assignee_ = map.get("ASSIGNEE_").toString();
taskService.setAssignee(id_, assignee_);
latestTaskVo.setName_(item.getName());
latestTaskVo.setTask_def_key_(item.getId());
latestTaskVo.setIncomingSourceRef(item.getIncomingFlows().get(0).getSourceRef());
latestTaskVo.setId_(listResultBean_2!=null?listResultBean_2.getData().get(0).getId_():id_);
if(b){
taskService.setAssignee(id_, assignee_);
}
latestTaskVo.setName_(listResultBean_2!=null?listResultBean_2.getData().get(0).getName_():item.getName());
latestTaskVo.setTask_def_key_(listResultBean_2!=null?listResultBean_2.getData().get(0).getTask_def_key_():item.getId());
latestTaskVo.setIncomingSourceRef(listResultBean_2!=null?listResultBean_2.getData().get(0).getIncomingSourceRef():item.getIncomingFlows().get(0).getSourceRef());
latestTaskList.add(latestTaskVo);
});
} catch (FlowableObjectNotFoundException e) {
@ -1335,13 +1366,11 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}
return historicActivityInstance.getTaskId();
}
// @Transactional(rollbackFor = Exception.class)
public ResultBean<List<LatestTaskVo>> revokeProcess(FlowTaskVo flowTaskVo) {
public ResultBean<List<LatestTaskVo>> revokeProcess(FlowTaskVo flowTaskVo,int j) {
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(flowTaskVo.getTaskId()).singleResult();
Execution execution = runtimeService.createExecutionQuery().executionId(historicTaskInstance.getExecutionId()).singleResult();
DelegateExecution delegateExecution = (DelegateExecution) execution;
if(delegateExecution==null){
if (delegateExecution == null) {
return new ResultBean<List<LatestTaskVo>>().fail().setMsg("流程已办结,不能撤回!").setData(new ArrayList<>());
}
// 获取当前节点的activityId,即xml中每个标签的ID
@ -1350,21 +1379,86 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
// taskService.addComment(currentTask.getId(), execution.getProcessInstanceId(), body.get("msg").toString());
// FlowNode flowNode2 = (FlowNode)bpmnModel.getFlowElement(sourceRef);
String taskId = getTaskId(currentActivityId, historicTaskInstance.getProcessInstanceId(), historicTaskInstance.getProcessDefinitionId());
if(StringUtils.isBlank(taskId)){
if (StringUtils.isBlank(taskId)) {
return new ResultBean<List<LatestTaskVo>>().fail().setMsg("流程找不到上一环节,撤回操作失败!").setData(new ArrayList<>());
}
HistoricTaskInstance historicTaskInstance1 = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult();
String assignee = historicTaskInstance1.getAssignee();
String userSid = flowTaskVo.getUserSid();
if (!assignee.equals(userSid)) {
ResultBean<FlowRecordVo> flowRecordVoResultBean = flowableService.flowRecord(flowTaskVo.getInstanceId(), flowTaskVo.getInstanceId());
List<FlowTask> flowList = flowRecordVoResultBean.getData().getFlowList();
String ybrsid="";
int ii=0;
FlowTask flowTask_1 = flowList.get(j+1);
List<TaskUserInfo> taskUserInfos_1 = flowTask_1.getTaskUserInfos();
TaskUserInfo taskUserInfo_1 = taskUserInfos_1.get(0);
FlowTask flowTask_0 = flowList.get(j);
List<TaskUserInfo> taskUserInfos_0 = flowTask_0.getTaskUserInfos();
TaskUserInfo taskUserInfo_0 = taskUserInfos_0.get(0);
String assigneeSid1 = taskUserInfo_1.getAssigneeSid();
String assigneeSid0 = taskUserInfo_0.getAssigneeSid();
/* if(assigneeSid1.equals(assigneeSid0)){
ii=1;
ybrsid=userSid;
}else{
ybrsid=assigneeSid1;
}*/
if(!assigneeSid1.equals(assigneeSid0)){
ybrsid=assignee;
}else{
for(int i=1;i<flowList.size();i++){
FlowTask flowTask = flowList.get(i);
List<TaskUserInfo> taskUserInfos = flowTask.getTaskUserInfos();
TaskUserInfo taskUserInfo = taskUserInfos.get(0);
if(assigneeSid0.equals(taskUserInfo.getAssigneeSid())){
ii++;
continue;
}else{
ybrsid=flowList.get(i).getTaskUserInfos().get(0).getAssigneeSid();
break;
}
}
}
if (!ybrsid.equals(userSid)) {
return new ResultBean<List<LatestTaskVo>>().fail().setMsg("您不是上一环节处理人,不能进行撤回操作!").setData(new ArrayList<>());
} else {
ResultBean<List<LatestTaskVo>> listResultBean = null;
for(int i=0;i<=ii;i++){
listResultBean = revokeProcess_(historicTaskInstance.getProcessInstanceId(),userSid);
}
return listResultBean;
}
}
public ResultBean<List<LatestTaskVo>> revokeProcess(FlowTaskVo flowTaskVo) {
return revokeProcess(flowTaskVo,0);
}
/* private ResultBean<List<LatestTaskVo>> getListResultBean(FlowTaskVo flowTaskVo, String assignee, ResultBean<List<LatestTaskVo>> listResultBean) {
List<LatestTaskVo> data = listResultBean.getData();
LatestTaskVo latestTaskVo = data.get(0);
flowTaskVo.setTaskId(latestTaskVo.getId_());
flowTaskVo.setUserSid(assignee);
// ResultBean<List<LatestTaskVo>> listResultBean1 = revokeProcess(flowTaskVo);
LatestTaskVo latestTaskVo2 = data.get(0);
String assignee_ = latestTaskVo2.getASSIGNEE_();
if(!assignee_.equals(assignee)){
return getListResultBean(flowTaskVo, assignee, listResultBean);
}
return listResultBean1;
}*/
// @Transactional(rollbackFor = Exception.class)
private ResultBean<List<LatestTaskVo>> revokeProcess_( String processInstanceId,
String assignee ) {
// 流程回退到上一个节点,审批人继续审批
/* runtimeService.createChangeActivityStateBuilder().processInstanceId(historicTaskInstance.getProcessInstanceId())
.moveActivityIdTo(currentActivityId,sourceRef).changeState();
*/
// 获取流程定义信息
String processInstanceId = historicTaskInstance.getProcessInstanceId();
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
ProcessDefinition processDefinition = repositoryService
.createProcessDefinitionQuery()
@ -1395,7 +1489,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}
// 如果流程已经结束,则得到结束节点
if (historyService.createHistoricProcessInstanceQuery().finished()
.processInstanceId(task.getProcessInstanceId()).count() > 0) {
.processInstanceId(processInstanceId).count() > 0) {
return new ResultBean<List<LatestTaskVo>>().fail().setMsg("当前已经结束不能撤回").setData(new ArrayList<>());
}
// 获取活动 ID 即节点 Key
@ -1403,7 +1497,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
parentUserTaskList.forEach(item -> parentUserTaskKeyList.add(item.getId()));
// 获取全部历史节点活动实例,即已经走过的节点历史,数据采用开始时间升序
List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.processInstanceId(processInstanceId)
.orderByHistoricTaskInstanceStartTime().asc().list();
// 数据清洗,将回滚导致的脏数据清洗掉
List<String> lastHistoricTaskInstanceList = FlowableUtils.historicTaskInstanceClean(allElements, historicTaskInstanceList);
@ -1437,7 +1531,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
UserTask oneUserTask = parentUserTaskList.get(0);
// 获取所有正常进行的任务节点 Key,这些任务不能直接使用,需要找出其中需要撤回的任务
List<Task> runTaskList = taskService.createTaskQuery()
.processInstanceId(task.getProcessInstanceId()).list();
.processInstanceId(processInstanceId).list();
List<String> runTaskKeyList = new ArrayList<>();
runTaskList.forEach(item -> runTaskKeyList.add(item.getTaskDefinitionKey()));
// 需驳回任务列表
@ -1459,10 +1553,14 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}));
// 设置撤回意见
currentTaskIds.forEach(item -> {
taskService.addComment(item, historicTaskInstance.getProcessInstanceId(),
taskService.addComment(item, processInstanceId,
FlowComment.RECALL.getType(), "撤回办理");
// 设置实际办理人
taskService.setAssignee(item, userSid);
/* if(assignee.equals("0d8d8119-d476-47ce-89c2-075cd809dda6")){
taskService.setAssignee(item, assignee);
}else{*/
taskService.setAssignee(item, assignee);
/* }*/
});
// 最近环节
@ -1472,14 +1570,14 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
if (targetIds.size() > 1) {
// 1 对 多任务跳转,currentIds 当前节点(1),targetIds 跳转到的节点(多)
runtimeService.createChangeActivityStateBuilder()
.processInstanceId(task.getProcessInstanceId()).
.processInstanceId(processInstanceId).
moveSingleActivityIdToActivityIds(currentIds.get(0), targetIds).changeState();
}
// 如果父级任务只有一个,因此当前任务可能为网关中的任务
if (targetIds.size() == 1) {
// 1 对 1 或 多 对 1 情况,currentIds 当前要跳转的节点列表(1或多),targetIds.get(0) 跳转到的节点(1)
runtimeService.createChangeActivityStateBuilder()
.processInstanceId(task.getProcessInstanceId())
.processInstanceId(processInstanceId)
.moveActivityIdsToSingleActivityId(currentIds, targetIds.get(0)).changeState();
}
// 最近环节
@ -1491,8 +1589,13 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
latestTaskVo.setTask_def_key_(item.getId());
latestTaskVo.setIncomingSourceRef(item.getIncomingFlows().get(0).getSourceRef());
Map<String, Object> task_map = flowTaskMapper.getTaskByDefKey(historicTaskInstance.getProcessInstanceId(), item.getId());
taskService.setAssignee(task_map.get("id_").toString(), userSid);
Map<String, Object> task_map = flowTaskMapper.getTaskByDefKey(processInstanceId, item.getId());
/* if(assignee.equals("0d8d8119-d476-47ce-89c2-075cd809dda6")){
taskService.setAssignee(task_map.get("id_").toString(), assignee);
}else{*/
taskService.setAssignee(task_map.get("id_").toString(), assignee);
/* }*/
latestTaskVo.setId_(task_map.get("id_").toString());
latestTaskList.add(latestTaskVo);
});

2
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmvehiclereturn/ScmVehicleReturn.java

@ -35,4 +35,6 @@ public class ScmVehicleReturn extends BaseEntity {
@ApiModelProperty("流程实例id")
private String instanceId;
private String procDefId;
}

29
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java

@ -524,23 +524,23 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
private StkInStock createStkInStock(ScmApplyInbound scmApplyInbound, List<ScmApplyInboundVehicleDto> scmApplyInboundVehicleDtos) {
StkInStock stkInStock=new StkInStock();
try {
stkInStock.setFPurchaseOrgId("101");
stkInStock.setFStockOrgId("101");
stkInStock.setFPurchaseDeptId("05.04");
stkInStock.setFSupplierId("010001");
stkInStock.setFPurchaseOrgId("101");//采购组织
// stkInStock.setFStockOrgId("101");// 收料组织
stkInStock.setFPurchaseDeptId("05.04");// 采购部门
stkInStock.setFSupplierId("010001");// 供应商
stkInStock.setFDate(scmApplyInbound.getApplicationDate());
stkInStock.setFOwnerIdHead("101");
stkInStock.setFSettleOrgId("101");
// stkInStock.setFOwnerIdHead("101");// 货主
// stkInStock.setFSettleOrgId("101"); // 结算组织
List<StkInStock.FInStockEntry> FInStockEntry=new ArrayList<>();
for(ScmApplyInboundVehicleDto s:scmApplyInboundVehicleDtos){
StkInStock.FInStockEntry fise=new StkInStock.FInStockEntry();
fise.setFMaterialId(s.getVinNo());
fise.setFRealQty(1.0);
fise.setFPriceUnitQty("1");
fise.setFRemainInStockQty(1.0);
fise.setFLot("1234567890");
fise.setFStockId("CK001");
fise.setFUnitID("liang");
fise.setFMaterialId(s.getVinNo());// 物料编码
fise.setFRealQty(1.0);// 实收数量
//fise.setFPriceUnitQty("1");// 计价数量
//fise.setFRemainInStockQty(1.0);// 采购数量
fise.setFLot("1234567890");// 批号
fise.setFStockId("CK001");// 仓库
//fise.setFUnitID("liang");// 库存单位
FInStockEntry.add(fise);
}
stkInStock.setFInStockEntry(FInStockEntry);
@ -563,10 +563,11 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
BdMaterial bm=new BdMaterial();
bm.setFCreateOrgId("100");//创建机构
ResultBean<BaseVehicle> baseVehicleResultBean = baseVehicleFeign.selectByVinNoAndOrgSid(s.getVinNo(),scmApplyInbound.getUseOrgSid());
bm.setFName(baseVehicleResultBean.getData().getModelName());//物料名称
bm.setFName(baseVehicleResultBean.getData().getVinNo());//物料名称
bm.setFMaterialGroup("03");//物料分组
bm.setFUseOrgId("100");//使用组织
bm.setTOrgIds("100020");//欧曼黑龙江
bm.setF_PAEZ_Base("牵引");//车辆类型
list.add(bm);
}
}catch (Exception e){

4
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclegression/ScmVehicleGressionMapper.java

@ -116,6 +116,6 @@ public interface ScmVehicleGressionMapper extends BaseMapper<ScmVehicleGression>
List<ScmVehicleGressionVo> getlastTimeEqual(@Param("vinNo") String vinNo, @Param("targetLocationSid") String targetLocationSid);
@Select("SELECT count(*) FROM scm_vehicle_gression WHERE useOrgSid = #{useOrgSid} and handleState = '1' ")
int getToDoNum(@Param("useOrgSid") String useOrgSid);
@Select("SELECT count(*) FROM scm_vehicle_gression WHERE useOrgSid = #{useOrgSid} and createBySid = #{userSid} and handleState = '1' ")
int getToDoNum(@Param("useOrgSid") String useOrgSid, @Param("userSid") String userSid);
}

5
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclegression/ScmVehicleGressionService.java

@ -665,7 +665,6 @@ public class ScmVehicleGressionService extends MybatisBaseService<ScmVehicleGres
messageFlowableQuery.setMsgContent(scmVehicleGression.getApplicantName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, scmVehicleGression);
return voResultBean;
}
if (r == 2) {
@ -769,7 +768,6 @@ public class ScmVehicleGressionService extends MybatisBaseService<ScmVehicleGres
messageFlowableQuery.setMsgContent(scmVehicleGression.getApplicantName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, scmVehicleGression);
}
return rb.success().setData(resultBean.getData());
@ -874,7 +872,6 @@ public class ScmVehicleGressionService extends MybatisBaseService<ScmVehicleGres
}
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(ufVo, appMap, scmVehicleGression);
return rb.success();
}
}
@ -1055,7 +1052,7 @@ public class ScmVehicleGressionService extends MybatisBaseService<ScmVehicleGres
public ResultBean<String> getToDoNum(String userSid) {
ResultBean rb = ResultBean.fireFail();
String useOrgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
int count = baseMapper.getToDoNum(useOrgSid);
int count = baseMapper.getToDoNum(useOrgSid,userSid);
return rb.success().setData(String.valueOf(count));
}

6
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehicleinventory/ScmVehicleInventoryService.java

@ -290,7 +290,6 @@ public class ScmVehicleInventoryService extends MybatisBaseService<ScmVehicleInv
// return rb.setMsg("请选择盘库人员");
// }
String sid = dto.getSid();
scmVehicleStayInventoryService.delBySid(sid, dto.getInventoryName());
ScmVehicleInventory scmVehicleInventory = new ScmVehicleInventory();
BeanUtil.copyProperties(dto, scmVehicleInventory, "sid");
scmVehicleInventory.setInventoryDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
@ -330,6 +329,11 @@ public class ScmVehicleInventoryService extends MybatisBaseService<ScmVehicleInv
}
}
}
if (StringUtils.isBlank(dto.getInventoryName())) {
scmVehicleStayInventoryService.delBySid(sid, dto.getLoginName());
} else {
scmVehicleStayInventoryService.delBySid(sid, dto.getInventoryName());
}
save(scmVehicleInventory);
return rb.success().setMsg("保存成功");
}

21
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclereturn/ScmVehicleReturnService.java

@ -268,7 +268,6 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
messageFlowableQuery.setMsgContent(scmVehicleReturn.getApplicationName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(uff, appMap, scmVehicleReturn);
return resultBean1;
}
return submitBusinessData(scmVehicleReturnDto, busSid, orgSidPath, variables);
@ -334,7 +333,18 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
//极光推送
UpdateFlowFieldVo uff = rrb.getData();
ScmVehicleReturn scmVehicleReturn = fetchBySid(businessSid);
String msgSid = getMessage(uff, appMap, scmVehicleReturn);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(uff, messageFlowVo);
uff.setProcInsId(scmVehicleReturn.getInstanceId());
uff.setProcDefId(scmVehicleReturn.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("采购退库申请");
messageFlowableQuery.setMsgContent(scmVehicleReturn.getApplicationName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rrb;
} else {
return ResultBean.fireFail().setMsg("操作失败,提交的数据不一致!");
@ -419,6 +429,7 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(uff, messageFlowVo);
uff.setProcInsId(scmVehicleReturn.getInstanceId());
uff.setProcDefId(scmVehicleReturn.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
@ -426,8 +437,6 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
messageFlowableQuery.setMsgContent(scmVehicleReturn.getApplicationName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
// String msgSid = getMessage(uff, appMap, scmVehicleReturn);
}
return rb1;
} else {
@ -735,6 +744,7 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
BeanUtil.copyProperties(uff, messageFlowVo);
String procId = scmVehicleReturn.getInstanceId();
uff.setProcInsId(procId);
uff.setProcDefId(scmVehicleReturn.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(flowTaskVo.getBusinessSid());
@ -749,8 +759,6 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
}
messageFlowableQuery.setMsgTitle("供应链");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
String msgSid = getMessage(uff, appMap, scmVehicleReturn);
return resultBean;
} else {
return ResultBean.fireFail().setMsg("操作失败,提交的数据不一致!");
@ -779,7 +787,6 @@ public class ScmVehicleReturnService extends MybatisBaseService<ScmVehicleReturn
messageFlowableDto.setModuleAction(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(0));
List<Integer> codesInteger = Arrays.asList(Arrays.asList(sysProUrlVo.getUrl().split("#")).get(1).split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());
int[] ints = codesInteger.stream().mapToInt(Integer::valueOf).toArray();
;
messageJsonDto.setButtons(ints);
} else {
messageFlowableDto.setModuleAction(sysProUrlVo.getUrl());

25
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmvehiclestayinventory/ScmVehicleStayInventoryService.java

@ -186,17 +186,19 @@ public class ScmVehicleStayInventoryService extends MybatisBaseService<ScmVehicl
// 查询上一次的盘库人,盘库时间
List<ScmVehicleStayInventoryVo> scmVehicleStayInventoryVos = selInventory(record.getVin(), record.getId(), useOrgSid);
if (scmVehicleStayInventoryVos.size() <= 0) {
record.setInventoryDate("无");
} else {
ScmVehicleStayInventoryVo scmVehicleStayInventoryVo = scmVehicleStayInventoryVos.get(0);
record.setInventoryDate(simpleDateFormat.format(scmVehicleStayInventoryVo.getLastDate()));
}
if (scmVehicleStayInventoryVos.size() <= 0) {
record.setInventoryName("无");
} else {
if (scmVehicleStayInventoryVos.size() > 0) {
ScmVehicleStayInventoryVo scmVehicleStayInventoryVo = scmVehicleStayInventoryVos.get(0);
record.setInventoryName(scmVehicleStayInventoryVo.getLastName());
if (scmVehicleStayInventoryVo.getLastDate() == null) {
record.setInventoryDate("无");
} else {
record.setInventoryDate(simpleDateFormat.format(scmVehicleStayInventoryVo.getLastDate()));
}
if (StringUtils.isBlank(scmVehicleStayInventoryVo.getLastName())) {
record.setInventoryName("无");
} else {
record.setInventoryName(scmVehicleStayInventoryVo.getLastName());
}
}
}
return iPage;
@ -212,7 +214,8 @@ public class ScmVehicleStayInventoryService extends MybatisBaseService<ScmVehicl
* @param query
* @return
*/
private QueryWrapper<AppScmVehicleStayInventoryListPageVo> appQueryWrapper(AppScmVehicleStayInventoryListPageQuery query) {
private QueryWrapper<AppScmVehicleStayInventoryListPageVo> appQueryWrapper
(AppScmVehicleStayInventoryListPageQuery query) {
QueryWrapper<AppScmVehicleStayInventoryListPageVo> qw = new QueryWrapper<>();
qw.eq("svsi.isDelete", 0);
if (StringUtils.isNotBlank(query.getUseOrgSid())) {

14
anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatewithholding/bicyclerebatewithholdingAdd.vue

@ -61,11 +61,11 @@
<el-button type="primary" size="mini" @click="handleLook(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" class="addinputw"></el-input>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <el-input v-model="scope.row.remarks" clearable placeholder="" class="addinputw"></el-input>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<el-row>
<el-col :span="2" class="tleftb">
@ -222,7 +222,7 @@ export default {
brandName: cval.brandName,
brandSid: cval.brandSid,
vehRebateSids: [cval.sid],
remarks: '',
// remarks: '',
sid: '',
mainSid: ''
})
@ -260,7 +260,7 @@ export default {
brandName: cval.brandName,
brandSid: cval.brandSid,
vehRebateSids: [cval.sid],
remarks: '',
// remarks: '',
sid: '',
mainSid: ''
})

10
anrui-scm/anrui-scm-ui/src/views/bikerebate/bicyclerebatewithholding/bicyclerebatewithholdingInfo.vue

@ -52,11 +52,11 @@
<el-button type="primary" size="mini" @click="handleLook(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remarks }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ scope.row.remarks }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<el-row>
<el-col :span="2" class="tleftb">

7
anrui-scm/anrui-scm-ui/src/views/supplychain/caigoutuiku/caigoutuiku.vue

@ -274,10 +274,11 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const _this = this
req.delBySids(this.sids).then(resp => {
_this.$message({ type: 'success', message: resp.msg, showClose: true })
_this.loadList()
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.loadList()
}).catch(e => {
})
}).catch(() => {

37
anrui-scm/anrui-scm-ui/src/views/supplychain/cheliangneigou/vehicleselect.vue

@ -268,34 +268,29 @@ export default {
this.list = response.data.records
}
})
this.listQuery.params.vinNoList = []
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
brandSid: '',
driveForm: '',
emissionStandard: '',
fuelType: '',
gearboxType: '',
modelName: '',
power: '',
productLine: '',
vehicleAlias: '',
vehicleType: '',
vehicleVersion: '',
userSid: '',
vinNoList: []
},
total: 0
}
this.listQuery.current = 1
this.listQuery.size = 5
this.listQuery.total = 0
this.listQuery.params.brandSid = ''
this.listQuery.params.driveForm = ''
this.listQuery.params.emissionStandard = ''
this.listQuery.params.fuelType = ''
this.listQuery.params.gearboxType = ''
this.listQuery.params.modelName = ''
this.listQuery.params.power = ''
this.listQuery.params.productLine = ''
this.listQuery.params.vehicleAlias = ''
this.listQuery.params.vehicleType = ''
this.listQuery.params.vehicleVersion = ''
this.listQuery.params.userSid = ''
this.getList()
},
handleSelectionChange(row) {

37
anrui-scm/anrui-scm-ui/src/views/workFlow/cheliangneigouFlow/neigouguanli/vehicleselect.vue

@ -268,34 +268,29 @@ export default {
this.list = response.data.records
}
})
this.listQuery.params.vinNoList = []
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
brandSid: '',
driveForm: '',
emissionStandard: '',
fuelType: '',
gearboxType: '',
modelName: '',
power: '',
productLine: '',
vehicleAlias: '',
vehicleType: '',
vehicleVersion: '',
userSid: '',
vinNoList: []
},
total: 0
}
this.listQuery.current = 1
this.listQuery.size = 5
this.listQuery.total = 0
this.listQuery.params.brandSid = ''
this.listQuery.params.driveForm = ''
this.listQuery.params.emissionStandard = ''
this.listQuery.params.fuelType = ''
this.listQuery.params.gearboxType = ''
this.listQuery.params.modelName = ''
this.listQuery.params.power = ''
this.listQuery.params.productLine = ''
this.listQuery.params.vehicleAlias = ''
this.listQuery.params.vehicleType = ''
this.listQuery.params.vehicleVersion = ''
this.listQuery.params.userSid = ''
this.getList()
},
handleSelectionChange(row) {

10
anrui-scm/anrui-scm-ui/src/views/workFlow/danchefanliyutiFlow/danchefanliyutiDaiBanInfo.vue

@ -54,11 +54,11 @@
<el-button type="primary" size="mini" @click="handleLook(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remarks }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ scope.row.remarks }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<el-row>
<el-col :span="2" class="tleftb">

16
anrui-scm/anrui-scm-ui/src/views/workFlow/danchefanliyutiFlow/danchefanliyutiEdit.vue

@ -60,11 +60,11 @@
<el-button type="primary" size="mini" @click="handleLook(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" class="addinputw"></el-input>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <el-input v-model="scope.row.remarks" clearable placeholder="" class="addinputw"></el-input>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<el-row>
<el-col :span="2" class="tleftb">
@ -190,7 +190,6 @@ export default {
for (var i in value) {
let cval = value[i]
if (!this.formobj.scmVehRebateWiths || this.formobj.scmVehRebateWiths.length === 0) {
console.log(11111)
this.formobj.scmVehRebateWiths = []
}
let v = 0
@ -204,7 +203,6 @@ export default {
}
}
if (v === 0) {
console.log(v, 44444)
this.formobj.scmVehRebateWiths.push({
rebateTypeKey: cval.rebateTypeKey,
rebateTypeValue: cval.rebateTypeValue,
@ -213,7 +211,7 @@ export default {
brandName: cval.brandName,
brandSid: cval.brandSid,
vehRebateSids: [cval.sid],
remarks: '',
// remarks: '',
sid: '',
mainSid: ''
})
@ -251,7 +249,7 @@ export default {
brandName: cval.brandName,
brandSid: cval.brandSid,
vehRebateSids: [cval.sid],
remarks: '',
// remarks: '',
sid: '',
mainSid: ''
})

10
anrui-scm/anrui-scm-ui/src/views/workFlow/danchefanliyutiFlow/danchefanliyutiYiBanInfo.vue

@ -52,11 +52,11 @@
<el-button type="primary" size="mini" @click="handleLook(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remarks }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ scope.row.remarks }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<el-row>
<el-col :span="2" class="tleftb">

2
anrui-system-ui/src/views/Home/Home.vue

@ -283,7 +283,7 @@
} else if (index == '8') {
let myPopup = window.open('http://120.46.172.184/message/#/' + '?token=' + getStorage(), '_blank')
} else if (index == '1') {
let myPopup = window.open('http://120.46.172.184/scm/#/' + '?token=' + getStorage(), '_blank')
let myPopup = window.open('http://127.0.0.1:9531/scm/#/' + '?token=' + getStorage(), '_blank')
} else if (index == '4') {
let myPopup = window.open('http://120.46.172.184/fin/#/' + '?token=' + getStorage(), '_blank')
} else if (index == '5') {

56
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/AppCommonContractFeign.java

@ -1,19 +1,23 @@
package com.yxt.anrui.terminal.api.autoservice.contract;
import com.yxt.anrui.base.api.commoncontract.*;
import com.yxt.anrui.base.api.commoncontract.AppCommonContractPageVo;
import com.yxt.anrui.base.api.commoncontract.AppCommonContractQuery;
import com.yxt.anrui.base.api.commoncontract.CommonContractFeignFallback;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.ContractDto;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.ContractQuery;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.ContractTaskQuery;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.SubmitContractInfoDto;
import com.yxt.anrui.terminal.api.supplychain.modelAdjust.SubmitModelModPriceDto;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import java.io.IOException;
import java.text.ParseException;
import java.util.Map;
/**
* Project: anrui-base(安瑞基础) <br/>
@ -30,8 +34,8 @@ import java.util.Map;
*/
@Api(tags = "合同表")
@FeignClient(
contextId = "anrui-base-CommonContract",
name = "anrui-base",
contextId = "anrui-terminal-CommonContract",
name = "anrui-terminal",
path = "/autoservice/v1/contract",
fallback = CommonContractFeignFallback.class)
public interface AppCommonContractFeign {
@ -42,5 +46,43 @@ public interface AppCommonContractFeign {
@ResponseBody
public ResultBean<PagerVo<AppCommonContractPageVo>> getContractList(@RequestBody PagerQuery<AppCommonContractQuery> pagerQuery);
@ApiOperation("移动端-初始化合同审核")
@GetMapping("/getContractInfo/{contractSid}/{userSid}")
@ResponseBody
public ResultBean<CommonContractInitVo> getContractInfo(@PathVariable("contractSid") String contractSid, @PathVariable("userSid") String userSid);
@ApiOperation("移动端-保存合同审核")
@PostMapping("/saveContractInfo")
@ResponseBody
public ResultBean saveContractInfo(@RequestBody CrmCustomerFileDto dto);
@ApiOperation("移动端-提交合同审核流程")
@PostMapping("/submitContractInfo")
@ResponseBody
public ResultBean submitContractInfo(@Valid @RequestBody SubmitContractInfoDto dto);
@ApiOperation("办理")
@PutMapping("/agreeContractInfo")
@ResponseBody
ResultBean agreeContractInfo(@RequestBody ContractDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectContractInfo")
@ResponseBody
ResultBean rejectContractInfo(@RequestBody ContractTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallContractInfo")
@ResponseBody
ResultBean recallContractInfo(@RequestBody ContractTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopContractInfo")
@ResponseBody
ResultBean stopContractInfo(@RequestBody ContractTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap ContractQuery query);
}

44
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/AppCommonContractFeignFallback.java

@ -1,6 +1,10 @@
package com.yxt.anrui.terminal.api.autoservice.contract;
import com.yxt.anrui.base.api.commoncontract.*;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.ContractDto;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.ContractQuery;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.ContractTaskQuery;
import com.yxt.anrui.terminal.api.autoservice.contract.flowable.SubmitContractInfoDto;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -31,4 +35,44 @@ public class AppCommonContractFeignFallback implements AppCommonContractFeign {
public ResultBean<PagerVo<AppCommonContractPageVo>> getContractList(PagerQuery<AppCommonContractQuery> pagerQuery) {
return null;
}
@Override
public ResultBean<CommonContractInitVo> getContractInfo(String contractSid, String userSid) {
return null;
}
@Override
public ResultBean saveContractInfo(CrmCustomerFileDto dto) {
return null;
}
@Override
public ResultBean submitContractInfo(SubmitContractInfoDto dto) {
return null;
}
@Override
public ResultBean agreeContractInfo(ContractDto dto) {
return null;
}
@Override
public ResultBean rejectContractInfo(ContractTaskQuery query) {
return null;
}
@Override
public ResultBean recallContractInfo(ContractTaskQuery query) {
return null;
}
@Override
public ResultBean stopContractInfo(ContractTaskQuery query) {
return null;
}
@Override
public ResultBean<String> getFlowOperateTitle(ContractQuery query) {
return null;
}
}

69
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/CommonContractInitVo.java

@ -0,0 +1,69 @@
package com.yxt.anrui.terminal.api.autoservice.contract;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class CommonContractInitVo implements Vo {
private static final long serialVersionUID = 8205950296578299984L;
@ApiModelProperty("合同sid")
private String contractSid;
@ApiModelProperty("单台价格")
private String price;
@ApiModelProperty("数量")
private String number;
@ApiModelProperty("车型")
private String model;
@ApiModelProperty("乙方名称")
private String partyB;
@ApiModelProperty("合同编号")
private String contractId;
@ApiModelProperty("合同价格")
private String contractPrice;
@ApiModelProperty("新车买卖合同")
private List<String> contractImages;
@ApiModelProperty("现场签署图片")
private List<String> siteSigImages;
@ApiModelProperty("身份证图片")
private List<String> idCardImages;
@ApiModelProperty("客户类型")
private String customerKey;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("是否是档案库里的身份证")
private boolean idCardArchives;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("合同附件")
private String appdixUrl;
@ApiModelProperty("现场签署图片附件")
private String sceneSignUrl;
@ApiModelProperty("身份证图片")
private String idImagesUrl;
}

73
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/CrmCustomerFileDto.java

@ -0,0 +1,73 @@
package com.yxt.anrui.terminal.api.autoservice.contract;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class CrmCustomerFileDto implements Dto {
private static final long serialVersionUID = 3534355480622793601L;
@ApiModelProperty("合同sid")
private String contractSid;
@ApiModelProperty("单台价格")
private BigDecimal price;
@ApiModelProperty("数量")
private String number;
@ApiModelProperty("车型")
private String model;
@ApiModelProperty("乙方名称")
private String partyB;
@ApiModelProperty("合同编号")
private String contractId;
@ApiModelProperty("合同价格")
private String contractPrice;
@ApiModelProperty("新车买卖合同")
private List<String> contractImages;
@ApiModelProperty("现场签署图片")
private List<String> siteSigImages;
@ApiModelProperty("身份证图片")
private List<String> idCardImages;
@ApiModelProperty("客户类型")
private String customerKey;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程实例id")
private String procInsId;
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("是否是档案库里的身份证")
private boolean idCardArchives;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("合同附件")
private String appdixUrl;
@ApiModelProperty("现场签署图片附件")
private String sceneSignUrl;
@ApiModelProperty("身份证图片")
private String idImagesUrl;
}

37
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/flowable/ContractDto.java

@ -0,0 +1,37 @@
package com.yxt.anrui.terminal.api.autoservice.contract.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/8/30 15:57
* @Description
*/
@Data
public class ContractDto implements Dto {
private static final long serialVersionUID = -2994642678989084467L;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:procInsId")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
}

25
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/contract/flowable/ContractQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.terminal.api.autoservice.contract.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @Author dimengzhe
* @Date 2022/8/30 15:57
* @Description
*/
@Data
public class ContractQuery implements Query {
private static final long serialVersionUID = 3554621072454825756L;
@ApiModelProperty(value = "节点key")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
@NotNull(message = "参数错误:next")
private Integer next;
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save