Browse Source

销售订单销售支持部经理审批后,生成合同数据和应收数据

master
dimengzhe 2 years ago
parent
commit
d3a4f243ab
  1. 10
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java
  2. 10
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java
  3. 10
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java
  4. 48
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java
  5. 19
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/OrderContractQuery.java
  6. 6
      anrui-buscenter/anrui-buscenter-biz/pom.xml
  7. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/BusCenterApplication.java
  8. 205
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java

10
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<String> getToDoNum(@SpringQueryMap CommonToDoNumQuery appToDoNumQuery);
@ApiOperation("查询合同编号")
@GetMapping("/selectContractNo")
@ResponseBody
ResultBean<String> selectContractNo(@RequestParam("userSid")String userSid,@RequestParam("modelSid")String modelSid);
@ApiOperation("生成合同")
@PostMapping("/saveContract")
@ResponseBody
ResultBean saveContract(@RequestBody CommonContract commonContract);
}

10
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<String> getToDoNum(CommonToDoNumQuery appToDoNumQuery) {
return null;
}
@Override
public ResultBean<String> selectContractNo(String userSid, String modelSid) {
return null;
}
@Override
public ResultBean saveContract(CommonContract commonContract) {
return null;
}
}

10
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<String> getToDoNum(CommonToDoNumQuery appToDoNumQuery) {
return commonContractService.getToDoNum(appToDoNumQuery);
}
@Override
public ResultBean<String> selectContractNo(String userSid, String modelSid) {
return commonContractService.selectContractNo(userSid,modelSid);
}
@Override
public ResultBean saveContract(CommonContract commonContract) {
return commonContractService.saveContract(commonContract);
}
}

48
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<CommonContractMapp
}else{
contractNo = commonContractBuscenterVo.getContractNo();
}
// String contractNo = getApplyCode(dto.getUserSid(), appOrderModelInfoVo.getModelSid());
map.put("contractNo", contractNo);
String url = "";
PrintConfirmVo printConfirmVo = null;
@ -2192,6 +2191,41 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
}
return commonContract.getSid();
});
}else{
CommonContract commonContract = fetchBySid(commonContractBuscenterVo.getSid());
String finalUrl = url;
String finalUrlAll = urlAll;
commonContract.setCommonContractUrl(finalUrl);
commonContract.setContractUrlAll(finalUrlAll);
commonAppendixService.delFilesByLinkSidAndAttachType(commonContract.getSid(),CommonAttachTypeEnum.CONTRACT_UPLOAD.getAttachType());
if (list.size() > 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<CommonContractMapp
int count = baseMapper.getToDoNum(userSid);
return rb.success().setData(String.valueOf(count));
}
public ResultBean<String> selectContractNo(String userSid, String modelSid) {
ResultBean<String> 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();
}
}

19
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;
}

6
anrui-buscenter/anrui-buscenter-biz/pom.xml

@ -61,6 +61,11 @@
<artifactId>anrui-fin-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>anrui-scm-api</artifactId>
<groupId>com.yxt.anrui.scm</groupId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
@ -134,7 +139,6 @@
<optional>true</optional>
</dependency>
</dependencies>
<build>

2
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) {

205
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<BusSalesOrderMapper
private BaseVehicleModelFeign baseVehicleModelFeign;
@Autowired
private BaseMiddlemanFeign baseMiddlemanFeign;
@Autowired
private ScmWarehouseFeign scmWarehouseFeign;
@Autowired
private FinUncollectedReceivablesDetailedFeign finUncollectedDetailedFeign;
/**
@ -3231,6 +3240,191 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
return r;
}
public void saveContract(OrderContractQuery orderContractQuery){
String sid = orderContractQuery.getSid();
String userSid = orderContractQuery.getUserSid();
ResultBean<AppOrderDetailsVo> 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<VinListsVo> 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<VinListsVo> 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<BusSalesOrderMapper
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//极光推送
if (!"Event_end".equals(resultBean.getData().getTaskDefKey())) {
//极光推送
@ -3812,6 +4007,14 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
String salesOrderSid = orderFlowableQuery.getBusinessSid();
updatePurchaseSystem(purchaseSystemName, purchaseSystemSid, salesOrderSid);
}
//销售订单在销售支持部经理审核后,自动生成应收,此时也可以生成合同,生成合同的同时生成合同审核待办。
if("Activity_10w0sy1".equals(bv.getTaskDefKey())){
//保存合同
OrderContractQuery orderContractQuery = new OrderContractQuery();
orderContractQuery.setSid(bv.getBusinessSid());
orderContractQuery.setUserSid(busSalesOrder.getCreateBySid());
saveContract(orderContractQuery);
}
} else {
return rb.setMsg(resultBean.getMsg());
}
@ -3901,4 +4104,6 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
}
return rb.success().setData(busSaleOrderVehicleOutVo);
}
}
Loading…
Cancel
Save