From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 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