From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:22:45 +0800
Subject: [PATCH] 描述
---
src/main/java/com/gk/firework/Service/ServiceImpl/TransportCertificateServiceImpl.java | 838 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 838 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gk/firework/Service/ServiceImpl/TransportCertificateServiceImpl.java b/src/main/java/com/gk/firework/Service/ServiceImpl/TransportCertificateServiceImpl.java
new file mode 100644
index 0000000..36abcf4
--- /dev/null
+++ b/src/main/java/com/gk/firework/Service/ServiceImpl/TransportCertificateServiceImpl.java
@@ -0,0 +1,838 @@
+package com.gk.firework.Service.ServiceImpl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gk.firework.Domain.*;
+import com.gk.firework.Domain.Enum.CertificatePersonType;
+import com.gk.firework.Domain.Enum.CertificateStatus;
+import com.gk.firework.Domain.Exception.BusinessException;
+import com.gk.firework.Domain.Utils.*;
+import com.gk.firework.Domain.Utils.Properties;
+import com.gk.firework.Domain.Vo.TransportArrivalVo;
+import com.gk.firework.Mapper.TransportCertificateMapper;
+import com.gk.firework.Service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ResourceUtils;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+
+@Service("transportCertificateService")
+public class TransportCertificateServiceImpl extends ServiceImpl<TransportCertificateMapper, TransportCertificate> implements TransportCertificateService {
+
+ //最少行数限制
+ private final static Integer rowMinSizeLimit = 12;
+ private final static SimpleDateFormat TransportDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+
+ @Autowired
+ private TransportCertificateMapper transportCertificateMapper;
+ @Autowired
+ private TransportCertificatePersonService transportCertificatePersonService;
+ @Autowired
+ private TransportCertificateProductService transportCertificateProductService;
+ @Autowired
+ private TransportCertificateApproachService transportCertificateApproachService;
+ @Autowired
+ private TransportCertificateFileService transportCertificateFileService;
+ @Autowired
+ private TransportCertificateArrivalRecordService transportCertificateArrivalRecordService;
+ @Autowired
+ private UserService userService;
+ @Autowired
+ private EnterpriseService enterpriseService;
+
+ @Override
+ public IPage selectPages(Page<TransportCertificate> page, Map filter, UserInfo userInfo) {
+ UserInfo user = userService.getById(userInfo.getId());
+ Map<String, Object> params = new HashMap<>();
+ //可见权限
+ {
+ params.put("enterprisenumber", user.getCompanynumber());
+ params.put("province", user.getProvince());
+ params.put("city", user.getCity());
+ params.put("district", user.getArea());
+ params.put("street", user.getTown());
+ params.put("committee", user.getCommunity());
+ }
+ //基本
+ params.put("filterProvince", filter.get("province"));
+ params.put("filterCity", filter.get("city"));
+ params.put("filterDistrict",filter.get("district"));
+ params.put("filterStreet", filter.get("street"));
+ params.put("filterCommittee", filter.get("committee"));
+ params.put("code", filter.get("code"));
+ params.put("enterprisename", filter.get("enterprisename"));
+ params.put("page", filter.get("page"));
+ params.put("tosubmmit", CertificateStatus.TOSUBMIT);
+ List<TransportCertificate> list = transportCertificateMapper.selectPages(page, params);
+ return page.setRecords(list);
+ }
+
+ /**
+ * @Description: 新增运输证
+ * @date 2021/4/1 13:02
+ */
+ @Override
+ @Transactional
+ public void addCertificateApply(TransportCertificate transportCertificate, UserInfo user) {
+
+ UserInfo userInfo = userService.getById(user.getId());
+ if (StringUtils.isBlank(userInfo.getCompanynumber())){
+ throw new BusinessException("没有权限创建运输证");
+ }
+ //新增运输证基本信息
+ {
+ String code = "TC-" + System.currentTimeMillis();
+ transportCertificate.setCode(code);
+ transportCertificate.setCertstatus("未入库");
+ transportCertificate.setCreateby(user.getId());
+ transportCertificate.setCreatebyname(user.getUsername());
+ transportCertificate.setEnterprisenumber(userInfo.getCompanynumber());
+ transportCertificate.setCreatetime(new Date());
+ transportCertificate.setValidflag(true);
+ transportCertificate.setStatus(CertificateStatus.TOSUBMIT);
+ this.save(transportCertificate);
+ }
+ //新增驾驶员和押运人
+ {
+
+ List<TransportCertificatePerson> person = transportCertificate.getTransportPerson();
+ if (person != null && person.size() > 0) {
+ for (TransportCertificatePerson p : person) {
+ p.setCertificatecode(transportCertificate.getCode());
+ p.setValidflag(true);
+ }
+ transportCertificatePersonService.saveBatch(person);
+ }
+ }
+
+ //新建产品信息
+ {
+ List<TransportCertificateProduct> products = transportCertificate.getTransportProduct();
+ if (products != null && products.size() > 0) {
+ for (TransportCertificateProduct p : products) {
+ p.setCertificatecode(transportCertificate.getCode());
+ p.setArrivalnum(0);
+ p.setValidflag(true);
+ }
+ transportCertificateProductService.saveBatch(products);
+ }
+ }
+ //新增途径地
+
+ {
+ List<TransportCertificateApproach> approach = transportCertificate.getTransportApproach();
+ if (approach != null && approach.size() > 0) {
+ for (TransportCertificateApproach a : approach) {
+ a.setCertificatecode(transportCertificate.getCode());
+ a.setValidflag(true);
+ }
+ transportCertificateApproachService.saveBatch(approach);
+
+ }
+ }
+ //新增图片
+ {
+ TransportCertificateFile files = transportCertificate.getTransportFile();
+ if (files != null) {
+ files.setId(null);
+ files.setCertificatecode(transportCertificate.getCode());
+ files.setValidflag(true);
+ transportCertificateFileService.save(files);
+ }
+ }
+
+ }
+
+ /**
+ * @Description: 修改运输证
+ * @date 2021/4/2 14:49
+ */
+ @Override
+ @Transactional
+ public void modCertificateApply(TransportCertificate transportCertificate, UserInfo user) {
+
+
+ //1.判断单子状态
+ TransportCertificate certificate = this.getById(transportCertificate.getId());
+ if (certificate.getStatus() != CertificateStatus.TOSUBMIT){
+ throw new BusinessException("非待提交状态不能修改");
+ }
+ //修改运输证基本信息
+ {
+ transportCertificate.setUpdateby(user.getId());
+ transportCertificate.setUpdatebyname(user.getUsername());
+ transportCertificate.setUpdatetime(new Date());
+ this.updateById(transportCertificate);
+ }
+
+ //修改驾驶员和押运人
+ {
+ //1.删除所有已关联驾驶员和押运人
+ transportCertificatePersonService.deleteByCertificateCode(transportCertificate.getCode());
+ //2.新增关联驾驶员和押运人
+ List<TransportCertificatePerson> person = transportCertificate.getTransportPerson();
+ if (person != null && person.size() > 0) {
+ for (TransportCertificatePerson p : person) {
+ p.setId(null);
+ p.setCertificatecode(transportCertificate.getCode());
+ p.setValidflag(true);
+ }
+ transportCertificatePersonService.saveBatch(person);
+ }
+ }
+
+ //修改产品信息
+ {
+
+ //1.删除所有关联产品信息
+ transportCertificateProductService.deleteByCertificateCode(transportCertificate.getCode());
+ //2.新增关联驾驶员和押运人
+ List<TransportCertificateProduct> products = transportCertificate.getTransportProduct();
+ if (products != null && products.size() > 0) {
+ for (TransportCertificateProduct p : products) {
+ p.setId(null);
+ p.setCertificatecode(transportCertificate.getCode());
+ p.setValidflag(true);
+ }
+ transportCertificateProductService.saveBatch(products);
+ }
+ }
+
+ //修改产品信息
+ {
+
+ //1.删除所有关联产品信息
+ transportCertificateProductService.deleteByCertificateCode(transportCertificate.getCode());
+ //2.新增关联产品信息
+ List<TransportCertificateProduct> products = transportCertificate.getTransportProduct();
+ if (products != null && products.size() > 0) {
+ for (TransportCertificateProduct p : products) {
+ p.setCertificatecode(transportCertificate.getCode());
+ p.setValidflag(true);
+ }
+ transportCertificateProductService.saveBatch(products);
+ }
+ }
+
+ //修改途径地
+ {
+ //1.删除所有途径地
+ transportCertificateApproachService.deleteByCertificateCode(transportCertificate.getCode());
+ //2.新增关联途径地
+ List<TransportCertificateApproach> approach = transportCertificate.getTransportApproach();
+ if (approach != null && approach.size() > 0) {
+ for (TransportCertificateApproach a : approach) {
+ a.setId(null);
+ a.setCertificatecode(transportCertificate.getCode());
+ a.setValidflag(true);
+ }
+ transportCertificateApproachService.saveBatch(approach);
+ }
+ }
+
+ //修改途径地
+ {
+ //1.删除所有途径地
+ transportCertificateApproachService.deleteByCertificateCode(transportCertificate.getCode());
+ //2.新增关联途径地
+ List<TransportCertificateApproach> approach = transportCertificate.getTransportApproach();
+ if (approach != null && approach.size() > 0) {
+ for (TransportCertificateApproach a : approach) {
+ a.setId(null);
+ a.setCertificatecode(transportCertificate.getCode());
+ a.setValidflag(true);
+ }
+ transportCertificateApproachService.saveBatch(approach);
+
+ }
+ }
+
+
+ //修改图片
+ {
+ //1.删除所有图片
+ transportCertificateFileService.deleteByCertificateCode(transportCertificate.getCode());
+ //2.新增关联图片
+ TransportCertificateFile files = transportCertificate.getTransportFile();
+ if (files != null) {
+ files.setId(null);
+ files.setCertificatecode(transportCertificate.getCode());
+ files.setValidflag(true);
+ transportCertificateFileService.save(files);
+ }
+
+ }
+
+ }
+
+ /**
+ * @Description: 删除运输证
+ * @date 2021/4/2 16:16
+ */
+ @Override
+ public void delCertificate(Long id, UserInfo user) {
+ TransportCertificate certificate = new TransportCertificate();
+ certificate.setId(id);
+ certificate.setUpdatetime(new Date());
+ certificate.setUpdatebyname(user.getUsername());
+ certificate.setUpdateby(user.getId());
+ certificate.setValidflag(false);
+ this.updateById(certificate);
+ }
+
+
+ /**
+ * @Description: 根据id获取运输证信息
+ * @date 2021/5/11 17:48
+ */
+ @Override
+ public TransportCertificate getOneById(Long id) {
+ return transportCertificateMapper.getOneById(id);
+ }
+
+
+ /**
+ * @Description: 提交单子
+ * @date 2021/5/11 16:05
+ */
+ @Override
+ public void summitApply(Long id, UserInfo user) {
+ TransportCertificate certificate = new TransportCertificate();
+ certificate.setId(id);
+ certificate.setUpdatetime(new Date());
+ certificate.setUpdatebyname(user.getUsername());
+ certificate.setUpdateby(user.getId());
+ certificate.setValidflag(true);
+ certificate.setStatus(CertificateStatus.PENDING);
+ this.updateById(certificate);
+ }
+
+
+ /**
+ * @Description: 监管部门审批
+ * @date 2021/5/11 16:10
+ */
+ @Override
+ public void approveApply(JSONObject params, UserInfo user) {
+ Long id = params.getLong("id");
+ String signperson = params.getString("signperson");
+ String issueperson = params.getString("issueperson");
+ String issuepersonphone = params.getString("issuepersonphone");
+ Date deadline = params.getDate("deadline");
+ //简单校验
+ {
+ if (id == null) {
+ throw new BusinessException("审批错误,请联系管理员");
+ }
+
+ if (StringUtils.isBlank(signperson)) {
+ throw new BusinessException("请填写签发人员");
+ }
+
+ if (StringUtils.isBlank(issueperson)) {
+ throw new BusinessException("请填写填发人员");
+ }
+
+ if (StringUtils.isBlank(issuepersonphone)) {
+ throw new BusinessException("请填写填发人员联系电话");
+ }
+
+ if (deadline == null) {
+ throw new BusinessException("请填写填发预期到达日期");
+ }
+ }
+
+ //判断托运人和收货人的许可证是否过期
+ TransportCertificate transportCertificate = this.getOneById(id);
+ Enterprise shipper = enterpriseService.selectEnterpriseByName(transportCertificate.getShippercompanyname());
+ Enterprise receiver = enterpriseService.selectEnterpriseByName(transportCertificate.getReceivercompanyname());
+ Date date = new Date();
+ if (shipper == null){
+ throw new BusinessException("托运单位不存在");
+ }
+ if (receiver == null){
+ throw new BusinessException("收货单位不存在");
+ }
+ if (shipper.getValidendtime().getTime() < date.getTime()){
+ throw new BusinessException("托运单位运输证已过期");
+ }
+ if (receiver.getValidendtime().getTime() < date.getTime()){
+ throw new BusinessException("收货单位运输证已过期");
+ }
+
+
+ //修改信息
+ TransportCertificate certificate = new TransportCertificate();
+ certificate.setId(id);
+ certificate.setUpdatetime(new Date());
+ certificate.setUpdatebyname(user.getUsername());
+ certificate.setUpdateby(user.getId());
+ certificate.setValidflag(true);
+ certificate.setStatus(CertificateStatus.APPROVED);
+ certificate.setSignperson(signperson);
+ certificate.setIssueperson(issueperson);
+ certificate.setIssuepersonphone(issuepersonphone);
+ certificate.setDeadline(deadline);
+ this.updateById(certificate);
+ }
+
+ /**
+ * @Description: 监管部门回拒单子-》待提交状态
+ * @date 2021/5/11 16:14
+ */
+ @Override
+ public void refuseApply(Long id, UserInfo user) {
+ TransportCertificate certificate = new TransportCertificate();
+ certificate.setId(id);
+ certificate.setUpdatetime(new Date());
+ certificate.setUpdatebyname(user.getUsername());
+ certificate.setUpdateby(user.getId());
+ certificate.setValidflag(true);
+ certificate.setStatus(CertificateStatus.TOSUBMIT);
+ this.updateById(certificate);
+ }
+
+ /**
+ * @Description: 导出运输许可证 三联
+ * @date 2021/5/11 17:14
+ */
+ @Override
+ public String exportCertificate(Long id) {
+
+ TransportCertificate certificate = this.getOneById(id);
+ if (certificate.getStatus() != CertificateStatus.APPROVED) {
+ throw new BusinessException("未审批不能导出相关许可证");
+ }
+ //如果已经生成旧不需要生成了
+ String fileUrl = Properties.transportCertificatePath + certificate.getCode()+".docx";
+ String fileUrlReturn = Properties.transportCertificate+ certificate.getCode()+".docx";
+ if (new File(fileUrl).exists()) {
+ return fileUrlReturn;
+ }
+
+ try {
+// File file = ResourceUtils.getFile("classpath:printTemplate/certificatelicense.docx");
+ ClassPathResource classPathResource = new ClassPathResource("printTemplate/certificatelicense.docx");
+ InputStream inputStream = classPathResource.getInputStream();
+ WordTemplate wordTemplate = new WordTemplate();
+ wordTemplate.loadTemplate(null,inputStream);
+ //参数
+ Map<String, String> params = new HashMap<>();
+ //编号
+ params.put("ordercode",certificate.getCode());
+ //托运人:单位名称
+ params.put("shippercompanyname",certificate.getShippercompanyname());
+ //收货人:单位名称
+ params.put("receivercompanyname",certificate.getReceivercompanyname());
+ //承运人:单位名称
+ params.put("carriercompanyname",certificate.getCarriercompanyname());
+ //承运人:联系电话
+ params.put("carrierprincipalphone",certificate.getCarrierprincipalphone());
+ //截止日期
+ Date deadline = certificate.getDeadline();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(deadline);
+ //年
+ params.put("endyear", calendar.get(Calendar.YEAR) + "");
+ //月
+ params.put("endmonth", calendar.get(Calendar.MONTH) + "");
+ //日
+ params.put("endday", calendar.get(Calendar.DATE) + "");
+ //运输车辆牌号
+ params.put("carriercarnumber",certificate.getCarriercarnumber());
+ //运输起始地
+ params.put("startplace", certificate.getOtherdeparture());
+ //运输目的地
+ params.put("endplace", certificate.getOtherdestination());
+ //运输途径地 任意一处
+ params.put("byway", certificate.getOtherdeparture());
+ List<TransportCertificateApproach> approachList = certificate.getTransportApproach();
+ if (approachList != null && approachList.size() > 0) {
+ params.put("byway", approachList.get(0).getCity());
+ }
+ //签发人
+ params.put("signperson", certificate.getSignperson());
+ //填发人
+ params.put("issueperson", certificate.getIssueperson());
+ //填发人联系方式
+ params.put("issuepersonphone", certificate.getIssuepersonphone());
+ params.put("first", "第一联 公安局存查联");
+ params.put("second", "第二联 托运人存查联");
+ params.put("third", "第三联 承运人存查联");
+
+ //产品信息
+ List<String[]> productPrintList= new ArrayList<>();
+ List<TransportCertificateProduct> productList = certificate.getTransportProduct();
+ assert productList.size() > 0;
+
+ for (TransportCertificateProduct product : productList) {
+ productPrintList.add(new String[]
+ {
+ //种类
+ product.getType(),
+ //规格
+ product.getSpecification(),
+ //数量
+ product.getNum()+"(箱)",
+ //备注 暂无字段,默认为空
+ ""
+ });
+ }
+ //至少10行
+ int size = productList.size();
+ if (size < rowMinSizeLimit) {
+ for (int i = 0; i < rowMinSizeLimit - size; i++) {
+ productPrintList.add(new String[]{"","","",""});
+ }
+ }
+ String[] rowParams = {"type", "specification", "num", "memo"};
+ HashMap<String,WordTemplate.Table> tables = new HashMap<>();
+ WordTemplate.Table t1 = new WordTemplate.Table(rowParams,productPrintList);
+ tables.put("mainTable", t1);
+ wordTemplate.replaceDocument(tables, params);
+ //存一份到本地
+ wordTemplate.saveFileAndQRCode(fileUrl,certificate.getCode());
+ return fileUrlReturn;
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ throw new BusinessException("找不到模板文件路径");
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new BusinessException("发生错误,请联系管理员");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return fileUrlReturn;
+ }
+
+ /**
+ * @Description: 校验运输证信息
+ * @date 2021/5/12 14:09
+ */
+ @Override
+ public void checkAddApply(TransportCertificate transportCertificate) {
+
+ if (transportCertificate.getTransportProduct() == null || transportCertificate.getTransportProduct().size() < 1) {
+ throw new BusinessException("产品不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getOtherdeparture())) {
+ throw new BusinessException("运输起始地不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getOtherdestination())) {
+ throw new BusinessException("运输到达地不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getReceivercompanyname())) {
+ throw new BusinessException("收货单位不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getShippercompanyname())) {
+ throw new BusinessException("托运单位不能为空");
+ }
+
+ //承运人负责人电话
+ if (StringUtils.isBlank(transportCertificate.getCarrierprincipalname())) {
+ throw new BusinessException("承运单位负责联系电话不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getCarriercarnumber())) {
+ throw new BusinessException("承运单位运输车牌号不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getCarriernumber())) {
+ throw new BusinessException("承运单位资格证编号不能为空");
+ }
+
+ if (StringUtils.isBlank(transportCertificate.getCarrierroadnumber())) {
+ throw new BusinessException("承运单位道路运输证编号不能为空");
+ }
+
+
+
+ }
+
+ @Override
+ public String exportCertificateApply(Long id) {
+
+ TransportCertificate certificate = this.getOneById(id);
+ if (certificate.getStatus() == CertificateStatus.PENDING) {
+ throw new BusinessException("未提交单子不能导出");
+ }
+ //如果已经生成旧不需要生成了
+ String fileUrl = Properties.transportCertificatePath + certificate.getCode()+"-apply.docx";
+ String fileUrlReturn = Properties.transportCertificate+certificate.getCode()+"-apply.docx";
+ if (new File(fileUrl).exists()) {
+ return fileUrlReturn;
+ }
+
+ try {
+// File file = ResourceUtils.getFile("classpath:printTemplate/certificatelicenseApply.docx");
+ ClassPathResource classPathResource = new ClassPathResource("printTemplate/certificatelicenseapply.docx");
+ InputStream inputStream =classPathResource.getInputStream();;
+ WordTemplate wordTemplate = new WordTemplate();
+ wordTemplate.loadTemplate(null,inputStream);
+ //参数
+ Map<String, String> params = new HashMap<>();
+ //编号
+ params.put("ordercode",certificate.getCode());
+ //托运人
+ {
+ //托运人:单位名称
+ params.put("shippercompanyname",certificate.getShippercompanyname());
+ //托运人:单位地址
+ params.put("shipperaddress",certificate.getShipperaddress());
+ //托运人:负责人姓名
+ params.put("shipperprincipalname",certificate.getShipperprincipalname());
+ //托运人:负责人联系电话
+ params.put("shipperprincipalphone",certificate.getShipperprincipalphone());
+ //托运人:经办人姓名
+ params.put("shippermanagername",certificate.getShippermanagername());
+ //托运人:经办人身份证号
+ params.put("shippermanageridentify",certificate.getShippermanageridentify());
+ //托运人:经办人联系电话
+ params.put("shippermanagerphone",certificate.getShippermanagerphone());
+ }
+
+ //销售单位
+ params.put("salecompanyname",certificate.getSalecompanyname());
+ //收货人
+ {
+ //收货人:单位名称
+ params.put("receivercompanyname",certificate.getReceivercompanyname());
+ //收货人:地址
+ params.put("receiveraddress",certificate.getReceiveraddress());
+ //收货人:负责人姓名
+ params.put("receiverprincipalname",certificate.getReceiverprincipalname());
+ //收货人:负责人联系电话
+ params.put("receiverprincipalphone",certificate.getReceiverprincipalphone());
+ }
+ //承运人
+ {
+ //承运人:单位名称
+ params.put("carriercompanyname",certificate.getCarriercompanyname());
+ //承运人:单位地址
+ params.put("carrieraddress",certificate.getCarrieraddress());
+ //承运人:单位地址
+ params.put("carriernumber",certificate.getCarriernumber());
+ //承运人:负责人
+ params.put("carrierprincipalname",certificate.getCarrierprincipalname());
+ //承运人:负责人联系电话
+ params.put("carrierprincipalphone",certificate.getCarrierprincipalphone());
+ //承运人:负责人联系电话
+ params.put("carriercarnumber",certificate.getCarriercarnumber());
+ }
+ //运输
+ {
+ //运输起始地
+ params.put("startplace", certificate.getOtherdeparture());
+ //运输目的地
+ params.put("endplace", certificate.getOtherdestination());
+ //运输开始时间
+ params.put("othershipstarttime", TransportDateFormat.format(certificate.getOthershipstarttime()));
+ //运输结束时间
+ params.put("othershipendtime", TransportDateFormat.format(certificate.getOthershipendtime()));
+ //承运人:资质证明编号没有这个字段
+ params.put("carrierroadnumber", certificate.getCarrierroadnumber());
+ //运输途径地 任意一处
+ params.put("byway", certificate.getOtherdeparture());
+ List<TransportCertificateApproach> approachList = certificate.getTransportApproach();
+ if (approachList != null && approachList.size() > 0) {
+ params.put("byway", approachList.get(0).getCity());
+ }
+ //
+ }
+ //驾驶员和押运员
+ {
+ List<TransportCertificatePerson> transportPersons = certificate.getTransportPerson();
+ params.put("driver1", "");
+ params.put("driver1id", "");
+ params.put("driver1license", "");
+ params.put("driver2", "");
+ params.put("driver2id", "");
+ params.put("driver2license", "");
+ params.put("escort1", "");
+ params.put("escort1id", "");
+ params.put("escort1license", "");
+ params.put("escort2", "");
+ params.put("escort2id", "");
+ params.put("escort2license", "");
+ List<TransportCertificatePerson> drivers = new ArrayList<>();
+ List<TransportCertificatePerson> escorts = new ArrayList<>();
+ if (transportPersons != null && transportPersons.size() > 0) {
+ for (TransportCertificatePerson person : transportPersons) {
+ if (person.getType().equals(CertificatePersonType.DRIVER.getMsg())) {
+ drivers.add(person);
+ }
+ if (person.getType().equals(CertificatePersonType.ESCORT.getMsg())) {
+ escorts.add(person);
+ }
+
+ }
+ }
+ if (drivers.size() == 1) {
+ params.put("driver1", drivers.get(0).getPersonname());
+ params.put("driver1id", drivers.get(0).getPersonidentify());
+ params.put("driver1license", drivers.get(0).getNumber());
+ }
+ if (drivers.size() > 1) {
+ params.put("driver2", drivers.get(1).getPersonname());
+ params.put("driver2id", drivers.get(1).getPersonidentify());
+ params.put("driver2license", drivers.get(1).getNumber());
+ }
+ if (escorts.size() == 1) {
+ params.put("escort1", escorts.get(0).getPersonname());
+ params.put("escort2id", escorts.get(0).getPersonidentify());
+ params.put("escort2license", escorts.get(0).getNumber());
+ }
+ if (escorts.size() > 1) {
+ params.put("escort1", escorts.get(1).getPersonname());
+ params.put("escort2id", escorts.get(1).getPersonidentify());
+ params.put("escort2license", escorts.get(1).getNumber());
+ }
+ }
+ //产品信息
+ {
+ List<String[]> productPrintList= new ArrayList<>();
+ List<TransportCertificateProduct> productList = certificate.getTransportProduct();
+ assert productList.size() > 0;
+
+ for (TransportCertificateProduct product : productList) {
+ productPrintList.add(new String[]
+ {
+ //种类
+ product.getType(),
+ //规格
+ product.getSpecification(),
+ //数量
+ product.getNum()+"(箱)",
+ });
+ }
+
+ String[] rowParams = {"type", "specification", "num"};
+ HashMap<String,WordTemplate.Table> tables = new HashMap<>();
+ WordTemplate.Table t1 = new WordTemplate.Table(rowParams,productPrintList);
+ tables.put("mainTable", t1);
+ wordTemplate.replaceDocument2(tables, params);
+ }
+ //存一份到本地
+ wordTemplate.saveFile(fileUrl);
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ throw new BusinessException("找不到模板文件路径");
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new BusinessException("发生错误,请联系管理员");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return fileUrlReturn;
+ }
+
+
+ /**
+ * @Description: 获取运输证信息
+ * @date 2021/5/14 19:04
+ */
+ @Override
+ public TransportCertificate getByCode(String code) {
+ if (StringUtils.isBlank(code)) {
+ throw new BusinessException("运输证编号不能为空");
+ }
+ return transportCertificateMapper.selectByCode(code);
+ }
+
+ /**
+ * @Description: 修改运输证产品的到货数量
+ * @date 2021/5/14 19:54
+ */
+ @Override
+ @Transactional
+ public synchronized void modTransportProductArrivalNum(TransportArrivalVo transportArrivalVo, UserInfo userInfo) {
+
+ if (StringUtils.isBlank(transportArrivalVo.getCode())) {
+ throw new BusinessException("运输证的单位编号不能为空");
+ }
+ List<TransportCertificateProduct> productList = transportArrivalVo.getProductList();
+ if (productList == null || productList.size() < 1) {
+ throw new BusinessException("产品信息不能为空");
+ }
+
+ for (TransportCertificateProduct product : productList) {
+ //更新产品到货量信息
+ TransportCertificateProduct oldProduct = transportCertificateProductService.getById(product.getId());
+ Integer oldArrivalNum = oldProduct.getArrivalnum();
+ Integer newArrivalNum = oldArrivalNum + product.getArrivalnum();
+ oldProduct.setArrivalnum(newArrivalNum);
+ if (oldProduct.getNum() < newArrivalNum) {
+ throw new BusinessException("该次操作使得总到货量超过产品预计到货量,操作失败。");
+ }
+ transportCertificateProductService.updateById(oldProduct);
+ //插入发送到货数的记录信息
+ TransportCertificateArrivalRecord record = new TransportCertificateArrivalRecord();
+ record.setCertificatecode(transportArrivalVo.getCode());
+ record.setProductcode(oldProduct.getProductcode());
+ record.setProductname(oldProduct.getName());
+ record.setCreateby(userInfo.getId());
+ record.setCreatebyname(userInfo.getUsername());
+ record.setCreatetime(new Date());
+ record.setArrivalnum(product.getArrivalnum());
+ record.setValidflag(true);
+ transportCertificateArrivalRecordService.save(record);
+ }
+
+ //获取单子所有产品
+ List<TransportCertificateProduct> list = transportCertificateProductService.getListByTransportCode(transportArrivalVo.getCode());
+ boolean flag = true;
+ if (list.size() > 0) {
+ for (TransportCertificateProduct product : list) {
+ if (!product.getNum().equals(product.getArrivalnum())) {
+ flag = false;
+ }
+ }
+ }
+
+ //数量全相等
+ if (flag) {
+ this.updateByCode(transportArrivalVo.getCode(),"全部入库");
+ }else{
+ this.updateByCode(transportArrivalVo.getCode(),"部分入库");
+ }
+ }
+
+ @Override
+ public void updateByCode(String code,String certstatus) {
+ LambdaUpdateWrapper<TransportCertificate> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.set(TransportCertificate::getCertstatus, certstatus).eq(TransportCertificate::getCode,code);
+ this.update(updateWrapper);
+ }
+
+ @Override
+ public List<TransportCertificate> selectWarnList(Date start, Date end) {
+ return transportCertificateMapper.selectWarnList(start,end);
+ }
+
+
+// @Override
+// public IPage selectTransportArrivalPages(Page<Object> page, UserInfo user) {
+// return null;
+// }
+}
--
Gitblit v1.9.2