|
|
@ -1,23 +1,21 @@ |
|
|
|
package com.yxt.anrui.base.biz.basevehicleout; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import cn.hutool.core.date.DateTime; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.yxt.anrui.base.api.basemiddleman.BaseMiddleman; |
|
|
|
import com.yxt.anrui.base.api.basetrailer.BaseTrailer; |
|
|
|
import com.yxt.anrui.base.api.basetrailer.BaseTrailerDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basetrailermodel.BaseTrailerModel; |
|
|
|
import com.yxt.anrui.base.api.basevehicle.BaseVehicle; |
|
|
|
import com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModel; |
|
|
|
import com.yxt.anrui.base.api.basevehicleout.*; |
|
|
|
import com.yxt.anrui.base.api.basevehinstall.BaseVehinstall; |
|
|
|
import com.yxt.anrui.base.api.basevehinstall.BaseVehinstallDetailsVo; |
|
|
|
import com.yxt.anrui.base.api.basevehinstall.BaseVehinstallDto; |
|
|
|
import com.yxt.anrui.base.biz.basemiddleman.BaseMiddlemanService; |
|
|
|
import com.yxt.anrui.base.biz.basetrailer.BaseTrailerService; |
|
|
|
import com.yxt.anrui.base.biz.basetrailermodel.BaseTrailerModelService; |
|
|
|
import com.yxt.anrui.base.biz.basevehicle.BaseVehicleService; |
|
|
|
import com.yxt.anrui.base.biz.basevehiclemodel.BaseVehicleModelService; |
|
|
|
import com.yxt.anrui.base.biz.basevehinstall.BaseVehinstallService; |
|
|
|
import com.yxt.anrui.base.common.enums.VehicleState; |
|
|
|
import com.yxt.anrui.base.common.utils.Rule; |
|
|
@ -25,8 +23,6 @@ import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderDetailsVo; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; |
|
|
|
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; |
|
|
|
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; |
|
|
|
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer; |
|
|
|
import com.yxt.anrui.fin.api.kingdee.bdempinfo.BDEmpinfo; |
|
|
@ -36,10 +32,11 @@ import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; |
|
|
|
import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoDetailsVo; |
|
|
|
import com.yxt.anrui.portal.api.sysstaffinfo.SysStaffinfoFeign; |
|
|
|
import com.yxt.anrui.scm.api.scmwarehouse.ScmWarehouseFeign; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
|
import com.yxt.common.base.utils.HanZiConverterPinYin; |
|
|
|
import com.yxt.common.base.utils.PagerUtil; |
|
|
|
import com.yxt.common.base.utils.TransformMoney; |
|
|
|
import com.yxt.common.base.utils.WordUtils; |
|
|
|
import com.yxt.common.core.query.PagerQuery; |
|
|
|
import com.yxt.common.core.result.ResultBean; |
|
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
@ -47,9 +44,13 @@ import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import static cn.hutool.core.util.ClassLoaderUtil.getClassLoader; |
|
|
|
import static java.util.Comparator.comparing; |
|
|
|
|
|
|
|
/** |
|
|
|
* @Author dimengzhe |
|
|
|
* @Date 2022/9/23 14:46 |
|
|
@ -61,16 +62,14 @@ public class BaseVehicleOutService extends MybatisBaseService<BaseVehicleOutMapp |
|
|
|
@Autowired |
|
|
|
private BaseVehicleService baseVehicleService; |
|
|
|
@Autowired |
|
|
|
private BaseVehicleModelService baseVehicleModelService; |
|
|
|
@Autowired |
|
|
|
private SysOrganizationFeign sysOrganizationFeign; |
|
|
|
@Autowired |
|
|
|
private FinKingDeeFeign finKingDeeFeign; |
|
|
|
@Autowired |
|
|
|
private ScmWarehouseFeign scmWarehouseFeign; |
|
|
|
@Autowired |
|
|
|
private BaseMiddlemanService baseMiddlemanService; |
|
|
|
@Autowired |
|
|
|
private CrmCustomerTempFeign crmCustomerTempFeign; |
|
|
|
@Autowired |
|
|
|
private SysStaffinfoFeign sysStaffinfoFeign; |
|
|
|
@Autowired |
|
|
|
private BaseTrailerService baseTrailerService; |
|
|
@ -80,8 +79,6 @@ public class BaseVehicleOutService extends MybatisBaseService<BaseVehicleOutMapp |
|
|
|
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign; |
|
|
|
@Autowired |
|
|
|
private BusSalesOrderFeign busSalesOrderFeign; |
|
|
|
@Autowired |
|
|
|
private BaseTrailerModelService baseTrailerModelService; |
|
|
|
|
|
|
|
public ResultBean<Boolean> vehicleOut(BaseVehicleOutDto dto) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
@ -170,6 +167,11 @@ public class BaseVehicleOutService extends MybatisBaseService<BaseVehicleOutMapp |
|
|
|
} |
|
|
|
BaseVehicleOut baseVehicleOut = new BaseVehicleOut(); |
|
|
|
BeanUtil.copyProperties(dto, baseVehicleOut, "sid"); |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.fetchBySid(vinSid); |
|
|
|
if ("002".equals(baseVehicle.getManPurOrderTypeKey())){ |
|
|
|
baseVehicleOut.setZcMGroupCode("99.01"); |
|
|
|
baseVehicleOut.setZcMGroupName("外采主车"); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(dto.getPrice())) { |
|
|
|
baseVehicleOut.setPrice(new BigDecimal(dto.getPrice())); |
|
|
|
} |
|
|
@ -192,11 +194,21 @@ public class BaseVehicleOutService extends MybatisBaseService<BaseVehicleOutMapp |
|
|
|
billNo = Rule.getBillNo(billNo, 0); |
|
|
|
} |
|
|
|
baseVehicleOut.setBillNo(billNo); |
|
|
|
String trailerOrInstallName = baseVehicleOut.getTrailerOrInstallName(); |
|
|
|
if ("上装".equals(trailerOrInstallName)){ |
|
|
|
baseVehicleOut.setTrailerOrInstallMGroupCode("99.02"); |
|
|
|
baseVehicleOut.setTrailerOrInstallMGroupName("挂车"); |
|
|
|
baseVehicleOut.setTrailerOrInstallCode(baseVehicleOut.getVinNo().substring(baseVehicleOut.getVinNo().length() - 8) + "SZ"); |
|
|
|
}else if ("挂车".equals(trailerOrInstallName)){ |
|
|
|
baseVehicleOut.setTrailerOrInstallMGroupCode("99.02"); |
|
|
|
baseVehicleOut.setTrailerOrInstallMGroupName("挂车"); |
|
|
|
BaseTrailer baseTrailer = baseTrailerService.fetchBySid(baseVehicleOut.getSzOrGCSid()); |
|
|
|
baseVehicleOut.setTrailerOrInstallCode(baseTrailer.getVinNo().substring(baseTrailer.getVinNo().length() - 8) + "G"); |
|
|
|
} |
|
|
|
baseMapper.insert(baseVehicleOut); |
|
|
|
dto.setBillNo(billNo); |
|
|
|
//更新车辆台账的出库状态等值,库存状态修改为出库,销售日期修改为当天,成交价,备注
|
|
|
|
String remarks = baseVehicleOut.getConcatNo() + baseVehicleOut.getType(); |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.fetchBySid(dto.getVinSid()); |
|
|
|
baseVehicle.setRemarks(remarks); |
|
|
|
baseVehicle.setVehicleState(VehicleState.StockEnum.OUT_STOCK.getCode()); |
|
|
|
baseVehicle.setVehicleStateValue(VehicleState.StockEnum.OUT_STOCK.getRemarks()); |
|
|
@ -830,5 +842,119 @@ public class BaseVehicleOutService extends MybatisBaseService<BaseVehicleOutMapp |
|
|
|
return rb.success().setData(maps); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public PdfPath createPdf(BaseVehicleOutPdf baseVehicleOutPdf) { |
|
|
|
PdfPath pdfPath = new PdfPath(); |
|
|
|
BaseVehicleOut baseVehicleOut = fetchBySid(baseVehicleOutPdf.getSid()); |
|
|
|
BaseVehicle baseVehicle = baseVehicleService.fetchBySid(baseVehicleOut.getVinSid()); |
|
|
|
BaseVehicleModel baseVehicleModel = baseVehicleModelService.fetchBySid(baseVehicle.getModelSid()); |
|
|
|
Map<String, Object> dataMap = new HashMap<String, Object>(); |
|
|
|
//销售类型
|
|
|
|
dataMap.put("saleType",baseVehicleOutPdf.getSaleType()); |
|
|
|
//销售日期
|
|
|
|
dataMap.put("saleDate", baseVehicleOut.getSaleDate()); |
|
|
|
//单据编号
|
|
|
|
dataMap.put("billNo", baseVehicleOut.getBillNo()); |
|
|
|
//客户名称
|
|
|
|
dataMap.put("cName", baseVehicleOut.getCustomerName()); |
|
|
|
//电话
|
|
|
|
dataMap.put("mobile", baseVehicleOut.getMobile()); |
|
|
|
//销售部门
|
|
|
|
dataMap.put("oName", baseVehicleOut.getOrgName()); |
|
|
|
//销售专员
|
|
|
|
dataMap.put("sName", baseVehicleOut.getStaffName()); |
|
|
|
List<BaseVehicleOutMaterial> baseVehicleOutMaterials = new ArrayList<>(); |
|
|
|
BaseVehicleOutMaterial baseVehicleOutMaterialZC = new BaseVehicleOutMaterial(); |
|
|
|
//主车物料编码
|
|
|
|
String num = "1"; |
|
|
|
BigDecimal tPrice = baseVehicleOut.getPrice(); |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getTrailerOrInstallDealPrice())){ |
|
|
|
BigDecimal trailerOrInstallDealPrice = new BigDecimal(baseVehicleOut.getTrailerOrInstallDealPrice()); |
|
|
|
tPrice = tPrice.add(trailerOrInstallDealPrice); |
|
|
|
} |
|
|
|
baseVehicleOutMaterialZC.setMNum(baseVehicleOut.getVinNo().substring(baseVehicleOut.getVinNo().length() - 8)); |
|
|
|
baseVehicleOutMaterialZC.setMGroup(baseVehicleOut.getZcMGroupName()); |
|
|
|
baseVehicleOutMaterialZC.setVehicleTypeValue(baseVehicleModel.getVehicleTypeValue()); |
|
|
|
baseVehicleOutMaterialZC.setInventoryUnit("辆"); |
|
|
|
baseVehicleOutMaterialZC.setNum(num); |
|
|
|
baseVehicleOutMaterialZC.setPrice(baseVehicleOut.getPrice().toString()); |
|
|
|
baseVehicleOutMaterialZC.setRebatePeo(baseVehicleOut.getMiddleOne()); |
|
|
|
BigDecimal rebateMoneyOne = baseVehicleOut.getRebateMoneyOne(); |
|
|
|
BigDecimal rebateMoneyTwo = baseVehicleOut.getRebateMoneyTwo(); |
|
|
|
BigDecimal rebateMoney = rebateMoneyOne.add(rebateMoneyTwo); |
|
|
|
baseVehicleOutMaterialZC.setRebateMoney(rebateMoney.toString()); |
|
|
|
baseVehicleOutMaterialZC.setComplimentaryPackage(baseVehicleOut.getGiftsDescription()); |
|
|
|
baseVehicleOutMaterialZC.setSalesAllowance(baseVehicleOut.getSalesAllowance().toString()); |
|
|
|
baseVehicleOutMaterialZC.setRemarks(baseVehicleOut.getRemarks()); |
|
|
|
baseVehicleOutMaterials.add(baseVehicleOutMaterialZC); |
|
|
|
if (StringUtils.isNotBlank(baseVehicleOut.getSzOrGCSid())){ |
|
|
|
if ("上装".equals(baseVehicleOut.getTrailerOrInstallName())){ |
|
|
|
BaseVehicleOutMaterial baseVehicleOutMaterialSZ = new BaseVehicleOutMaterial(); |
|
|
|
//上装物料编码
|
|
|
|
baseVehicleOutMaterialSZ.setMNum(baseVehicleOut.getTrailerOrInstallCode()); |
|
|
|
//上装物料分组
|
|
|
|
baseVehicleOutMaterialSZ.setMGroup(baseVehicleOut.getTrailerOrInstallMGroupName()); |
|
|
|
//上装车辆类型
|
|
|
|
baseVehicleOutMaterialSZ.setVehicleTypeValue(baseVehicleOut.getTrailerOrInstallName()); |
|
|
|
//上装计量单位
|
|
|
|
baseVehicleOutMaterialSZ.setInventoryUnit("辆"); |
|
|
|
//上装数量
|
|
|
|
baseVehicleOutMaterialSZ.setNum(num); |
|
|
|
int i = Integer.parseInt(num); |
|
|
|
i = i++; |
|
|
|
num = String.valueOf(i); |
|
|
|
//上装成交价
|
|
|
|
baseVehicleOutMaterialSZ.setPrice(baseVehicleOut.getTrailerOrInstallDealPrice()); |
|
|
|
baseVehicleOutMaterials.add(baseVehicleOutMaterialSZ); |
|
|
|
}else if ("挂车".equals(baseVehicleOut.getTrailerOrInstallName())){ |
|
|
|
BaseVehicleOutMaterial baseVehicleOutMaterialGC = new BaseVehicleOutMaterial(); |
|
|
|
//挂车物料编码
|
|
|
|
baseVehicleOutMaterialGC.setMNum(baseVehicleOut.getTrailerOrInstallCode()); |
|
|
|
//挂车物料分组
|
|
|
|
baseVehicleOutMaterialGC.setMGroup(baseVehicleOut.getTrailerOrInstallMGroupName()); |
|
|
|
//挂车车辆类型
|
|
|
|
baseVehicleOutMaterialGC.setVehicleTypeValue(baseVehicleOut.getTrailerOrInstallName()); |
|
|
|
//挂车计量单位
|
|
|
|
baseVehicleOutMaterialGC.setInventoryUnit("辆"); |
|
|
|
//挂车数量
|
|
|
|
baseVehicleOutMaterialGC.setNum(num); |
|
|
|
int i = Integer.parseInt(num); |
|
|
|
i = i++; |
|
|
|
num = String.valueOf(i); |
|
|
|
//挂车成交价
|
|
|
|
baseVehicleOutMaterialGC.setPrice(baseVehicleOut.getTrailerOrInstallDealPrice()); |
|
|
|
baseVehicleOutMaterials.add(baseVehicleOutMaterialGC); |
|
|
|
} |
|
|
|
} |
|
|
|
dataMap.put("wlList", baseVehicleOutMaterials); |
|
|
|
dataMap.put("tNum", num); |
|
|
|
dataMap.put("tPrice", tPrice.toString()); |
|
|
|
dataMap.put("tRebateMoney", rebateMoney.toString()); |
|
|
|
dataMap.put("tComplimentaryPackage", baseVehicleOut.getGiftsDescription()); |
|
|
|
dataMap.put("tSalesAllowance",baseVehicleOut.getSalesAllowance().toString()); |
|
|
|
String tPriceDX = TransformMoney.transform(tPrice.toString()); |
|
|
|
dataMap.put("tPriceDX",tPriceDX); |
|
|
|
dataMap.put("makeListName",baseVehicleOut.getCreateByName()); |
|
|
|
dataMap.put("makeListDate",DateUtil.format(new Date(),"yyyy-MM-dd")); |
|
|
|
dataMap.put("confirmName",""); |
|
|
|
dataMap.put("confirmDate",""); |
|
|
|
//获取模板
|
|
|
|
//模板路径
|
|
|
|
String sourcePath = "D:\\anrui\\upload\\template\\"; |
|
|
|
File file = new File(getClass().getClassLoader().getResource("ftl/xsckd.ftl").getFile()); |
|
|
|
String dir = getClassLoader().getResource("ftl").getPath(); |
|
|
|
//生成word文件名
|
|
|
|
String dateStr = DateUtil.format(new Date(), "yyyyMMdd"); |
|
|
|
long seconds = System.currentTimeMillis(); |
|
|
|
String typeName = dateStr + seconds + ".doc"; |
|
|
|
// 生成文件路径
|
|
|
|
String targetPath = sourcePath + dateStr; |
|
|
|
WordUtils.creatWord(dataMap, "xsckd", sourcePath, targetPath, typeName); |
|
|
|
//新生成的word路径
|
|
|
|
String wordPath = targetPath + "\\" + typeName; |
|
|
|
//生成出门证文件名
|
|
|
|
String pdfName = "销售出库单_" + dateStr + seconds + ".pdf"; |
|
|
|
WordUtils.doc2pdf(wordPath, targetPath, pdfName, baseVehicleOut.getCreateByName()); |
|
|
|
pdfPath.setPdfPath("/template/" + dateStr + "/" + pdfName); |
|
|
|
return pdfPath; |
|
|
|
} |
|
|
|
} |
|
|
|