Browse Source

生成销售出库单pdf

zhanglei
God 2 years ago
parent
commit
ad390c0225
  1. 17
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOut.java
  2. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutDetailsVo.java
  3. 17
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutDto.java
  4. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutFeign.java
  5. 39
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutMaterial.java
  6. 19
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutPdf.java
  7. 9
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutVo.java
  8. 16
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/PdfPath.java
  9. 7
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleout/BaseVehicleOutRest.java
  10. 156
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleout/BaseVehicleOutService.java
  11. 3533
      anrui-base/anrui-base-biz/src/main/resources/xsckd.ftl

17
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOut.java

@ -14,6 +14,13 @@ import java.math.BigDecimal;
@Data
public class BaseVehicleOut extends BaseEntity {
private static final long serialVersionUID = -1745739629318036845L;
@ApiModelProperty("制单人姓名")
private String createByName;
@ApiModelProperty("主车物料分组code")
private String zcMGroupCode;
@ApiModelProperty("主车物料分组名称")
private String zcMGroupName;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车辆sid")
@ -82,6 +89,16 @@ public class BaseVehicleOut extends BaseEntity {
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty("上装/挂车物料分组code")
private String trailerOrInstallMGroupCode;
@ApiModelProperty("上装/挂车物料分组名称")
private String trailerOrInstallMGroupName;
@ApiModelProperty("上装/挂车物料编码")
private String trailerOrInstallCode;
@ApiModelProperty("上装/挂车sid")
private String szOrGCSid;
@ApiModelProperty("上装/挂车名称")
private String trailerOrInstallName;
@ApiModelProperty("上装/挂车")
private String trailerOrInstall;
@ApiModelProperty("上装/挂车成交价")

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutDetailsVo.java

@ -61,10 +61,14 @@ public class BaseVehicleOutDetailsVo implements Vo {
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty("上装/挂车名称")
private String trailerOrInstallName;
@ApiModelProperty("上装/挂车")
private String trailerOrInstall;
@ApiModelProperty("上装/挂车成交价")
private String trailerOrInstallDealPrice;
@ApiModelProperty("上装/挂车物料编码")
private String trailerOrInstallCode;
@ApiModelProperty("总成交价")
private String totalDealPrice;

17
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutDto.java

@ -13,7 +13,14 @@ import lombok.Data;
public class BaseVehicleOutDto implements Dto {
private static final long serialVersionUID = 7393182384733981516L;
@ApiModelProperty("创建人sid")
private String createBySid;
@ApiModelProperty("制单人姓名")
private String createByName;
@ApiModelProperty("主车物料分组code")
private String zcMGroupCode;
@ApiModelProperty("主车物料分组名称")
private String zcMGroupName;
private String vinSid;
private String vinNo;
@ApiModelProperty("出库类型")
@ -70,8 +77,16 @@ public class BaseVehicleOutDto implements Dto {
@ApiModelProperty("创建组织sid")
private String createOrgSid; // 创建组织sid
@ApiModelProperty("上装/挂车物料分组code")
private String trailerOrInstallMGroupCode;
@ApiModelProperty("上装/挂车物料分组名称")
private String trailerOrInstallMGroupName;
@ApiModelProperty("上装/挂车物料编码")
private String trailerOrInstallCode;
@ApiModelProperty("上装/挂车sid")
private String szOrGCSid;
@ApiModelProperty("上装/挂车名称")
private String trailerOrInstallName;
@ApiModelProperty("上装/挂车")
private String trailerOrInstall;
@ApiModelProperty("上装/挂车成交价")

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutFeign.java

@ -47,6 +47,11 @@ public interface BaseVehicleOutFeign {
@ResponseBody
ResultBean<List<Map<String,String>>> selectOrgByLevel(@RequestParam("orgSidPath") String orgSidPath);
@ApiOperation("生成销售出库单pdf")
@PostMapping("/createPdf")
@ResponseBody
ResultBean<PdfPath> createPdf(@RequestBody BaseVehicleOutPdf baseVehicleOutPdf);
}

39
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutMaterial.java

@ -0,0 +1,39 @@
package com.yxt.anrui.base.api.basevehicleout;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/9/29 12:00
* @Description
*/
@Data
public class BaseVehicleOutMaterial {
@ApiModelProperty("物料编码")
@JsonProperty("mNum")
private String mNum;
@ApiModelProperty("物料分组")
@JsonProperty("mGroup")
private String mGroup;
@ApiModelProperty("车辆类型")
private String vehicleTypeValue;
@ApiModelProperty("计量单位")
private String inventoryUnit;
@ApiModelProperty("数量")
private String num;
@ApiModelProperty("成交价")
private String price;
@ApiModelProperty("返利人")
private String rebatePeo;
@ApiModelProperty("返利金额")
private String rebateMoney;
@ApiModelProperty("赠送套餐")
private String complimentaryPackage;
@ApiModelProperty("销售折让")
private String salesAllowance;
@ApiModelProperty("备注")
private String remarks;
}

19
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutPdf.java

@ -0,0 +1,19 @@
package com.yxt.anrui.base.api.basevehicleout;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/9/29 12:00
* @Description
*/
@Data
public class BaseVehicleOutPdf {
@ApiModelProperty("sid")
private String sid;
@ApiModelProperty("销售类型")
private String saleType;
}

9
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/BaseVehicleOutVo.java

@ -98,4 +98,13 @@ public class BaseVehicleOutVo implements Vo {
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("上装/挂车名称")
private String trailerOrInstallName;
@ApiModelProperty("上装/挂车")
private String trailerOrInstall;
@ApiModelProperty("上装/挂车成交价")
private String trailerOrInstallDealPrice;
@ApiModelProperty("上装/挂车物料编码")
private String trailerOrInstallCode;
}

16
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleout/PdfPath.java

@ -0,0 +1,16 @@
package com.yxt.anrui.base.api.basevehicleout;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class PdfPath {
@ApiModelProperty("pdf文件路径")
private String pdfPath;
@ApiModelProperty("附件文件路径")
private String fjPath;
@ApiModelProperty("附件文件后缀")
private String fjType;
}

7
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleout/BaseVehicleOutRest.java

@ -51,4 +51,11 @@ public class BaseVehicleOutRest implements BaseVehicleOutFeign {
public ResultBean<List<Map<String, String>>> selectOrgByLevel(String orgSidPath) {
return baseVehicleOutService.selectOrgByLevel(orgSidPath);
}
@Override
public ResultBean<PdfPath> createPdf(BaseVehicleOutPdf baseVehicleOutPdf) {
ResultBean rb = ResultBean.fireFail();
PdfPath pdf = baseVehicleOutService.createPdf(baseVehicleOutPdf);
return rb.success().setData(pdf);
}
}

156
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleout/BaseVehicleOutService.java

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

3533
anrui-base/anrui-base-biz/src/main/resources/xsckd.ftl

File diff suppressed because it is too large
Loading…
Cancel
Save