From d3a4f243ab71db944598a8667e7c5f336fccccbb Mon Sep 17 00:00:00 2001 From: dimengzhe <251008545@qq.com> Date: Mon, 6 Mar 2023 11:18:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E9=94=80?= =?UTF-8?q?=E5=94=AE=E6=94=AF=E6=8C=81=E9=83=A8=E7=BB=8F=E7=90=86=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E5=90=8E=EF=BC=8C=E7=94=9F=E6=88=90=E5=90=88=E5=90=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=92=8C=E5=BA=94=E6=94=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoncontract/CommonContractFeign.java | 10 + .../CommonContractFeignFallback.java | 10 + .../commoncontract/CommonContractRest.java | 10 + .../commoncontract/CommonContractService.java | 48 +++- .../api/bussalesorder/OrderContractQuery.java | 19 ++ anrui-buscenter/anrui-buscenter-biz/pom.xml | 6 +- .../anrui/buscenter/BusCenterApplication.java | 2 +- .../bussalesorder/BusSalesOrderService.java | 205 ++++++++++++++++++ 8 files changed, 307 insertions(+), 3 deletions(-) create mode 100644 anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/OrderContractQuery.java diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java index c37dcb8494..653e4f90e3 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java @@ -224,4 +224,14 @@ public interface CommonContractFeign { @GetMapping("/getToDoNum") @ResponseBody public ResultBean getToDoNum(@SpringQueryMap CommonToDoNumQuery appToDoNumQuery); + + @ApiOperation("查询合同编号") + @GetMapping("/selectContractNo") + @ResponseBody + ResultBean selectContractNo(@RequestParam("userSid")String userSid,@RequestParam("modelSid")String modelSid); + + @ApiOperation("生成合同") + @PostMapping("/saveContract") + @ResponseBody + ResultBean saveContract(@RequestBody CommonContract commonContract); } \ No newline at end of file diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java index d5ae8db70f..ddcddc9b6b 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java @@ -237,4 +237,14 @@ public class CommonContractFeignFallback implements CommonContractFeign { public ResultBean getToDoNum(CommonToDoNumQuery appToDoNumQuery) { return null; } + + @Override + public ResultBean selectContractNo(String userSid, String modelSid) { + return null; + } + + @Override + public ResultBean saveContract(CommonContract commonContract) { + return null; + } } \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java index eb88c65af5..a1b55141a3 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java @@ -603,4 +603,14 @@ public class CommonContractRest implements CommonContractFeign { public ResultBean getToDoNum(CommonToDoNumQuery appToDoNumQuery) { return commonContractService.getToDoNum(appToDoNumQuery); } + + @Override + public ResultBean selectContractNo(String userSid, String modelSid) { + return commonContractService.selectContractNo(userSid,modelSid); + } + + @Override + public ResultBean saveContract(CommonContract commonContract) { + return commonContractService.saveContract(commonContract); + } } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java index ae1f74b945..1657d5a98d 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java @@ -1891,7 +1891,6 @@ public class CommonContractService extends MybatisBaseService 0) { + //添加合同下载路径 + for (PrintConfirmVo vo : list) { + String str = vo.getDownloadUrl(); + String urlPrefix = docPdfComponent.getPrefixTemplateUrl(); + String uploadPath = docPdfComponent.getUploadTemplateUrl(); + CommonAppendix commonAppendix = new CommonAppendix(); + commonAppendix.setLinkSid(commonContract.getSid()); + commonAppendix.setAttachType(CommonAttachTypeEnum.CONTRACT_UPLOAD.getAttachType()); + String pathLoc = str.replace(urlPrefix, uploadPath); + pathLoc = pathLoc.replace("/", File.separator); + File file = new File(pathLoc); + String size = ""; + if (file != null) { + size = FileUploadComponent.getPrintSize(file.length()); + } + String suffix = str.substring(str.lastIndexOf(".") + 1); // 文件类型 + String fileName = str.substring(str.lastIndexOf("/") + 1, str.lastIndexOf(".")); // 文件名 + commonAppendix.setFileName(vo.getName()); + commonAppendix.setFileType(suffix); + commonAppendix.setFileSize(size); + commonAppendix.setFilePath(str.replace(urlPrefix, "")); + commonAppendix.setRemarks("合同下载"); + commonAppendixService.insert(commonAppendix); + } + } + + } if("2".equals(appOrderDetailsVo.getPayTypeKey())){ return rb.setMsg("贷款合同附件请线下处理").setCode("1000001"); @@ -2564,4 +2598,16 @@ public class CommonContractService extends MybatisBaseService selectContractNo(String userSid, String modelSid) { + ResultBean rb = ResultBean.fireFail(); + String contractNo = getApplyCode(userSid,modelSid); + return rb.success().setData(contractNo); + } + + public ResultBean saveContract(CommonContract commonContract) { + ResultBean rb = ResultBean.fireFail(); + baseMapper.insert(commonContract); + return rb.success(); + } } \ No newline at end of file diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/OrderContractQuery.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/OrderContractQuery.java new file mode 100644 index 0000000000..0c719e01a7 --- /dev/null +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/OrderContractQuery.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.buscenter.api.bussalesorder; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2023/3/6 9:10 + * @Description + */ +@Data +public class OrderContractQuery implements Query { + private static final long serialVersionUID = -424321487107885097L; + @ApiModelProperty("销售订单sid") + private String sid; + @ApiModelProperty("用户sid") + private String userSid; +} diff --git a/anrui-buscenter/anrui-buscenter-biz/pom.xml b/anrui-buscenter/anrui-buscenter-biz/pom.xml index 49e6827af7..1dc37c9f20 100644 --- a/anrui-buscenter/anrui-buscenter-biz/pom.xml +++ b/anrui-buscenter/anrui-buscenter-biz/pom.xml @@ -61,6 +61,11 @@ anrui-fin-api 0.0.1-SNAPSHOT + + anrui-scm-api + com.yxt.anrui.scm + 0.0.1-SNAPSHOT + mysql @@ -134,7 +139,6 @@ true - diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/BusCenterApplication.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/BusCenterApplication.java index 3b6f2b253e..7b47105bd4 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/BusCenterApplication.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/BusCenterApplication.java @@ -16,7 +16,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; }) @EnableScheduling @EnableDiscoveryClient -@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm", "com.yxt.anrui.base", "com.yxt.anrui.riskcenter","com.yxt.anrui.flowable","com.yxt.messagecenter","com.yxt.anrui.fin"}) +@EnableFeignClients(basePackages = {"com.yxt.anrui.portal", "com.yxt.anrui.crm", "com.yxt.anrui.base", "com.yxt.anrui.riskcenter","com.yxt.anrui.flowable","com.yxt.messagecenter","com.yxt.anrui.fin","com.yxt.anrui.scm"}) public class BusCenterApplication { public static void main(String[] args) { diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java index 8c3d14518a..e3f9660c8d 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java @@ -55,6 +55,7 @@ import com.yxt.anrui.base.api.commoncontract.CommonContractBuscenterVo; import com.yxt.anrui.base.api.commoncontract.CommonContractFeign; import com.yxt.anrui.base.api.commoncontract.CommonContractVo; import com.yxt.anrui.base.common.enums.BillTypeEnum; +import com.yxt.anrui.base.common.enums.CommonContractEnum; import com.yxt.anrui.base.common.enums.VehicleState; import com.yxt.anrui.base.common.enums.VehicleStateTempOrLast; import com.yxt.anrui.base.common.utils.Rule; @@ -117,6 +118,8 @@ import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; import com.yxt.anrui.crm.api.crmvehicledemand.CrmOrderVo; import com.yxt.anrui.crm.api.crmvehicledemand.CrmVehicleDemandOrderVo; import com.yxt.anrui.crm.api.crmvehicledemand.CrmVehicledemandFeign; +import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign; +import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.UnCollectionDto; import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; @@ -135,6 +138,8 @@ import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; import com.yxt.anrui.portal.api.sysuser.app.AppUserOrgInfoVo; import com.yxt.anrui.portal.config.DictCommonType; +import com.yxt.anrui.scm.api.scmwarehouse.ScmWarehouseFeign; +import com.yxt.anrui.scm.api.scmwarehouse.ScmWarehouseVo; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.DateUtils; @@ -242,6 +247,10 @@ public class BusSalesOrderService extends MybatisBaseService resultBean = getSaleOrderDetails(sid); + AppOrderDetailsVo appOrderDetailsVo = resultBean.getData(); + //查询销售订单的车型信息 + AppOrderModelInfoVo appOrderModelInfoVo = appOrderDetailsVo.getModelInfo(); + AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo(); + AppOrderDepositInfoVo depositInfo = appOrderDetailsVo.getDepositInfo(); + String modelSid = appOrderModelInfoVo.getModelSid(); + String finalContractNo = commonContractFeign.selectContractNo(userSid,modelSid).getData(); + //甲方 + String createOrgName = appOrderDetailsVo.getSalesOrg(); + //乙方 + String customerName = appOrderDetailsVo.getName(); + //联系电话 + String mobile = appOrderDetailsVo.getPhone(); + //车辆交付地点 + //根据存放地点查询 + ScmWarehouseVo scmWarehouseVo = scmWarehouseFeign.fetchBySid(priceInfo.getPlannedPickUpLocationKey()).getData(); + String finalAddress = ""; + if(scmWarehouseVo != null){ + finalAddress = scmWarehouseVo.getWarehouseAttribute(); + } + String depositTotal = depositInfo.getDepositTotal(); + //查询台数 + String num = priceInfo.getNumber(); + //单台成交价 + String transactionPrice = priceInfo.getSingleFinalPrice(); + //新增合同信息 + CommonContract commonContract = new CommonContract(); + //合同编号 + commonContract.setContractNo(finalContractNo); + //合同类型 + if (BusSalesOrderConstantUtils.TypeEnum.EXISTING_CAR.getRemarks().equals(appOrderDetailsVo.getOrderType())) { + commonContract.setContractTypeKey(CommonContractEnum.contractType.XC_CONTRACT.getCode()); + commonContract.setContractType(CommonContractEnum.contractType.XC_CONTRACT.getRemarks()); + } else { + commonContract.setContractTypeKey(CommonContractEnum.contractType.DC_CONTRACT.getCode()); + commonContract.setContractType(CommonContractEnum.contractType.DC_CONTRACT.getRemarks()); + } + //客户sid + commonContract.setCustomerSid(appOrderDetailsVo.getCustomerSid()); + //业务员sid、业务员 + commonContract.setStaffSid(appOrderDetailsVo.getStaffSid()); + commonContract.setCreateBySid(appOrderDetailsVo.getUserSid()); + commonContract.setStaffName(appOrderDetailsVo.getSellerName()); + //部门sid + commonContract.setOrgSid(appOrderDetailsVo.getOrgSid()); + //业务表sid + commonContract.setBusSid(sid); + //甲方名称、乙方名称、其他方名称、 + commonContract.setPartyA(createOrgName); + commonContract.setPartyB(customerName); + //签订日期、签订地点 + commonContract.setCreateDate(new Date()); + commonContract.setAddress(finalAddress); + //订金 + commonContract.setDeposit(new BigDecimal(depositTotal)); + //合同金额 + commonContract.setContractAmount(appOrderDetailsVo.getPriceInfo().getTotalPrice()); + //合同附件 + //身份证信息附件 + //车型sid + commonContract.setModelSid(appOrderModelInfoVo.getModelSid()); + //车型名称 + commonContract.setModelName(appOrderModelInfoVo.getModelName()); + commonContract.setConfigSid(appOrderModelInfoVo.getConfigSid()); + //车辆台数 + commonContract.setNum(Integer.valueOf(num).intValue()); + //车辆单价 + commonContract.setPrice(new BigDecimal(transactionPrice)); + //单台订金 + commonContract.setOneDeposit(new BigDecimal(depositInfo.getDeposit())); + commonContract.setCustomerType(appOrderDetailsVo.getCustomerType()); + commonContract.setCustomerTypeKey(appOrderDetailsVo.getCustomerKey()); + commonContractFeign.saveContract(commonContract); + baseMapper.updateContractNoBySid(commonContract.getContractNo(),sid); + saveFinSelect(appOrderDetailsVo,commonContract,userSid); + } + + public void saveFinSelect(AppOrderDetailsVo appOrderDetailsVo,CommonContract commonContract,String userSid){ + AppOrderModelInfoVo appOrderModelInfoVo = appOrderDetailsVo.getModelInfo(); + AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo(); + AppOrderDepositInfoVo depositInfo = appOrderDetailsVo.getDepositInfo(); + //查询销售订单的单台订金与单台成交价是否相等,若不相等,则推送车款为成交价减去订金的,推送订金的为单台订金的 + String singleFinalPrice = priceInfo.getSingleFinalPrice(); + String deposit = depositInfo.getDeposit(); + //查询台数 + String num = priceInfo.getNumber(); + //单台成交价 + String transactionPrice = priceInfo.getSingleFinalPrice(); + //单台成交价与单台订金相等 + if (new BigDecimal(singleFinalPrice).compareTo(new BigDecimal(deposit)) != 0) {//推送车款 + String money = new BigDecimal(singleFinalPrice).subtract(new BigDecimal(deposit)).toString(); + List vinList = appOrderModelInfoVo.getVinListsVos(); + for (int i = 0; i < vinList.size(); i++) { + UnCollectionDto unCollectionDto = new UnCollectionDto(); + //合同sid + unCollectionDto.setContractSid(commonContract.getSid()); + //合同编号 + unCollectionDto.setContractNo(commonContract.getContractNo()); + //客户名称 + unCollectionDto.setCustomerName(appOrderDetailsVo.getName()); + //客户sid + unCollectionDto.setCustomerSid(appOrderDetailsVo.getCustomerSid()); + //客户类型 + unCollectionDto.setCustomerClass(appOrderDetailsVo.getCustomerKey()); + //客户类型 + unCollectionDto.setCustomerClassKey(appOrderDetailsVo.getCustomerType()); + //客户头像 + unCollectionDto.setCustomerImage(appOrderDetailsVo.getCustomerImage()); + unCollectionDto.setReceivablesName("车款"); + unCollectionDto.setCustomerPhone(appOrderDetailsVo.getPhone()); + unCollectionDto.setUseOrgSid(appOrderDetailsVo.getUseOrgSid()); + unCollectionDto.setVinNo(vinList.get(i).getVinNo()); + unCollectionDto.setCurrentReceivableMoney(money); + unCollectionDto.setUserSid(userSid); + unCollectionDto.setReveivableMoney(money); + unCollectionDto.setBusVinSid(vinList.get(i).getSid()); + unCollectionDto.setPayType(appOrderDetailsVo.getPayType()); + unCollectionDto.setPayTypeKey(appOrderDetailsVo.getPayTypeKey()); + unCollectionDto.setPurchaseSystemName(appOrderDetailsVo.getPurchaseSystemName()); + unCollectionDto.setPurchaseSystemSid(appOrderDetailsVo.getPurchaseSystemSid()); + finUncollectedDetailedFeign.saveUnCollection(unCollectionDto); + } + } + //添加推送至款项确认的应收未收明细中 + List vinList = appOrderModelInfoVo.getVinListsVos(); + //更新销售订单的临时号 + if("2".equals(appOrderDetailsVo.getPayTypeKey())){//贷款 + for(int i = 0; i < vinList.size(); i++){ + //销售订单中车辆表的sid + String salesOrderVinSid = vinList.get(i).getSid(); + String temporaryNum = String.format("%02d", i + 1); + String temporaryNo = commonContract.getContractNo()+temporaryNum; + //更新临时号 + ResultBean busSalesOrderResultBean = busSalesOrderVehicleService.updateTemporaryNo(salesOrderVinSid,temporaryNo); + } + } + //查询是否是结转金额,如果是,则订金金额为补交金额/台数。若为现金则为单台订金 + String key = depositInfo.getDepositTypeKey(); + BigDecimal bigDecimalKeyAll = new BigDecimal("0"); + if ("02".equals(key)) { + String makeUpAll = depositInfo.getMakeUpDeposit(); + if (makeUpAll != null) { + bigDecimalKeyAll = bigDecimalKeyAll.add(new BigDecimal(makeUpAll).divide(new BigDecimal(num))); + } + } else { + bigDecimalKeyAll = bigDecimalKeyAll.add(new BigDecimal(depositInfo.getDeposit())); + } + if (bigDecimalKeyAll.compareTo(BigDecimal.ZERO) != 0) { + for (int i = 0; i < vinList.size(); i++) { + UnCollectionDto unCollectionDto = new UnCollectionDto(); + //合同sid + unCollectionDto.setContractSid(commonContract.getSid()); + //合同编号 + unCollectionDto.setContractNo(commonContract.getContractNo()); + //客户名称 + unCollectionDto.setCustomerName(appOrderDetailsVo.getName()); + //客户sid + unCollectionDto.setCustomerSid(appOrderDetailsVo.getCustomerSid()); + //客户类型 + unCollectionDto.setCustomerClass(appOrderDetailsVo.getCustomerKey()); + //客户类型 + unCollectionDto.setCustomerClassKey(appOrderDetailsVo.getCustomerType()); + //客户头像 + unCollectionDto.setCustomerImage(appOrderDetailsVo.getCustomerImage()); + unCollectionDto.setReceivablesName("订金"); + unCollectionDto.setCustomerPhone(appOrderDetailsVo.getPhone()); + unCollectionDto.setUseOrgSid(appOrderDetailsVo.getUseOrgSid()); + unCollectionDto.setVinNo(vinList.get(i).getVinNo()); + unCollectionDto.setCurrentReceivableMoney(bigDecimalKeyAll.toString()); + unCollectionDto.setUserSid(userSid); + unCollectionDto.setReveivableMoney(depositInfo.getDeposit()); + unCollectionDto.setBusVinSid(vinList.get(i).getSid()); + unCollectionDto.setPayType(appOrderDetailsVo.getPayType()); + unCollectionDto.setPayTypeKey(appOrderDetailsVo.getPayTypeKey()); + unCollectionDto.setPurchaseSystemName(appOrderDetailsVo.getPurchaseSystemName()); + unCollectionDto.setPurchaseSystemSid(appOrderDetailsVo.getPurchaseSystemSid()); + finUncollectedDetailedFeign.saveUnCollection(unCollectionDto); + } + } + } + /** * 办理 * @@ -3250,6 +3444,7 @@ public class BusSalesOrderService extends MybatisBaseService