From 58db58c9a653298ba75dc621b935d58b2888ae01 Mon Sep 17 00:00:00 2001 From: fanzongzhe0036 Date: Wed, 4 Dec 2024 18:06:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E5=8D=95=E5=8F=8D=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AsBillSettelApplyDetailsVo.java | 4 + .../api/asbusrepairbill/AsBusrepairBill.java | 2 + .../AsBusrepairBillDetailsVo.java | 2 + .../anrui/as/api/asbusrepairbill/SitemVo.java | 17 +- .../AsBusrepairBillReverseSettle.java | 29 + .../AsChoseBusrepairbillQuery.java | 48 + .../AsChoseBusrepairbillVo.java | 49 + .../flowable/SubmitReverseSettleDto.java | 3 +- .../AsBillSettelApplyMapper.java | 3 + .../AsBillSettelApplyMapper.xml | 7 + .../AsBillSettelApplyRest.java | 385 ++++--- .../AsBillSettelApplyService.java | 976 +++++++++++++++++- .../AsBusrepairBillService.java | 9 + .../AsBusrepairBillReverseSettleMapper.java | 4 + .../AsBusrepairBillReverseSettleMapper.xml | 19 + .../AsBusrepairBillReverseSettleRest.java | 24 +- .../AsBusrepairBillReverseSettleService.java | 747 +++++++++++--- .../as/feign/flowable/flow/ProcDefEnum.java | 1 + .../feign/portal/privilege/PrivilegeVo.java | 20 + .../as/feign/portal/sysuser/SysUserFeign.java | 6 + .../sms/smssalesbill/SmsAttachitemVo.java | 2 +- .../sms/smssalesbill/SmsCompleteDto.java | 26 + .../sms/smssalesbill/SmsSalesBillFeign.java | 9 +- .../yxt/sms/apiadmin/SmsSalesBillRest.java | 6 + .../sms/biz/smssalesbill/SmsCompleteDto.java | 26 + .../sms/biz/smssalesbill/SmsSalesBill.java | 2 + .../biz/smssalesbill/SmsSalesBillService.java | 79 +- .../src/main/resources/application.yml | 15 +- 28 files changed, 2176 insertions(+), 344 deletions(-) create mode 100644 yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillQuery.java create mode 100644 yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillVo.java create mode 100644 yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/privilege/PrivilegeVo.java create mode 100644 yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsCompleteDto.java create mode 100644 yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsCompleteDto.java diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java index cf6d7ea432..d6e179d15d 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbillsettelapply/AsBillSettelApplyDetailsVo.java @@ -55,6 +55,9 @@ import java.util.List; @ApiModel(value = "结算申请 视图数据详情", description = "结算申请 视图数据详情") public class AsBillSettelApplyDetailsVo implements Vo { + + private String settleTime; + private String actualAmount; /** * 附加费 */ @@ -252,4 +255,5 @@ public class AsBillSettelApplyDetailsVo implements Vo { private String outSid; //外出费sid private String subsidySid; //厂家补助SID private String rescueSid; //施救费sid + private String partsSellers; //销售人员 } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java index fe89e22a86..64c181f709 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java @@ -169,4 +169,6 @@ public class AsBusrepairBill extends BaseEntity { private Date reportFirstDate; @ApiModelProperty("结算金额") private BigDecimal settleAmount; + @ApiModelProperty("是否结清款项(1是,0否)") + private Integer settleState; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java index 1ab6c3bdcb..1995e22e27 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java @@ -181,4 +181,6 @@ public class AsBusrepairBillDetailsVo implements Vo { private String shClaimTypeKey; @ApiModelProperty("索赔类型value") private String shClaimTypeValue; + @ApiModelProperty("结算时间") + private String settleTime; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java index 79a9af8618..36cea8dfc6 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java @@ -65,5 +65,20 @@ public class SitemVo { // private String groupName; private List staffList = new ArrayList<>(); //维修人员Sid private List staffNameList = new ArrayList<>(); //维修人员姓名信息 - + /** + * 应收合计,销售价 + */ + private String sitemReceivableAmount; + /** + * 结算金额,应收金额 - 优惠金额 + */ + private String sitemSettleAmount; + /** + * 成本 + */ + private String sitemCost; + /** + * 利润额,结算金额 - 成本 + */ + private String sitemPrint; } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsBusrepairBillReverseSettle.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsBusrepairBillReverseSettle.java index 794d5a16cb..f6c457ec07 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsBusrepairBillReverseSettle.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsBusrepairBillReverseSettle.java @@ -87,4 +87,33 @@ public class AsBusrepairBillReverseSettle extends BaseEntity { @ApiModelProperty("办结时间") private Date closeDate; // 办结时间 + + /** + * 成本合计 + */ + private BigDecimal costAmount; + /** + * 材料费 + */ + private BigDecimal goodsAmount; + /** + * 工时费 + */ + private BigDecimal hourAmount; + /** + * 优惠 + */ + private BigDecimal discountAmount; + /** + * 附加费 + */ + private BigDecimal addAmount; + /** + * 利润 + */ + private BigDecimal profit; + @ApiModelProperty("应收金额") + private BigDecimal receivableAmount; // 应收金额 + @ApiModelProperty("反结算金额") + private BigDecimal actualAmount; // 结算金额 } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillQuery.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillQuery.java new file mode 100644 index 0000000000..30e642f4d1 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillQuery.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.as.api.asbusrepairbillreversesettle; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +@Data +public class AsChoseBusrepairbillQuery implements Query { + + /** + * 维修单号 + */ + private String billNo; + /** + * 维修类型 + */ + private String billType; + /** + * 客户名称 + */ + private String customerName; + /** + * 进厂结束 + */ + private String entryTimeEnd; + /** + * 进厂开始日期 + */ + private String entryTimeStart; + private String menuUrl; + private String orgPath; + /** + * 结算结束 + */ + private String settleDateEnd; + /** + * 结算开始 + */ + private String settleDateStart; + /** + * 科目 + */ + private String subject; + private String userSid; + /** + * 车牌号 + */ + private String vehMark; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillVo.java new file mode 100644 index 0000000000..478ef10ece --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/AsChoseBusrepairbillVo.java @@ -0,0 +1,49 @@ +package com.yxt.anrui.as.api.asbusrepairbillreversesettle; + +import lombok.Data; + +@Data +public class AsChoseBusrepairbillVo { + + /** + * 维修单编号 + */ + private String billNo; + /** + * 维修单类型 + */ + private String billType; + private String closeDate; + /** + * 客户 + */ + private String customerName; + /** + * 进厂时间 + */ + private String entryTime; + /** + * 是否外出(无需转换,直接返回是否汉字) + */ + private String isGoOut; + /** + * 结算时间 + */ + private String settleTime; + /** + * 维修单sid + */ + private String sid; + /** + * 科目 + */ + private String subject; + /** + * 车牌号 + */ + private String vehMark; + /** + * 车架号 + */ + private String vinNo; +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/flowable/SubmitReverseSettleDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/flowable/SubmitReverseSettleDto.java index 4c329c8c9c..91a07b6ce4 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/flowable/SubmitReverseSettleDto.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillreversesettle/flowable/SubmitReverseSettleDto.java @@ -1,5 +1,6 @@ package com.yxt.anrui.as.api.asbusrepairbillreversesettle.flowable; +import com.yxt.anrui.as.api.asbillsettelapply.AsBillSettelApplyDetailsVo; import com.yxt.anrui.as.api.asbusrepairbillreversesettle.AsBusrepairBillReverseSettleDto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -13,7 +14,7 @@ import lombok.Data; */ @ApiModel("提交") @Data -public class SubmitReverseSettleDto extends AsBusrepairBillReverseSettleDto { +public class SubmitReverseSettleDto extends AsBillSettelApplyDetailsVo { @ApiModelProperty("意见") private String comment; diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java index 6e4bf93acf..8de32ba0e6 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.java @@ -69,4 +69,7 @@ public interface AsBillSettelApplyMapper extends BaseMapper { int updateFlowFiled(Map map); int selCount(@Param("sourceSid") String sourceSid); + + int selSalesCount(@Param("sourceSid") String sourceSid); + } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml index e035746626..05e759cc0c 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyMapper.xml @@ -60,4 +60,11 @@ WHERE a.sourceSid = #{sourceSid} and a.nodeState != '终止' and a.nodeState != '发起申请' AND (SELECT IFNULL(count(*),0) FROM as_busrepair_bill_reverse_settle as r WHERE r.sourceSid = #{sourceSid} AND r.nodeState = '已办结') = 0 + diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyRest.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyRest.java index 1d553326f7..b5f36b9adc 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyRest.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyRest.java @@ -69,178 +69,235 @@ import java.util.List; @RequestMapping("v1/settleaccounts") public class AsBillSettelApplyRest { - @Autowired - private AsBillSettelApplyService asBillSettelApplyService; + @Autowired + private AsBillSettelApplyService asBillSettelApplyService; - @ApiOperation("根据条件分页查询数据的列表") - @PostMapping("/listPage") - public ResultBean> listPage(@RequestBody PagerQuery pq){ - ResultBean rb = ResultBean.fireFail(); - PagerVo pv = asBillSettelApplyService.listPageVo(pq); - return rb.success().setData(pv); - } + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = asBillSettelApplyService.listPageVo(pq); + return rb.success().setData(pv); + } - @ApiOperation("新增或修改") - @PostMapping("/save") - public ResultBean save(@RequestBody AsBillSettelApplyDetailsVo dto){ - ResultBean rb = ResultBean.fireFail(); - asBillSettelApplyService.saveOrUpdateDto(dto); - return rb.success(); - } + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody AsBillSettelApplyDetailsVo dto) { + ResultBean rb = ResultBean.fireFail(); + asBillSettelApplyService.saveOrUpdateDto(dto); + return rb.success(); + } - @ApiOperation("根据sid批量删除") + @ApiOperation("根据sid批量删除") @PostMapping("/delBySids") - public ResultBean delBySids(@RequestBody String[] sids){ - ResultBean rb = ResultBean.fireFail(); - asBillSettelApplyService.delBySids(sids); - return rb.success(); - } - - @ApiOperation("维修单初始化") - @GetMapping("/busrepairbillInit") - public ResultBean busrepairbillInit(@RequestParam("sid") String sid, - @RequestParam("userSid") String userSid, - @RequestParam("orgPath") String orgPath - ){ - ResultBean rb = ResultBean.fireFail(); - AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.busrepairbillInit(sid,userSid,orgPath); - return rb.success().setData(vo); - } - - @ApiOperation("销售单初始化") - @PostMapping("/salesbillInit") - public ResultBean salesbillInit(@RequestParam("sid") String sid, - @RequestParam("userSid") String userSid, - @RequestParam("orgPath") String orgPath - ){ - ResultBean rb = ResultBean.fireFail(); - AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.salesbillInit(sid,userSid,orgPath); - return rb.success().setData(vo); - } - - @ApiOperation("销售单保存") - @PostMapping("/salesSave") - public ResultBean salesSave(@RequestBody AsBillSettelApplyDetailsVo dto){ - ResultBean rb = ResultBean.fireFail(); - asBillSettelApplyService.saveOrUpdateDto(dto); - return rb.success(); - } - - @ApiOperation("根据SID获取一条记录") + public ResultBean delBySids(@RequestBody String[] sids) { + ResultBean rb = ResultBean.fireFail(); + asBillSettelApplyService.delBySids(sids); + return rb.success(); + } + + @ApiOperation("维修单初始化") + @GetMapping("/busrepairbillInit") + public ResultBean busrepairbillInit(@RequestParam("sid") String sid, + @RequestParam("userSid") String userSid, + @RequestParam("orgPath") String orgPath + ) { + ResultBean rb = ResultBean.fireFail(); + AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.busrepairbillInit(sid, userSid, orgPath); + return rb.success().setData(vo); + } + + @ApiOperation("销售单初始化") + @PostMapping("/salesbillInit") + public ResultBean salesbillInit(@RequestParam("sid") String sid, + @RequestParam("userSid") String userSid, + @RequestParam("orgPath") String orgPath + ) { + ResultBean rb = ResultBean.fireFail(); + AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.salesbillInit(sid, userSid, orgPath); + return rb.success().setData(vo); + } + + @ApiOperation("销售单保存") + @PostMapping("/salesSave") + public ResultBean salesSave(@RequestBody AsBillSettelApplyDetailsVo dto) { + ResultBean rb = ResultBean.fireFail(); + asBillSettelApplyService.salesSave(dto); + return rb.success(); + } + + @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid/{sid}") - public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ - ResultBean rb = ResultBean.fireFail(); - AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.fetchDetailsVoBySid(sid); - return rb.success().setData(vo); - } - @ApiOperation("app详情") - @GetMapping("/fetchDetailsBySid2/{sid}") - public ResultBean fetchDetailsBySid2(@PathVariable("sid") String sid){ - ResultBean rb = ResultBean.fireFail(); - AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.fetchDetailsVoBySid(sid); - return rb.success().setData(vo); - } - //---------------------------------flow---------------------------------------- - @ApiOperation("提交审批流程") - @PostMapping("/submit") - public ResultBean submit(@RequestBody @Valid SubmitSettleDto dto) { - return asBillSettelApplyService.submit(dto); - } - - @ApiOperation(value = "办理(同意)") - @PostMapping("/complete") - public ResultBean complete(@Valid @RequestBody SettleCompleteDto query) { - BusinessVariables bv = new BusinessVariables(); - BeanUtil.copyProperties(query, bv); - bv.setModelId(ProcDefEnum.BILLSETTLEAPPLY.getProDefId()); - return asBillSettelApplyService.complete(bv); - } - - @ApiOperation(value = "获取上一个环节") - @GetMapping(value = "/getPreviousNodesForReject") - public ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap SettleNodeQuery query) { - return asBillSettelApplyService.getPreviousNodesForReject(query); - } - - @ApiOperation(value = "获取下一个环节") - @GetMapping(value = "/getNextNodesForSubmit") - public ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap SettleNodeQuery query) { - return asBillSettelApplyService.getNextNodesForSubmit(query); - } - - @ApiOperation(value = "驳回任务") - @PostMapping(value = "/reject") - public ResultBean reject(@Valid @RequestBody SettleTaskQuery query) { - return asBillSettelApplyService.reject(query); - } - - @ApiOperation(value = "撤回流程") - @PostMapping(value = "/revokeProcess") - public ResultBean revokeProcess(@Valid @RequestBody SettleTaskQuery query) { - return asBillSettelApplyService.revokeProcess(query); - } - - @ApiOperation(value = "终止任务") - @PostMapping(value = "/breakProcess") - public ResultBean breakProcess(@Valid @RequestBody SettleTaskQuery query) { - return asBillSettelApplyService.breakProcess(query); - } - - @ApiOperation(value = "加签") - @PostMapping(value = "/delegateProcess") - public ResultBean delegateProcess(@RequestBody SettleDelegateQuery query) { - return asBillSettelApplyService.delegate(query); - } - - //---------------- app --------------------- - @ApiOperation("办理") - @PutMapping("/agreeCreditInfo") - @ResponseBody - ResultBean agreeCreditInfo(@Valid @RequestBody CompleteSettleDto dto){ - return asBillSettelApplyService.agreeCreditInfo(dto); - } - - @ApiOperation("驳回") - @PutMapping("/rejectCreditInfo") - @ResponseBody - ResultBean rejectCreditInfo(@Valid @RequestBody AppSettleTaskQuery query){ - return asBillSettelApplyService.rejectCreditInfo(query); - } - - - @ApiOperation("撤回") - @PutMapping("/recallCreditInfo") - @ResponseBody - ResultBean recallCreditInfo(@Valid @RequestBody AppSettleTaskQuery query){ - return asBillSettelApplyService.recallCreditInfo(query); - } - - - @ApiOperation("终止") - @PutMapping("/stopCreditInfo") - @ResponseBody - ResultBean stopCreditInfo(@Valid @RequestBody AppSettleTaskQuery query){ - return asBillSettelApplyService.stopCreditInfo(query); - } - - - @ApiOperation("获取流程操作标题") - @GetMapping("/getFlowOperateTitle") - @ResponseBody - ResultBean getFlowOperateTitle(@Valid @SpringQueryMap SettleFlowableQuery query){ - return asBillSettelApplyService.getFlowOperateTitle(query); - } - - - @ApiOperation(value = "加签") - @PutMapping(value = "/delegate") - @ResponseBody - public ResultBean delegate(@RequestBody AppSettleDelegateQuery delegateQuery){ - return asBillSettelApplyService.delegate2(delegateQuery); - } + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid) { + ResultBean rb = ResultBean.fireFail(); + AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + @ApiOperation("app详情") + @GetMapping("/fetchDetailsBySid2/{sid}") + public ResultBean fetchDetailsBySid2(@PathVariable("sid") String sid) { + ResultBean rb = ResultBean.fireFail(); + AsBillSettelApplyDetailsVo vo = asBillSettelApplyService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + //---------------------------------flow---------------------------------------- + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody @Valid SubmitSettleDto dto) { + return asBillSettelApplyService.submit(dto); + } + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody SettleCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.BILLSETTLEAPPLY.getProDefId()); + return asBillSettelApplyService.complete(bv); + } + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + public ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap SettleNodeQuery query) { + return asBillSettelApplyService.getPreviousNodesForReject(query); + } + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + public ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap SettleNodeQuery query) { + return asBillSettelApplyService.getNextNodesForSubmit(query); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody SettleTaskQuery query) { + return asBillSettelApplyService.reject(query); + } + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody SettleTaskQuery query) { + return asBillSettelApplyService.revokeProcess(query); + } + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody SettleTaskQuery query) { + return asBillSettelApplyService.breakProcess(query); + } + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegateProcess") + public ResultBean delegateProcess(@RequestBody SettleDelegateQuery query) { + return asBillSettelApplyService.delegate(query); + } + + + //----------------------------销售单流程-------------------------------- + @ApiOperation("提交审批流程") + @PostMapping("/submitSales") + public ResultBean submitSales(@RequestBody @Valid SubmitSettleDto dto) { + return asBillSettelApplyService.submitSales(dto); + } + + @ApiOperation(value = "办理(同意)") + @PostMapping("/completeSales") + public ResultBean completeSales(@Valid @RequestBody SettleCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.SALESBILLSETTLEAPPLY.getProDefId()); + return asBillSettelApplyService.completeSales(bv); + } + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForRejectSales") + public ResultBean> getPreviousNodesForRejectSales(@Valid @SpringQueryMap SettleNodeQuery query) { + return asBillSettelApplyService.getPreviousNodesForRejectSales(query); + } + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmitSales") + public ResultBean> getNextNodesForSubmitSales(@Valid @SpringQueryMap SettleNodeQuery query) { + return asBillSettelApplyService.getNextNodesForSubmitSales(query); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/rejectSales") + public ResultBean rejectSales(@Valid @RequestBody SettleTaskQuery query) { + return asBillSettelApplyService.rejectSales(query); + } + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcessSales") + public ResultBean revokeProcessSales(@Valid @RequestBody SettleTaskQuery query) { + return asBillSettelApplyService.revokeProcessSales(query); + } + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcessSales") + public ResultBean breakProcessSales(@Valid @RequestBody SettleTaskQuery query) { + return asBillSettelApplyService.breakProcessSales(query); + } + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegateProcessSales") + public ResultBean delegateProcessSales(@RequestBody SettleDelegateQuery query) { + return asBillSettelApplyService.delegateProcessSales(query); + } + + + + //---------------- app --------------------- + @ApiOperation("办理") + @PutMapping("/agreeCreditInfo") + @ResponseBody + ResultBean agreeCreditInfo(@Valid @RequestBody CompleteSettleDto dto) { + return asBillSettelApplyService.agreeCreditInfo(dto); + } + + @ApiOperation("驳回") + @PutMapping("/rejectCreditInfo") + @ResponseBody + ResultBean rejectCreditInfo(@Valid @RequestBody AppSettleTaskQuery query) { + return asBillSettelApplyService.rejectCreditInfo(query); + } + + + @ApiOperation("撤回") + @PutMapping("/recallCreditInfo") + @ResponseBody + ResultBean recallCreditInfo(@Valid @RequestBody AppSettleTaskQuery query) { + return asBillSettelApplyService.recallCreditInfo(query); + } + + + @ApiOperation("终止") + @PutMapping("/stopCreditInfo") + @ResponseBody + ResultBean stopCreditInfo(@Valid @RequestBody AppSettleTaskQuery query) { + return asBillSettelApplyService.stopCreditInfo(query); + } + + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@Valid @SpringQueryMap SettleFlowableQuery query) { + return asBillSettelApplyService.getFlowOperateTitle(query); + } + + + @ApiOperation(value = "加签") + @PutMapping(value = "/delegate") + @ResponseBody + public ResultBean delegate(@RequestBody AppSettleDelegateQuery delegateQuery) { + return asBillSettelApplyService.delegate2(delegateQuery); + } } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java index 5659ee34a5..e92d0a85b2 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbillsettelapply/AsBillSettelApplyService.java @@ -219,6 +219,9 @@ public class AsBillSettelApplyService extends MybatisBaseService goodsDetailsVos = data.getGoodsVos(); if (!goodsDetailsVos.isEmpty()) { List goodsList = new ArrayList<>(); @@ -2684,6 +2698,7 @@ public class AsBillSettelApplyService extends MybatisBaseService 0) { + List aitemVos = dto.getAitemVos(); + for (SettleAitemVo aitemVo : aitemVos) { + AsBillSettelApplyAitem a = new AsBillSettelApplyAitem(); + BeanUtil.copyProperties(aitemVo, a, "sid"); + a.setMainSid(sid); + asBillSettelApplyAitemService.insert(a); + if (StringUtils.isNotBlank(aitemVo.getAitemCost())) { + costAll = costAll.add(new BigDecimal(aitemVo.getAitemCost())); + } + if (StringUtils.isNotBlank(aitemVo.getAitemPrint())) { + printAll = printAll.add(new BigDecimal(aitemVo.getAitemPrint())); + } + } + } + if (!dto.getGoodsDetailsVos().isEmpty() && dto.getGoodsDetailsVos().size() > 0) { + List goodsDetailsVos = dto.getGoodsDetailsVos(); + for (SettleGoodsDetailsVo g : goodsDetailsVos) { + AsBillSettelApplyDetail d = new AsBillSettelApplyDetail(); + BeanUtil.copyProperties(g, d, "sid"); + d.setMainSid(sid); + asBillSettelApplyDetailService.insert(d); + if (StringUtils.isNotBlank(g.getGoodsCost())) { + costAll = costAll.add(new BigDecimal(g.getGoodsCost())); + } + if (StringUtils.isNotBlank(g.getGoodsPrint())) { + printAll = printAll.add(new BigDecimal(g.getGoodsPrint())); + } + } + } + AsBillSettelApply settelApply = fetchBySid(sid); + if (null != settelApply) { + settelApply.setCostAmount(costAll); + settelApply.setProfit(printAll); + baseMapper.updateById(settelApply); + } + return sid; + } + + public ResultBean submitSales(SubmitSettleDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sourceSid = dto.getSourceSid(); + int count = baseMapper.selSalesCount(sourceSid); + if (count > 0) { + return rb.setMsg("该销售单已发起结算申请,请勿重复发起!"); + } + + AsBillSettelApply settelApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, settelApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + //新增修改保存 + String businessSid = salesSave(dto); + settelApply = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //用户的部门全路径sid + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(settelApply.getCreateBySid()); + //若app移动端有此功能,则传递appMap参数 + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 + variables.put("app", appMap); + //判断发起人是否为前台主管 + String createBySid = settelApply.getCreateBySid(); +// List list = sysUserRoleFeign.getUserRoleSidByUserSid(createBySid).getData(); +// variables.put("iszg", list.contains("f00a7338-a6a4-4712-ab85-ca211d56fb1f")); + boolean discount = false; //是否低于销售价X折或低于优惠金额X元 + boolean isSecond = false; //是否为自有二级站 + boolean isZhan = false; //是否为自有二级站长 + boolean isZG = false; //是否为配件主管 + boolean price = false; //是否低于销售价X折 + boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + if (null != vo) { + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("商品配件销售结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(createBySid).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(createBySid).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司配件主管")) { + isZG = true; + } + } + } + } + variables.put("discount", discount); + variables.put("isSecond", isSecond); + variables.put("isZhan", isZhan); + variables.put("isZG", isZG); + variables.put("price", price); + variables.put("chengben", chengben); + if (!discount) { + smsSettleComplete(businessSid); + return rb.success(); + } + //流程定义id + bv.setModelId(ProcDefEnum.SALESBILLSETTLEAPPLY.getProDefId()); + bv.setFormVariables(variables); + if (r == 1) { + ResultBean voResultBean = flowFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //极光推送 + settelApply = 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(settelApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("结算申请"); + messageFeign.pushMessage(messageFlowableQuery); + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(settelApply.getTaskId()); + bv.setTaskDefKey(settelApply.getNodeSid()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + + + + public ResultBean completeSales(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + AsBillSettelApply settelApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + boolean discount = false; //是否低于销售价X折或低于优惠金额X元 + boolean isSecond = false; //是否为自有二级站 + boolean isZhan = false; //是否为自有二级站长 + boolean isZG = false; //是否为前台主管 + boolean price = false; //是否低于销售价X折 + boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + if (null != vo) { + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("商品配件销售结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司配件主管")) { + isZG = true; + } + } + } + } + variables.put("discount", discount); + variables.put("isSecond", isSecond); + variables.put("isZhan", isZhan); + variables.put("isZG", isZG); + variables.put("price", price); + variables.put("chengben", chengben); + FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery(); + if (StringUtils.isBlank(settelApply.getProcDefId())) { + flowProcessMapQuery.setProDefKey(bv.getModelId()); + } else { + flowProcessMapQuery.setProDefKey(settelApply.getProcDefId()); + } + flowProcessMapQuery.setVariables(variables); + variables = flowableFeign.getMap(flowProcessMapQuery).getData(); + //======================================= + bv.setFormVariables(variables); + SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + bv.setOrgSidPath(deptVo.getOrgSidPath()); + if (bv.getTaskId().equals(settelApply.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + smsSettleComplete(businessSid); + } else { + //极光推送 + settelApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + ufVo.setProcDefId(settelApply.getProcDefId()); + ufVo.setProcInsId(settelApply.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("结算申请"); + messageFlowableQuery.setMsgContent(settelApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("结算申请"); + messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForRejectSales(SettleNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + String businessSid = query.getBusinessSid(); + boolean discount = false; //是否低于销售价X折或低于优惠金额X元 + boolean isSecond = false; //是否为自有二级站 + boolean isZhan = false; //是否为自有二级站长 + boolean isZG = false; //是否为前台主管 + boolean price = false; //是否低于销售价X折 + boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + AsBillSettelApply settelApply = fetchBySid(businessSid); + if (null != vo) { + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("商品配件销售结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司配件主管")) { + isZG = true; + } + } + } + } + Map variables = new HashMap<>(); + variables.put("discount", discount); + variables.put("isSecond", isSecond); + variables.put("isZhan", isZhan); + variables.put("isZG", isZG); + variables.put("price", price); + variables.put("chengben", chengben); + bv.setFormVariables(variables); + bv.setModelId(ProcDefEnum.BILLSETTLEAPPLY.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SettleNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmitSales(SettleNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + String businessSid = query.getBusinessSid(); + boolean discount = false; //是否低于销售价X折或低于优惠金额X元 + boolean isSecond = false; //是否为自有二级站 + boolean isZhan = false; //是否为自有二级站长 + boolean isZG = false; //是否为前台主管 + boolean price = false; //是否低于销售价X折 + boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + AsBillSettelApply settelApply = fetchBySid(businessSid); + if (null != vo) { + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("商品配件销售结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司配件主管")) { + isZG = true; + } + } + } + } + Map variables = new HashMap<>(); + variables.put("discount", discount); + variables.put("isSecond", isSecond); + variables.put("isZhan", isZhan); + variables.put("isZG", isZG); + variables.put("price", price); + variables.put("chengben", chengben); + bv.setFormVariables(variables); + bv.setModelId(ProcDefEnum.BILLSETTLEAPPLY.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), SettleNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean rejectSales(SettleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + AsBillSettelApply settelApply = fetchBySid(businessSid); + if (settelApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = settelApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + boolean discount = false; //是否低于销售价X折或低于优惠金额X元 + boolean isSecond = false; //是否为自有二级站 + boolean isZhan = false; //是否为自有二级站长 + boolean isZG = false; //是否为前台主管 + boolean price = false; //是否低于销售价X折 + boolean chengben = false; //是否低于成本价 + AsBillSettelApplyDetailsVo vo = fetchDetailsVoBySid(businessSid); + if (null != vo) { + List goodsDetailsVos = vo.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + for (SettleGoodsDetailsVo s : goodsDetailsVos) { + String discountC = "0"; + String discountAmountC = "0"; + BigDecimal amount = BigDecimal.ZERO; + BigDecimal cost = BigDecimal.ZERO; + if (StringUtils.isNotBlank(s.getDiscount())) { + discountC = s.getDiscount(); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + discountAmountC = s.getDiscountAmount(); + } + if (StringUtils.isNotBlank(s.getGoodsSettleAmount())) { + amount = new BigDecimal(s.getGoodsSettleAmount()); + } + if (StringUtils.isNotBlank(s.getGoodsCost())) { + cost = new BigDecimal(s.getGoodsCost()); + } + SysFlowNodeQuery flowNodeQuery = new SysFlowNodeQuery(); + flowNodeQuery.setType(0); + flowNodeQuery.setFlowName("商品配件销售结算申请"); + flowNodeQuery.setCreateOrgName(vo.getUseOrgName()); + flowNodeQuery.setProcDefId(settelApply.getProcDefId()); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f1 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("配件主管审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f2 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f3 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + flowNodeQuery.setNodeNames("自有二级站长审批"); + flowNodeQuery.setParameter("优惠金额"); + flowNodeQuery.setValue(discountAmountC); + boolean f4 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f1 || f2 || f3 || f4) { + discount = true; + } + flowNodeQuery.setNodeNames("站长审批"); + flowNodeQuery.setParameter("销售价折扣"); + flowNodeQuery.setValue(discountC); + boolean f5 = sysFlowPowerFeign.flowPermissions(flowNodeQuery); + if (f5) { + price = true; + } + if (amount.compareTo(cost) < 0) { + chengben = true; + } + } + } + } + SysOrganizationVo data = sysOrganizationFeign.fetchBySid(settelApply.getDeptSid()).getData(); + if (data != null) { + String orgAttributeValue = data.getOrgAttributeValue(); + if (orgAttributeValue.equals("自有二级服务站")) { + isSecond = true; + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司自有二级站站长")) { + isZhan = true; + } + } + } else { + String roles = ""; + //根据当前用户sid查询用户角色 + List roleVoList = sysRoleFeign.fetchByUserSid(settelApply.getCreateBySid()).getData(); + roleVoList.removeAll(Collections.singleton(null)); + if (!roleVoList.isEmpty()) { + roles = String.join("+", roleVoList.stream().map(SysRoleVo::getName).collect(Collectors.toList())); + } + if (StringUtils.isNotBlank(roles)) { + if (roles.contains("分公司配件主管")) { + isZG = true; + } + } + } + } + variables.put("discount", discount); + variables.put("isSecond", isSecond); + variables.put("isZhan", isZhan); + variables.put("isZG", isZG); + variables.put("price", price); + variables.put("chengben", chengben); + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + settelApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = settelApply.getProcInstId(); + ufVo.setProcInsId(procId); + ufVo.setProcDefId(settelApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("结算申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(settelApply.getCreateBySid())) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(settelApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + messageFlowableQuery.setMsgTitle("结算申请"); + messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcessSales(SettleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + AsBillSettelApply settelApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = settelApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcessSales(SettleTaskQuery 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("请填写意见"); + } + AsBillSettelApply settelApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = settelApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(settelApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegateProcessSales(SettleDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + public void smsSettleComplete(String sid) { + AsBillSettelApply asBillSettelApply = fetchBySid(sid); + asBillSettelApply.setCloseDate(new Date()); + asBillSettelApply.setNodeState("已办结"); + baseMapper.updateById(asBillSettelApply); + SmsSalesBillDetailsVo data = smsSalesBillFeign.fetchDetailsBySid(asBillSettelApply.getSourceSid()).getData(); + if (null != asBillSettelApply.getGoodsAmount()) { + if (asBillSettelApply.getGoodsAmount().compareTo(BigDecimal.ZERO) > 0) { + FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto(); + finUncollectedReceivablesDetailedDto.setCreateByName(data.getCreateByName()); + finUncollectedReceivablesDetailedDto.setCreateBySid(data.getCreateBySid()); + finUncollectedReceivablesDetailedDto.setCustomerSid(data.getCustomerSid()); + finUncollectedReceivablesDetailedDto.setCustomerName(data.getCustomerName()); + finUncollectedReceivablesDetailedDto.setContractSid(data.getSid()); + finUncollectedReceivablesDetailedDto.setContractNo(data.getBillNo()); + finUncollectedReceivablesDetailedDto.setVIN(data.getVinNo()); + finUncollectedReceivablesDetailedDto.setStaffDeptSid(data.getDeptSid()); + finUncollectedReceivablesDetailedDto.setStaffDeptName(data.getDeptName()); + finUncollectedReceivablesDetailedDto.setCustomerPhone(data.getMobile()); + finUncollectedReceivablesDetailedDto.setUseOrgSid(data.getUseOrgSid()); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(data.getDeptSid()).getData(); + if (null != organizationVo) { + finUncollectedReceivablesDetailedDto.setOrgSidPath(organizationVo.getOrgSidPath()); + } + finUncollectedReceivablesDetailedDto.setReceivablesName("材料费"); + finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((asBillSettelApply.getGoodsAmount()).toString()); + finUncollectedReceivablesDetailedDto.setReveivableMoney((asBillSettelApply.getGoodsAmount()).toString()); + finUncollectedReceivablesDetailedDto.setUseOrgName(asBillSettelApply.getUseOrgName()); + finUncollectedReceivablesDetailedDto.setKxState("01"); + finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto); + } + } + if (null != asBillSettelApply.getAddAmount()) { + if (asBillSettelApply.getAddAmount().compareTo(BigDecimal.ZERO) > 0) { + FinUncollectedReceivablesDetailedDto finUncollectedReceivablesDetailedDto = new FinUncollectedReceivablesDetailedDto(); + finUncollectedReceivablesDetailedDto.setCreateByName(data.getCreateByName()); + finUncollectedReceivablesDetailedDto.setCreateBySid(data.getCreateBySid()); + finUncollectedReceivablesDetailedDto.setCustomerSid(data.getCustomerSid()); + finUncollectedReceivablesDetailedDto.setCustomerName(data.getCustomerName()); + finUncollectedReceivablesDetailedDto.setContractSid(data.getSid()); + finUncollectedReceivablesDetailedDto.setContractNo(data.getBillNo()); + finUncollectedReceivablesDetailedDto.setVIN(data.getVinNo()); + finUncollectedReceivablesDetailedDto.setStaffDeptSid(data.getDeptSid()); + finUncollectedReceivablesDetailedDto.setStaffDeptName(data.getDeptName()); + finUncollectedReceivablesDetailedDto.setCustomerPhone(data.getMobile()); + finUncollectedReceivablesDetailedDto.setUseOrgSid(data.getUseOrgSid()); + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(data.getDeptSid()).getData(); + if (null != organizationVo) { + finUncollectedReceivablesDetailedDto.setOrgSidPath(organizationVo.getOrgSidPath()); + } + finUncollectedReceivablesDetailedDto.setReceivablesName("其他费用"); + finUncollectedReceivablesDetailedDto.setCurrentReceivableMoney((asBillSettelApply.getAddAmount()).toString()); + finUncollectedReceivablesDetailedDto.setReveivableMoney((asBillSettelApply.getAddAmount()).toString()); + finUncollectedReceivablesDetailedDto.setUseOrgName(asBillSettelApply.getUseOrgName()); + finUncollectedReceivablesDetailedDto.setKxState("01"); + finUncollectedReceivablesDetailedFeign.saveOrUpdate(finUncollectedReceivablesDetailedDto); + } + } + SmsCompleteDto smsCompleteDto = new SmsCompleteDto(); + smsCompleteDto.setSid(asBillSettelApply.getSourceSid()); + smsCompleteDto.setSettleAmount(asBillSettelApply.getSettleAmount()); + smsSalesBillFeign.smsBillSettle(smsCompleteDto); + } } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java index 92ff7c5e87..d7ae07c44e 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java @@ -751,6 +751,15 @@ public class AsBusrepairBillService extends MybatisBaseService map); + + IPage busrepairListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleMapper.xml b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleMapper.xml index 0e60b6e654..ebf0a441f1 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleMapper.xml +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleMapper.xml @@ -75,4 +75,23 @@ AND `nodeState` != '发起申请' AND `nodeState` != '终止' + diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleRest.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleRest.java index 7aaa663b29..825420f4c8 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleRest.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleRest.java @@ -26,6 +26,7 @@ package com.yxt.anrui.as.biz.asbusrepairbillreversesettle; import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.as.api.asbillsettelapply.AsBillSettelApplyDetailsVo; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleDelegateQuery; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleTaskQuery; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.CompleteSettleDto; @@ -79,6 +80,15 @@ public class AsBusrepairBillReverseSettleRest{ } + @ApiOperation("选择维修单列表") + @PostMapping("/busrepairListPage") + public ResultBean> busrepairListPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = asBusrepairBillReverseSettleService.busrepairListPage(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") @PostMapping("/save") public ResultBean save(@RequestBody AsBusrepairBillReverseSettleDto dto){ @@ -89,7 +99,7 @@ public class AsBusrepairBillReverseSettleRest{ @ApiOperation("新增或修改") @PostMapping("/saveReverseSettle") - public ResultBean saveReverseSettle(@RequestBody AsBusrepairBillReverseSettleDto dto){ + public ResultBean saveReverseSettle(@RequestBody AsBillSettelApplyDetailsVo dto){ ResultBean rb = ResultBean.fireFail(); String sid = asBusrepairBillReverseSettleService.saveReverseSettle(dto); return rb.success().setData(sid); @@ -105,17 +115,17 @@ public class AsBusrepairBillReverseSettleRest{ @ApiOperation("新增初始化") @PostMapping("/reverseSettleInit") - public ResultBean reverseSettleInit(@RequestBody ReverseSettleInitQuery query){ + public ResultBean reverseSettleInit(@RequestBody ReverseSettleInitQuery query){ ResultBean rb = ResultBean.fireFail(); - AsBusrepairBillReverseSettleDetailsVo vo = asBusrepairBillReverseSettleService.reverseSettleInit(query); + AsBillSettelApplyDetailsVo vo = asBusrepairBillReverseSettleService.reverseSettleInit(query); return rb.success().setData(vo); } @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid/{sid}") - public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ ResultBean rb = ResultBean.fireFail(); - AsBusrepairBillReverseSettleDetailsVo vo = asBusrepairBillReverseSettleService.fetchDetailsVoBySid(sid); + AsBillSettelApplyDetailsVo vo = asBusrepairBillReverseSettleService.fetchDetailsVoBySid(sid); return rb.success().setData(vo); } @@ -175,9 +185,9 @@ public class AsBusrepairBillReverseSettleRest{ // ----------------------------------app------------------------------------------------ @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid2/{sid}") - public ResultBean fetchDetailsBySid2(@PathVariable("sid") String sid){ + public ResultBean fetchDetailsBySid2(@PathVariable("sid") String sid){ ResultBean rb = ResultBean.fireFail(); - AsBusrepairBillReverseSettleDetailsVo vo = asBusrepairBillReverseSettleService.fetchDetailsVoBySid(sid); + AsBillSettelApplyDetailsVo vo = asBusrepairBillReverseSettleService.fetchDetailsVoBySid(sid); return rb.success().setData(vo); } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleService.java b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleService.java index 51285344d1..4967d27a17 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleService.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillreversesettle/AsBusrepairBillReverseSettleService.java @@ -31,21 +31,33 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.anrui.as.api.asbillsettelapply.*; import com.yxt.anrui.as.api.asbillsettelapply.flow.*; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleDelegateQuery; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.AppSettleTaskQuery; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.CompleteSettleDto; import com.yxt.anrui.as.api.asbillsettelapply.flow.app.SettleFlowableQuery; +import com.yxt.anrui.as.api.asbillsettelapplyaitem.AsBillSettelApplyAitem; +import com.yxt.anrui.as.api.asbillsettelapplyaitemspec.AsBillSettelApplyAitemspec; +import com.yxt.anrui.as.api.asbillsettelapplydetail.AsBillSettelApplyDetail; +import com.yxt.anrui.as.api.asbillsettelapplysitem.AsBillSettelApplySitem; import com.yxt.anrui.as.api.asbusclaimcheckapply.AsBusclaimCheckApply; import com.yxt.anrui.as.api.asbusrepairbill.*; import com.yxt.anrui.as.api.asbusrepairbillnode.AsBusrepairBillNode; import com.yxt.anrui.as.api.asbusrepairbillreversesettle.*; import com.yxt.anrui.as.api.asbusrepairbillreversesettle.flowable.*; +import com.yxt.anrui.as.api.asserviceattachitem.AsServiceAttachItem; import com.yxt.anrui.as.api.enums.AsBillTypeEnum; import com.yxt.anrui.as.api.utils.AsRule; +import com.yxt.anrui.as.api.utils.FileUrlQuery; import com.yxt.anrui.as.api.utils.domain.AsBillNo; +import com.yxt.anrui.as.biz.asbillsettelapplyaitem.AsBillSettelApplyAitemService; +import com.yxt.anrui.as.biz.asbillsettelapplyaitemspec.AsBillSettelApplyAitemSpecService; +import com.yxt.anrui.as.biz.asbillsettelapplydetail.AsBillSettelApplyDetailService; +import com.yxt.anrui.as.biz.asbillsettelapplysitem.AsBillSettelApplySitemService; import com.yxt.anrui.as.biz.asbusrepairbill.AsBusrepairBillService; import com.yxt.anrui.as.biz.asbusrepairbillnode.AsBusrepairBillNodeService; +import com.yxt.anrui.as.biz.asserviceattachitem.AsServiceAttachItemService; import com.yxt.anrui.as.feign.flowable.flow.*; import com.yxt.anrui.as.feign.flowable.flow2.FlowDelegateQuery; import com.yxt.anrui.as.feign.flowable.flow2.FlowFeign; @@ -56,6 +68,7 @@ import com.yxt.anrui.as.feign.message.MessageFeign; import com.yxt.anrui.as.feign.message.MessageFlowVo; import com.yxt.anrui.as.feign.message.MessageFlowableQuery; import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery; +import com.yxt.anrui.as.feign.portal.privilege.PrivilegeVo; import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign; import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo; import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrg; @@ -63,6 +76,12 @@ import com.yxt.anrui.as.feign.portal.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.as.feign.portal.sysuser.SysUserFeign; import com.yxt.anrui.as.feign.portal.sysuser.SysUserVo; import com.yxt.anrui.as.feign.portal.sysuserrole.SysUserRoleFeign; +import com.yxt.anrui.as.feign.sms.smssalesbill.SalesGoodsVo; +import com.yxt.anrui.as.feign.sms.smssalesbill.SalesInvoiceVo; +import com.yxt.anrui.as.feign.sms.smssalesbill.SmsAttachitemVo; +import com.yxt.anrui.as.feign.sms.smssalesbill.SmsSalesBillDetailsVo; +import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventory; +import com.yxt.anrui.as.feign.wms.wmsInventory.WmsInventoryFeign; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -73,6 +92,7 @@ import com.yxt.common.core.vo.PagerVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -91,6 +111,19 @@ import java.util.stream.Collectors; */ @Service public class AsBusrepairBillReverseSettleService extends MybatisBaseService { + + @Autowired + private AsBillSettelApplyAitemService asBillSettelApplyAitemService; + @Autowired + private AsBillSettelApplyAitemSpecService asBillSettelApplyAitemSpecService; + @Autowired + private AsBillSettelApplySitemService asBillSettelApplySitemService; + @Autowired + private AsBillSettelApplyDetailService asBillSettelApplyDetailService; + @Autowired + private AsServiceAttachItemService asServiceAttachItemService; + @Autowired + private WmsInventoryFeign wmsInventoryFeign; @Autowired private SysOrganizationFeign sysOrganizationFeign; @Autowired @@ -231,101 +264,407 @@ public class AsBusrepairBillReverseSettleService extends MybatisBaseService fileName = data.getFileName(); + if (!fileName.isEmpty()) { + vo.setFileName(fileName); + List files = new ArrayList<>(); + for (FileUrlQuery fileUrlQuery : fileName) { + files.add(fileUrlQuery.getUrl()); + } + vo.setFileName2(files); } - if (StringUtils.isNotBlank(bill.getWaitorName())) { - vo.setWaitorName(bill.getWaitorName()); + List aitemVos = new ArrayList<>(); + List goodsDetailsVos = new ArrayList<>(); + List sitemVos = new ArrayList<>(); + List applyAitems = asBillSettelApplyAitemService.fetchByBillSid(sid); + if (!applyAitems.isEmpty() && applyAitems.size() > 0) { + for (AsBillSettelApplyAitem c : applyAitems) { + SettleAitemVo e = new SettleAitemVo(); + BeanUtil.copyProperties(c, e); + aitemVos.add(e); + } + vo.setAitemVos(aitemVos); } - if (StringUtils.isNotBlank(bill.getBillType())) { - vo.setBillType(bill.getBillType()); + List sitems = asBillSettelApplySitemService.fetchByBillSid(sid); + if (!sitems.isEmpty() && sitems.size() > 0) { + for (AsBillSettelApplySitem c : sitems) { + SettleSitemVo e = new SettleSitemVo(); + BeanUtil.copyProperties(c, e); + sitemVos.add(e); + } + vo.setSitemVos(sitemVos); } - if (StringUtils.isNotBlank(bill.getSubject())) { - vo.setSubject(bill.getSubject()); + List goods = asBillSettelApplyDetailService.fetchByBillSid(sid); + if (!goods.isEmpty() && goods.size() > 0) { + for (AsBillSettelApplyDetail c : goods) { + SettleGoodsDetailsVo e = new SettleGoodsDetailsVo(); + BeanUtil.copyProperties(c, e); + goodsDetailsVos.add(e); + } + vo.setGoodsDetailsVos(goodsDetailsVos); } - if (null != bill.getSettleVo()) { - SettleVo settleVo = bill.getSettleVo(); - if (StringUtils.isNotBlank(settleVo.getSettleTime())) { - vo.setSettleDate(settleVo.getSettleTime()); + List specs = asBillSettelApplyAitemSpecService.fetchByBillSid(sid); + if (!specs.isEmpty() && specs.size() > 0) { + for (AsBillSettelApplyAitemspec c : specs) { + if (c.getAttachItem().equals("外出费")) { + if (null != c.getPrice()) { + vo.setOutAmount(c.getPrice().toString()); + } + if (StringUtils.isNotBlank(c.getRemarks())) { + vo.setOutRemarks(c.getRemarks()); + } + if (null != c.getCostTotal()) { + vo.setOutCost(c.getCostTotal().toString()); + } + if (null != c.getTaxPrice()) { + vo.setOutKPAmount(c.getTaxPrice().toString()); + } + if (null != c.getPrint()) { + vo.setOutPrint(c.getPrint().toString()); + } + } + if (c.getAttachItem().equals("厂家补助")) { + if (null != c.getPrice()) { + vo.setSubsidyAmount(c.getPrice().toString()); + } + if (StringUtils.isNotBlank(c.getRemarks())) { + vo.setSubsidyRemarks(c.getRemarks()); + } + if (null != c.getCostTotal()) { + vo.setSubsidyCost(c.getCostTotal().toString()); + } + if (null != c.getTaxPrice()) { + vo.setSubsidyKPAmount(c.getTaxPrice().toString()); + } + if (null != c.getPrint()) { + vo.setSubsidyPrint(c.getPrint().toString()); + } + } + if (c.getAttachItem().equals("施救费")) { + if (null != c.getPrice()) { + vo.setRescueAmount(c.getPrice().toString()); + } + if (StringUtils.isNotBlank(c.getRemarks())) { + vo.setRescueRemarks(c.getRemarks()); + } + if (null != c.getCostTotal()) { + vo.setRescueCost(c.getCostTotal().toString()); + } + if (null != c.getTaxPrice()) { + vo.setRescueKPAmount(c.getTaxPrice().toString()); + } + if (null != c.getPrint()) { + vo.setRescuePrint(c.getPrint().toString()); + } + } } } - if (StringUtils.isNotBlank(bill.getCustomerName())) { - vo.setCustomerName(bill.getCustomerName()); + } + + } + + return vo; + } + + public AsBillSettelApplyDetailsVo reverseSettleInit(ReverseSettleInitQuery query) { + AsBillSettelApplyDetailsVo vo = new AsBillSettelApplyDetailsVo(); + AsBusrepairBillDetailsVo data = asBusrepairBillService.fetchDetailsBySid(query.getSid()).getData(); + if (null != data) { + vo.setSourceSid(data.getSid()); + vo.setCustomerSid(data.getCustomerSid()); + vo.setCustomerName(data.getCustomerName()); + vo.setSourceBillNo(data.getBillNo()); + vo.setSourceBillDate(data.getCreateDate()); + if (StringUtils.isNotBlank(data.getWaitorName())) { + vo.setWaitorName(data.getWaitorName()); + } + vo.setBillType(data.getBillType()); + vo.setSubject(data.getSubject()); + vo.setIsGoOut(data.getIsGoOut()); + vo.setIsGoOut2(data.getIsGoOut2()); + BigDecimal yingshouZ = BigDecimal.ZERO; + BigDecimal youhuiZ = BigDecimal.ZERO; + if (StringUtils.isNotBlank(data.getDiscountAmount())) { + vo.setDiscountAmount(data.getDiscountAmount()); + youhuiZ = new BigDecimal(data.getDiscountAmount()); + } + if (StringUtils.isNotBlank(data.getReceivableAmount())) { + vo.setReceivableAmount(data.getReceivableAmount()); + yingshouZ = new BigDecimal(data.getReceivableAmount()); + } + vo.setActualAmount(yingshouZ.subtract(youhuiZ).toString()); + if (StringUtils.isNotBlank(data.getMobile())) { + vo.setMobile(data.getMobile()); + } + if (StringUtils.isNotBlank(data.getVinNo())) { + vo.setVinNo(data.getVinNo()); + } + if (StringUtils.isNotBlank(data.getVehMark())) { + vo.setVehMark(data.getVehMark()); + } + InvoiceVo invoiceVo = data.getInvoiceVo(); + if (null != invoiceVo) { + if (StringUtils.isNotBlank(invoiceVo.getIsInvoicing())) { + vo.setIsInvoicing(invoiceVo.getIsInvoicing()); + } + if (StringUtils.isNotBlank(invoiceVo.getIsInvoicing2())) { + vo.setIsInvoicing2(invoiceVo.getIsInvoicing2()); + } + if (StringUtils.isNotBlank(invoiceVo.getTaxRate())) { + vo.setTaxRate(invoiceVo.getTaxRate()); + } + if (StringUtils.isNotBlank(invoiceVo.getTaxItems2())) { + vo.setTaxItems(invoiceVo.getTaxItems2()); + } + } + if (StringUtils.isNotBlank(data.getOutRemarks())) { + vo.setOutRemarks(data.getOutRemarks()); + } + if (StringUtils.isNotBlank(data.getSubsidyRemarks())) { + vo.setSubsidyRemarks(data.getSubsidyRemarks()); + } + if (StringUtils.isNotBlank(data.getRescueRemarks())) { + vo.setRescueRemarks(data.getRescueRemarks()); + } + BigDecimal costAmount = BigDecimal.ZERO;//成本合计 + BigDecimal profit = BigDecimal.ZERO;//总利润额 + BigDecimal outAmount = BigDecimal.ZERO;//外出费 + BigDecimal subsidyAmount = BigDecimal.ZERO;//厂家补助 + BigDecimal rescueAmount = BigDecimal.ZERO;//施救费 + BigDecimal outKPAmount = BigDecimal.ZERO;//外出费KP + BigDecimal subsidyKPAmount = BigDecimal.ZERO;//厂家补助KP + BigDecimal rescueKPAmount = BigDecimal.ZERO;//施救费KP +// BigDecimal sitemProfit = BigDecimal.ZERO;//维修项目利润 +// BigDecimal goodsProfit = BigDecimal.ZERO;//维修用料利润 +// BigDecimal otherProfit = BigDecimal.ZERO;//附件项目利润 +// BigDecimal addProfit = BigDecimal.ZERO;//其他附加项目利润 + if (StringUtils.isNotBlank(data.getHourAmount())) { + vo.setHourAmount(data.getHourAmount()); + } + if (StringUtils.isNotBlank(data.getGoodsAmount())) { + vo.setGoodsAmount(data.getGoodsAmount()); + } + if (StringUtils.isNotBlank(data.getAddAmount())) { + vo.setAddAmount(data.getAddAmount()); + } + if (StringUtils.isNotBlank(data.getDiscountAmount())) { + vo.setDiscountAmount(data.getDiscountAmount()); + } + if (StringUtils.isNotBlank(data.getOutAmount())) { + vo.setOutAmount(data.getOutAmount()); + outAmount = new BigDecimal(data.getOutAmount()); + vo.setOutPrint(data.getOutAmount()); + } + if (StringUtils.isNotBlank(data.getOutKPAmount())) { + vo.setOutKPAmount(data.getOutKPAmount()); + outKPAmount = new BigDecimal(data.getOutKPAmount()); + } + if (StringUtils.isNotBlank(data.getSubsidyAmount())) { + vo.setSubsidyAmount(data.getSubsidyAmount()); + subsidyAmount = new BigDecimal(data.getSubsidyAmount()); + vo.setSubsidyPrint(data.getSubsidyAmount()); + } + + if (StringUtils.isNotBlank(data.getSubsidyKPAmount())) { + vo.setSubsidyKPAmount(data.getSubsidyKPAmount()); + subsidyKPAmount = new BigDecimal(data.getSubsidyKPAmount()); + } + if (StringUtils.isNotBlank(data.getRescueAmount())) { + vo.setRescueAmount(data.getRescueAmount()); + rescueAmount = new BigDecimal(data.getRescueAmount()); + vo.setRescuePrint(data.getRescueAmount()); + } + if (StringUtils.isNotBlank(data.getRescueKPAmount())) { + vo.setRescueKPAmount(data.getRescueKPAmount()); + rescueKPAmount = new BigDecimal(data.getRescueKPAmount()); + } + List sitemVos = data.getSitemVos(); + if (!sitemVos.isEmpty()) { + List settleSitemVos = new ArrayList<>(); + for (SitemVo s : sitemVos) { + SettleSitemVo v = new SettleSitemVo(); + BeanUtil.copyProperties(s, v); + BigDecimal yingshou = BigDecimal.ZERO; //应收 + BigDecimal youhui = BigDecimal.ZERO; //优惠 + BigDecimal jiesuan = BigDecimal.ZERO; //结算 + BigDecimal chengben = BigDecimal.ZERO; //成本 + BigDecimal lirun = BigDecimal.ZERO; //利润 + if (StringUtils.isNotBlank(s.getAmount())) { + yingshou = new BigDecimal(s.getAmount()); + v.setSitemReceivableAmount(yingshou.toString()); + } + if (StringUtils.isNotBlank(s.getDiscountAmount())) { + youhui = new BigDecimal(s.getDiscountAmount()); } - if (StringUtils.isNotBlank(bill.getMobile())) { - vo.setMobile(bill.getMobile()); + jiesuan = yingshou.subtract(youhui); + v.setSitemSettleAmount(jiesuan.toString()); + if (StringUtils.isNotBlank(s.getCostTotal())) { + chengben = new BigDecimal(s.getCostTotal()); } - if (StringUtils.isNotBlank(bill.getVinNo())) { - vo.setVinNo(bill.getVinNo()); + v.setSitemCost(chengben.toString()); + lirun = jiesuan.subtract(chengben); + v.setSitemPrint(lirun.toString()); + costAmount = costAmount.add(chengben); + profit = profit.add(lirun); + settleSitemVos.add(v); + } + vo.setSitemVos(settleSitemVos); + } + List goodsDetailsVos = data.getGoodsDetailsVos(); + if (!goodsDetailsVos.isEmpty()) { + List goodsList = new ArrayList<>(); + for (GoodsDetailsVo g : goodsDetailsVos) { + SettleGoodsDetailsVo v = new SettleGoodsDetailsVo(); + BeanUtil.copyProperties(g, v, "partsSellers"); + if (StringUtils.isNotBlank(g.getPartsSellers2())) { + v.setPartsSellers(g.getPartsSellers2()); } - if (StringUtils.isNotBlank(bill.getVehMark())) { - vo.setVehMark(bill.getVehMark()); + BigDecimal yingshou = BigDecimal.ZERO; //应收 + BigDecimal youhui = BigDecimal.ZERO; //优惠 + BigDecimal jiesuan = BigDecimal.ZERO; //结算 + BigDecimal chengben = BigDecimal.ZERO; //成本 + BigDecimal chengbenPrice = BigDecimal.ZERO; //成本单价 + BigDecimal lirun = BigDecimal.ZERO; //利润 + BigDecimal count = BigDecimal.ZERO; //数量 + if (StringUtils.isNotBlank(g.getCount())) { + count = new BigDecimal(g.getCount()); } - if (StringUtils.isNotBlank(bill.getCustomerOrg())) { - vo.setCustomerOrg(bill.getCustomerOrg()); + if (StringUtils.isNotBlank(g.getPrice())) { + BigDecimal price = new BigDecimal(g.getPrice()); + yingshou = price.multiply(count); + v.setGoodsReceivableAmount(yingshou.toString()); } - if (!bill.getSitemVos().isEmpty()) { - vo.setSitemVos(bill.getSitemVos()); + if (StringUtils.isNotBlank(g.getDiscountAmount())) { + youhui = new BigDecimal(g.getDiscountAmount()); } - if (!bill.getGoodsDetailsVos().isEmpty()) { - vo.setGoodsDetailsVos(bill.getGoodsDetailsVos()); + jiesuan = yingshou.subtract(youhui); + v.setGoodsSettleAmount(jiesuan.toString()); + //求成本 + if (StringUtils.isNotBlank(g.getInventorySid())) { + String inventorySid = g.getInventorySid(); + WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData(); + if (null != inventory) { + if (null != inventory.getCost()) { + chengbenPrice = inventory.getCost(); + chengben = chengbenPrice.multiply(count); + } + } + } + v.setGoodsCost(chengben.toString()); + lirun = jiesuan.subtract(chengben); + v.setGoodsPrint(lirun.toString()); + costAmount = costAmount.add(chengben); + profit = profit.add(lirun); + goodsList.add(v); + } + vo.setGoodsDetailsVos(goodsList); + } + List aitemVos = data.getAitemVos(); + if (!aitemVos.isEmpty()) { + List aitemVoList = new ArrayList<>(); + for (AitemVo a : aitemVos) { + SettleAitemVo v = new SettleAitemVo(); + BeanUtil.copyProperties(a, v); + BigDecimal yingshou = BigDecimal.ZERO; //应收 + BigDecimal chengben = BigDecimal.ZERO; //成本 + BigDecimal lirun = BigDecimal.ZERO; //利润 + if (StringUtils.isNotBlank(a.getPrice())) { + yingshou = new BigDecimal(a.getPrice()); + v.setAitemReceivableAmount(yingshou.toString()); } - if (!bill.getAitemVos().isEmpty()) { - vo.setAitemVos(bill.getAitemVos()); + //求成本 + if (StringUtils.isNotBlank(a.getAitemSid())) { + String aitemsid = a.getAitemSid(); + AsServiceAttachItem attachItem = asServiceAttachItemService.fetchBySid(aitemsid); + if (null != attachItem) { + if (null != attachItem.getCost()) { + chengben = attachItem.getCost(); + } + } } + v.setAitemCost(chengben.toString()); + lirun = yingshou.subtract(chengben); + v.setAitemPrint(lirun.toString()); + costAmount = costAmount.add(chengben); + profit = profit.add(lirun); + aitemVoList.add(v); } + vo.setAitemVos(aitemVoList); + } + vo.setOutCost("0"); + vo.setSubsidyCost("0"); + vo.setRescueCost("0"); + profit = profit.add(outAmount); + profit = profit.add(subsidyAmount); + profit = profit.add(rescueAmount); +// vo.setProfit(profit.toString()); +// vo.setCostAmount(costAmount.toString()); + List fileName = data.getFileName(); + if (!fileName.isEmpty()) { + vo.setFileName(fileName); + List files = new ArrayList<>(); + for (FileUrlQuery fileUrlQuery : fileName) { + files.add(fileUrlQuery.getUrl()); + } + vo.setFileName2(files); } } - return vo; - } - - public AsBusrepairBillReverseSettleDetailsVo reverseSettleInit(ReverseSettleInitQuery query) { - AsBusrepairBillReverseSettleDetailsVo vo = new AsBusrepairBillReverseSettleDetailsVo(); - String sourceSid = query.getSid(); - String orgPath = query.getOrgPath(); - String userSid = query.getUserSid(); - vo.setApplyDate(DateUtil.formatDate(new Date())); - vo.setSourceSid(sourceSid); - vo.setUseSid(userSid); - vo.setOrgPath(orgPath); //根据用户查询发起人、发起部门、发起日期为当前日期 String deptName = ""; String deptSid = ""; String useOrgSid = ""; + String orgPath = query.getOrgPath(); + String userSid = query.getUserSid(); if (StringUtils.isNotBlank(orgPath)) { List split = Arrays.asList(orgPath.split("/")); if (split.size() > 1) { @@ -347,78 +686,16 @@ public class AsBusrepairBillReverseSettleService extends MybatisBaseService organizationResultBean = sysOrganizationFeign.fetchBySid(useOrgSid); if (organizationResultBean.getData() != null) { vo.setUseOrgName(organizationResultBean.getData().getName()); - vo.setUseOrgSid(useOrgSid); } //根据用户sid查询人员姓名 ResultBean userVoResultBean = sysUserFeign.fetchBySid(userSid); - if (userVoResultBean.getSuccess()) { - vo.setCreateByName(userVoResultBean.getData().getName()); - } vo.setDept(deptName); vo.setDeptSid(deptSid); - AsBusrepairBillDetailsVo bill = asBusrepairBillService.fetchDetailsBySid(sourceSid).getData(); - if (null != bill) { - BeanUtil.copyProperties(bill,vo,"id","sid","billNo","useOrgSid","createBySid","createOrgSid","orgPath"); - if (bill.getInvoiceVo() != null) { - if (StringUtils.isNotBlank(bill.getInvoiceVo().getTaxRate())) { - vo.setTaxRate(bill.getInvoiceVo().getTaxRate()); - } - } - if (StringUtils.isNotBlank(bill.getDiscountAmount())) { - vo.setDiscountAmount(bill.getDiscountAmount()); - } - if (StringUtils.isNotBlank(bill.getCoupon())) { - vo.setCoupon(bill.getCoupon()); - } - if (StringUtils.isNotBlank(bill.getScoreDeduct())) { - vo.setScoreDeduct(bill.getScoreDeduct()); - } - if (StringUtils.isNotBlank(bill.getBillNo())) { - vo.setSourceBillNo(bill.getBillNo()); - } - if (StringUtils.isNotBlank(bill.getCreateDate())) { - vo.setSourceBillDate(bill.getCreateDate()); - } - if (StringUtils.isNotBlank(bill.getWaitorName())) { - vo.setWaitorName(bill.getWaitorName()); - } - if (StringUtils.isNotBlank(bill.getBillType())) { - vo.setBillType(bill.getBillType()); - } - if (StringUtils.isNotBlank(bill.getSubject())) { - vo.setSubject(bill.getSubject()); - } - if (null != bill.getSettleVo()) { - SettleVo settleVo = bill.getSettleVo(); - if (StringUtils.isNotBlank(settleVo.getSettleTime())) { - vo.setSettleDate(settleVo.getSettleTime()); - } - } - if (StringUtils.isNotBlank(bill.getCustomerName())) { - vo.setCustomerName(bill.getCustomerName()); - } - if (StringUtils.isNotBlank(bill.getMobile())) { - vo.setMobile(bill.getMobile()); - } - if (StringUtils.isNotBlank(bill.getVinNo())) { - vo.setVinNo(bill.getVinNo()); - } - if (StringUtils.isNotBlank(bill.getVehMark())) { - vo.setVehMark(bill.getVehMark()); - } - if (StringUtils.isNotBlank(bill.getCustomerOrg())) { - vo.setCustomerOrg(bill.getCustomerOrg()); - } - if (!bill.getSitemVos().isEmpty()) { - vo.setSitemVos(bill.getSitemVos()); - } - if (!bill.getGoodsDetailsVos().isEmpty()) { - vo.setGoodsDetailsVos(bill.getGoodsDetailsVos()); - } - if (!bill.getAitemVos().isEmpty()) { - vo.setAitemVos(bill.getAitemVos()); - } - } + vo.setCreateByName(userVoResultBean.getData().getName()); + vo.setApplyDate(DateUtil.today()); + vo.setOrgPath(orgPath); + vo.setCreateBySid(userSid); + vo.setUseOrgSid(useOrgSid); return vo; } @@ -452,24 +729,154 @@ public class AsBusrepairBillReverseSettleService extends MybatisBaseService 0) { + List aitemVos = dto.getAitemVos(); + for (SettleAitemVo aitemVo : aitemVos) { + AsBillSettelApplyAitem a = new AsBillSettelApplyAitem(); + BeanUtil.copyProperties(aitemVo, a, "sid"); + a.setMainSid(sid); + asBillSettelApplyAitemService.insert(a); + if (StringUtils.isNotBlank(aitemVo.getAitemCost())) { + costAll = costAll.add(new BigDecimal(aitemVo.getAitemCost())); + } + if (StringUtils.isNotBlank(aitemVo.getAitemPrint())) { + printAll = printAll.add(new BigDecimal(aitemVo.getAitemPrint())); + } + } + } + if (!dto.getSitemVos().isEmpty() && dto.getSitemVos().size() > 0) { + List sitemVos = dto.getSitemVos(); + for (SettleSitemVo sitemVo : sitemVos) { + AsBillSettelApplySitem a = new AsBillSettelApplySitem(); + BeanUtil.copyProperties(sitemVo, a, "sid"); + a.setMainSid(sid); + asBillSettelApplySitemService.insert(a); + if (StringUtils.isNotBlank(sitemVo.getSitemCost())) { + costAll = costAll.add(new BigDecimal(sitemVo.getSitemCost())); + } + if (StringUtils.isNotBlank(sitemVo.getSitemPrint())) { + printAll = printAll.add(new BigDecimal(sitemVo.getSitemPrint())); + } + } + } + if (!dto.getGoodsDetailsVos().isEmpty() && dto.getGoodsDetailsVos().size() > 0) { + List goodsDetailsVos = dto.getGoodsDetailsVos(); + for (SettleGoodsDetailsVo g : goodsDetailsVos) { + AsBillSettelApplyDetail d = new AsBillSettelApplyDetail(); + BeanUtil.copyProperties(g, d, "sid"); + d.setMainSid(sid); + asBillSettelApplyDetailService.insert(d); + if (StringUtils.isNotBlank(g.getGoodsCost())) { + costAll = costAll.add(new BigDecimal(g.getGoodsCost())); + } + if (StringUtils.isNotBlank(g.getGoodsPrint())) { + printAll = printAll.add(new BigDecimal(g.getGoodsPrint())); + } + } + } + if (StringUtils.isNotBlank(dto.getOutAmount())) { + BigDecimal outAmount = new BigDecimal(dto.getOutAmount()); + if (outAmount.compareTo(BigDecimal.ZERO) > 0) { + AsBillSettelApplyAitemspec s = new AsBillSettelApplyAitemspec(); + s.setMainSid(sid); + s.setAttachItem("外出费"); + s.setPrice(outAmount); + if (StringUtils.isNotBlank(dto.getOutKPAmount())) { + s.setTaxPrice(new BigDecimal(dto.getOutKPAmount())); + } + if (StringUtils.isNotBlank(dto.getOutPrint())) { + s.setPrint(new BigDecimal(dto.getOutPrint())); + printAll = printAll.add(new BigDecimal(dto.getOutPrint())); + } + if (StringUtils.isNotBlank(dto.getOutCost())) { + s.setCostTotal(new BigDecimal(dto.getOutCost())); + costAll = costAll.add(new BigDecimal(dto.getOutCost())); + } + if (StringUtils.isNotBlank(dto.getOutRemarks())) { + s.setRemarks(dto.getOutRemarks()); + } + asBillSettelApplyAitemSpecService.insert(s); + } + } + if (StringUtils.isNotBlank(dto.getSubsidyAmount())) { + BigDecimal amount = new BigDecimal(dto.getSubsidyAmount()); + if (amount.compareTo(BigDecimal.ZERO) > 0) { + AsBillSettelApplyAitemspec s = new AsBillSettelApplyAitemspec(); + s.setMainSid(sid); + s.setAttachItem("厂家补助"); + s.setPrice(amount); + if (StringUtils.isNotBlank(dto.getSubsidyKPAmount())) { + s.setTaxPrice(new BigDecimal(dto.getSubsidyKPAmount())); + } + if (StringUtils.isNotBlank(dto.getSubsidyPrint())) { + s.setPrint(new BigDecimal(dto.getSubsidyPrint())); + printAll = printAll.add(new BigDecimal(dto.getSubsidyPrint())); + } + if (StringUtils.isNotBlank(dto.getSubsidyCost())) { + s.setCostTotal(new BigDecimal(dto.getSubsidyCost())); + costAll = costAll.add(new BigDecimal(dto.getSubsidyCost())); + } + if (StringUtils.isNotBlank(dto.getSubsidyRemarks())) { + s.setRemarks(dto.getSubsidyRemarks()); + } + asBillSettelApplyAitemSpecService.insert(s); + } + } + if (StringUtils.isNotBlank(dto.getRescueAmount())) { + BigDecimal amount = new BigDecimal(dto.getRescueAmount()); + if (amount.compareTo(BigDecimal.ZERO) > 0) { + AsBillSettelApplyAitemspec s = new AsBillSettelApplyAitemspec(); + s.setMainSid(sid); + s.setAttachItem("施救费"); + s.setPrice(amount); + if (StringUtils.isNotBlank(dto.getRescueKPAmount())) { + s.setTaxPrice(new BigDecimal(dto.getRescueKPAmount())); + } + if (StringUtils.isNotBlank(dto.getRescuePrint())) { + s.setPrint(new BigDecimal(dto.getRescuePrint())); + printAll = printAll.add(new BigDecimal(dto.getRescuePrint())); + } + if (StringUtils.isNotBlank(dto.getRescueCost())) { + s.setCostTotal(new BigDecimal(dto.getRescueCost())); + costAll = costAll.add(new BigDecimal(dto.getRescueCost())); + } + if (StringUtils.isNotBlank(dto.getRescueRemarks())) { + s.setRemarks(dto.getRescueRemarks()); + } + asBillSettelApplyAitemSpecService.insert(s); + } + } + AsBusrepairBillReverseSettle settelApply = fetchBySid(sid); + if (null != settelApply) { + settelApply.setCostAmount(costAll); + settelApply.setProfit(printAll); + baseMapper.updateById(settelApply); } return sid; } @@ -923,4 +1330,60 @@ public class AsBusrepairBillReverseSettleService extends MybatisBaseService busrepairListPage(PagerQuery pq) { + AsChoseBusrepairbillQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getMenuUrl())) { + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(query.getOrgPath()); + privilegeQuery.setMenuUrl(query.getMenuUrl()); + privilegeQuery.setUserSid(query.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevelPath(privilegeQuery); + if (null != defaultIdReltBean.getData()) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + PrivilegeVo privilegeVo = defaultIdReltBean.getData(); + if ("5".equals(privilegeVo.getOrgLevelKey())) { + qw.eq("b.createBySid", privilegeVo.getLevelPath()); + } else { + qw.eq("b.orgSidPath", privilegeVo.getLevelPath()); + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("b.billNo", query.getBillNo()); + } + if (StringUtils.isNotBlank(query.getBillType())) { + qw.like("b.billType", query.getBillType()); + } + if (StringUtils.isNotBlank(query.getSubject())) { + qw.like("b.`subject`", query.getSubject()); + } + if (StringUtils.isNotBlank(query.getCustomerName())) { + qw.like("b.customerName", query.getCustomerName()); + } + if (StringUtils.isNotBlank(query.getVehMark())) { + qw.like("v.vehMark", query.getVehMark()); + } + qw.eq("b.nodeCode",6); + qw.apply("(b.`subject` = '保内' OR (b.`subject` = '保外' and b.settleState = '0'))"); + String startDate = query.getEntryTimeStart(); + String endDate = query.getEntryTimeEnd(); + qw.apply(StringUtils.isNotEmpty(startDate), "date_format (b.entryTime,'%Y-%m-%d') >= date_format('" + startDate + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(endDate), "date_format (b.entryTime,'%Y-%m-%d') <= date_format('" + endDate + "','%Y-%m-%d')" + ); + String closeDateStart = query.getSettleDateStart(); + String closeDateEnd = query.getSettleDateEnd(); + qw.apply(StringUtils.isNotEmpty(closeDateStart), "date_format (s.settleTime,'%Y-%m-%d') >= date_format('" + closeDateStart + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(closeDateEnd), "date_format (s.settleTime,'%Y-%m-%') <= date_format('" + closeDateEnd + "','%Y-%m-%d')" + ); + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.busrepairListPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java index 45fa6d1300..522b9f75a0 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/flowable/flow/ProcDefEnum.java @@ -17,6 +17,7 @@ public enum ProcDefEnum { ASBWINVOICEAPPLY("工单开票申请", "process_ldw1bs5t:1:14197536"), ASTECHTITLEAPPLY("维修技师职称备案申请", "process_kl8rqdjf:1:14197604"), BILLSETTLEAPPLY("工单结算申请", "process_q2p7s99n:2:14900004"), + SALESBILLSETTLEAPPLY("商品配件销售结算申请", "process_q2p7s958752:1:16062504"), ASHOSESUPPAPPLY("工时提成抵顶配件费用申请", "process_z2d1n43e:1:14197592"), ASSERVICEITEMAPPLY("维修项目备案申请", "process_mbiz75zg:1:14197572"), ASSERVICEACCOMMAPPLY("配件销售提成备案申请", "process_89i56wrn:1:14197576"), diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/privilege/PrivilegeVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/privilege/PrivilegeVo.java new file mode 100644 index 0000000000..eecce3cab4 --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/privilege/PrivilegeVo.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.as.feign.portal.privilege; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/11/22 11:04 + */ +@Data +public class PrivilegeVo { + + @ApiModelProperty("权限查询路径") + private String levelPath; + @ApiModelProperty("权限等级") + private String orgLevelKey; + + +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysuser/SysUserFeign.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysuser/SysUserFeign.java index 02ac2678f8..8af03c9089 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysuser/SysUserFeign.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/portal/sysuser/SysUserFeign.java @@ -1,6 +1,7 @@ package com.yxt.anrui.as.feign.portal.sysuser; import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery; +import com.yxt.anrui.as.feign.portal.privilege.PrivilegeVo; import com.yxt.common.core.result.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -24,4 +25,9 @@ public interface SysUserFeign { @ApiOperation("根据sid获取一条记录") @GetMapping("/fetchBySid/{sid}") public ResultBean fetchBySid(@PathVariable("sid") String sid); + + @ApiOperation(value = "查询角色权限的层级获取权限路径") + @PostMapping(value = "/selectPrivilegeLevelPath") + ResultBean selectPrivilegeLevelPath(@RequestBody PrivilegeQuery query); + } diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsAttachitemVo.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsAttachitemVo.java index 55f5c4c304..7e5d902022 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsAttachitemVo.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsAttachitemVo.java @@ -11,7 +11,7 @@ import lombok.Data; @Data public class SmsAttachitemVo { @ApiModelProperty("附加项目sid") - private String aitemsid; + private String aitemSid; @ApiModelProperty("附加项目名称") private String aitemName; @ApiModelProperty("销售价") diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsCompleteDto.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsCompleteDto.java new file mode 100644 index 0000000000..1cd542698f --- /dev/null +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsCompleteDto.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.as.feign.sms.smssalesbill; + + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SmsCompleteDto { + + /** + * 结算金额 + */ + private BigDecimal settleAmount; + /** + * 材料费 + */ + private BigDecimal goodsAmount; + /** + * 附加费 + */ + private BigDecimal addAmount; + + private String sid; + +} diff --git a/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsSalesBillFeign.java b/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsSalesBillFeign.java index 5e0f7cf95e..e1d0af1f33 100644 --- a/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsSalesBillFeign.java +++ b/yxt-as/src/main/java/com/yxt/anrui/as/feign/sms/smssalesbill/SmsSalesBillFeign.java @@ -5,9 +5,7 @@ import com.yxt.anrui.as.feign.sms.SmsGoods; import com.yxt.common.core.result.ResultBean; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; /** * @author Fan @@ -25,4 +23,9 @@ public interface SmsSalesBillFeign { @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid/{sid}") public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); + + + @ApiOperation("配件销售结算") + @PostMapping("/smsBillSettle") + public ResultBean smsBillSettle(@RequestBody SmsCompleteDto dto); } diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/apiadmin/SmsSalesBillRest.java b/yxt-sms-biz/src/main/java/com/yxt/sms/apiadmin/SmsSalesBillRest.java index 7500ba93e5..9ffa120bff 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/apiadmin/SmsSalesBillRest.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/apiadmin/SmsSalesBillRest.java @@ -157,6 +157,12 @@ public class SmsSalesBillRest { return smsSalesBillService.printSmsBill(query); } + @ApiOperation("配件销售结算") + @PostMapping("/smsBillSettle") + public ResultBean smsBillSettle(@RequestBody SmsCompleteDto dto) { + return smsSalesBillService.smsBillSettle(dto); + } + @ApiOperation("根据sid批量删除") @DeleteMapping("/delBySids") public ResultBean delBySids(@RequestBody String[] sids) { diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsCompleteDto.java b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsCompleteDto.java new file mode 100644 index 0000000000..88d77e2d8f --- /dev/null +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsCompleteDto.java @@ -0,0 +1,26 @@ +package com.yxt.sms.biz.smssalesbill; + + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class SmsCompleteDto { + + /** + * 结算金额 + */ + private BigDecimal settleAmount; + /** + * 材料费 + */ + private BigDecimal goodsAmount; + /** + * 附加费 + */ + private BigDecimal addAmount; + + private String sid; + +} diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBill.java b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBill.java index 602b2a1be1..f0856517c0 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBill.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBill.java @@ -108,4 +108,6 @@ public class SmsSalesBill extends BaseEntity { private BigDecimal addAmount; @ApiModelProperty("结算时间") private String settleTime; + @ApiModelProperty("结算金额") + private BigDecimal settleAmount; } diff --git a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java index 8c74101e18..151ca76c45 100644 --- a/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java +++ b/yxt-sms-biz/src/main/java/com/yxt/sms/biz/smssalesbill/SmsSalesBillService.java @@ -445,13 +445,13 @@ public class SmsSalesBillService extends MybatisBaseService billDetailList = smsSalesBillDetailService.fetchByMainSid(dto.getSid()); + if (!billDetailList.isEmpty()) { + for (SmsSalesBillDetail salesBillDetail : billDetailList) { + Map map = new HashMap<>(); + //取商品id 和 需要扣除数量 + String goodsID = salesBillDetail.getGoodsID(); + BigDecimal count = salesBillDetail.getCount(); + List data = wmsInventoryFeign.getListByGoodsID(goodsID).getData(); + if (!data.isEmpty()) { + for (WmsInventory inventory : data) { + if (count.compareTo(BigDecimal.ZERO) > 0) { + BigDecimal inventoryCount = inventory.getCount(); + if (inventoryCount.compareTo(count) >= 0) { + map.put(inventory.getSid(), count); + count = count.subtract(inventory.getCount()); + continue; + } + map.put(inventory.getSid(), inventory.getCount()); + count = count.subtract(inventory.getCount()); + } + } + for (Map.Entry entry : map.entrySet()) { + String inventorySid = entry.getKey(); + BigDecimal inventoryCount = entry.getValue(); + WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto(); + WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData(); + BigDecimal wiCount = inventory.getCount(); + BigDecimal subtractCount = wiCount.subtract(inventoryCount); + recordDto.setInventorySid(inventorySid); + recordDto.setCreateBySid(smsSalesBill.getCreateBySid()); + recordDto.setUseOrgSid(smsSalesBill.getDeptSid()); + recordDto.setCreateOrgSid(smsSalesBill.getCreateOrgSid()); + recordDto.setHandlerSid(smsSalesBill.getCreateBySid()); + recordDto.setHandlerName(smsSalesBill.getCreateByName()); + recordDto.setGoodsID(goodsID); + recordDto.setSourceBillSid(dto.getSid()); + recordDto.setBillNo(smsSalesBill.getBillNo()); + recordDto.setBillType("0"); + recordDto.setBusTypeKey("11"); + recordDto.setBusTypeValue("销售出库"); + BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid"); + recordDto.setCount(inventoryCount.toString()); + recordDto.setCurrentCount(subtractCount.toString()); + wmsInventoryRecordFeign.save(recordDto); + WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); + countQuery.setSid(inventorySid); + countQuery.setCount(inventoryCount); + countQuery.setAddOrReduce(1); + wmsInventoryFeign.updateInventoryCount(countQuery); + } + } + } + } + return rb.success(); + } } diff --git a/yxt-sms-biz/src/main/resources/application.yml b/yxt-sms-biz/src/main/resources/application.yml index bc8f091fc8..3260373dab 100644 --- a/yxt-sms-biz/src/main/resources/application.yml +++ b/yxt-sms-biz/src/main/resources/application.yml @@ -39,7 +39,20 @@ mybatis-plus: cache-enabled: true call-setters-on-nulls: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - +#hystrix的超时时间 +hystrix: + command: + default: + execution: + timeout: + enabled: true + isolation: + thread: + timeoutInMilliseconds: 60000 +#ribbon的超时时间 +ribbon: + ReadTimeout: 60000 + ConnectTimeout: 60000 #rocketmq: # producer: # group: yxt-supervise-gf