package com.gk.firework.Service.ServiceImpl; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.CertificateStatus; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.Utils.Properties; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Domain.Utils.UploadUtil; import com.gk.firework.Domain.Vo.TransportCertVo; import com.gk.firework.Mapper.TransportCertMapper; import com.gk.firework.Service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import sun.rmi.transport.Transport; import java.util.*; @Service("transportCertService") public class TransportCertServiceImpl extends ServiceImpl implements TransportCertService { @Autowired private UserService userService; @Autowired private TransportCertProductService transportCertProductService; @Autowired private TransportCertificatePersonService transportCertificatePersonService; @Autowired private TransportCertMapper transportCertMapper; @Autowired private TransportCertFileService transportCertFileService; @Override @Transactional public void addCert(TransportCertVo transportCertVo, UserInfo user) throws Exception { if (StringUtils.isBlank(transportCertVo.getCode())) { throw new BusinessException("运输证编号不能为空"); } //判断重复 if (this.countByCode(transportCertVo.getCode()) > 0) { throw new BusinessException("运输证编号已经重复"); } JSONArray personJson = JSONArray.parseArray(transportCertVo.getTransportPerson()); JSONArray productJson = JSONArray.parseArray(transportCertVo.getTransportProduct()); if (personJson == null) { throw new BusinessException("产品信息不能不填"); } if (productJson == null) { throw new BusinessException("驾驶员|押运员不能不填"); } UserInfo userInfo = userService.getById(user.getId()); if (StringUtils.isBlank(userInfo.getCompanynumber())){ throw new BusinessException("没有权限创建运输证"); } //新增运输证基本信息 TransportCert transportCert = new TransportCert(); { // String code = "TC-" + System.currentTimeMillis(); //运输证上传改手动上传-》编号已存在(手填) transportCert.setCode(transportCertVo.getCode()); transportCert.setCreateby(user.getId()); transportCert.setCreatebyname(user.getUsername()); transportCert.setEnterprisenumber(userInfo.getCompanynumber()); transportCert.setCreatetime(new Date()); transportCert.setValidflag(true); transportCert.setStatus(CertificateStatus.PENDING); transportCert.setCarnumber(transportCertVo.getCarnumber()); transportCert.setContractcode(transportCertVo.getContractcode()); transportCert.setReceiveraddress(transportCertVo.getReceiveraddress()); transportCert.setReceivercompanyname(transportCertVo.getReceivercompanyname()); transportCert.setReceiverprincipalname(transportCertVo.getReceiverprincipalname()); transportCert.setReceiveraddress(transportCertVo.getReceiveraddress()); transportCert.setReceiverprincipalphone(transportCertVo.getReceiverprincipalphone()); transportCert.setTransportPerson(personJson.toJavaList(TransportCertificatePerson.class)); transportCert.setTransportProduct(productJson.toJavaList(TransportCertProduct.class)); transportCert.setprocesstime(transportCertVo.getProcesstime()); this.save(transportCert); } //新增产品 { List products = transportCert.getTransportProduct(); if (products != null && products.size() > 0) { for (TransportCertProduct product : products) { product.setCertificatecode(transportCert.getCode()); product.setValidflag(true); } transportCertProductService.saveBatch(products); } } //新增 驾驶员|押运员 { List persons = transportCert.getTransportPerson(); if (persons != null && persons.size() > 0) { for (TransportCertificatePerson person : persons) { person.setCertificatecode(transportCert.getCode()); person.setValidflag(true); } transportCertificatePersonService.saveBatch(persons); } } //新增文件信息 { MultipartFile[] files = transportCertVo.getFile(); List adds; if (files != null && files.length > 0) { adds = new ArrayList<>(); for (MultipartFile file : files) { String name = UploadUtil.uploadFile(file, com.gk.firework.Domain.Utils.Properties.transportCertificatePath); TransportCertFile certFile = new TransportCertFile(); certFile.setCertificatecode(transportCert.getCode()); certFile.setFilename(file.getOriginalFilename()); certFile.setType(file.getContentType()); certFile.setUrl(Properties.transportCertificate + name); certFile.setValidflag(true); adds.add(certFile); } transportCertFileService.saveBatch(adds); } } } /** * @Description: 分页查询运输证 * @date 2021/4/25 15:11 */ @Override public IPage selectPages(Page page, Map filter, UserInfo userInfo) { UserInfo user = userService.getById(userInfo.getId()); Map 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")); List list = transportCertMapper.selectPages(page, params); return page.setRecords(list); } /** * @Description: 修改运输证 * @date 2021/4/25 15:29 */ @Override @Transactional public void modCert(TransportCertVo transportCertVo, UserInfo userInfo) throws Exception { if (StringUtils.isBlank(transportCertVo.getCode())) { throw new BusinessException("运输证编号不能为空"); } JSONArray personJson = JSONArray.parseArray(transportCertVo.getTransportPerson()); JSONArray productJson = JSONArray.parseArray(transportCertVo.getTransportProduct()); if (personJson == null) { throw new BusinessException("产品信息不能不填"); } if (productJson == null) { throw new BusinessException("驾驶员|押运员不能不填"); } //修改运输证基本信息 TransportCert transportCert = new TransportCert(); UserInfo user = userService.getById(userInfo.getId()); { transportCert.setCode(transportCertVo.getCode()); transportCert.setId(transportCertVo.getId()); transportCert.setCarnumber(transportCertVo.getCarnumber()); transportCert.setContractcode(transportCertVo.getContractcode()); transportCert.setReceiveraddress(transportCertVo.getReceiveraddress()); transportCert.setReceivercompanyname(transportCertVo.getReceivercompanyname()); transportCert.setReceiverprincipalname(transportCertVo.getReceiverprincipalname()); transportCert.setReceiveraddress(transportCertVo.getReceiveraddress()); transportCert.setReceiverprincipalphone(transportCertVo.getReceiverprincipalphone()); transportCert.setUpdateby(user.getId()); transportCert.setUpdatebyname(user.getUsername()); transportCert.setUpdatetime(new Date()); transportCert.setTransportPerson(personJson.toJavaList(TransportCertificatePerson.class)); transportCert.setTransportProduct(productJson.toJavaList(TransportCertProduct.class)); transportCert.setprocesstime(transportCertVo.getProcesstime()); this.updateById(transportCert); } //修改产品 { List adds = new ArrayList<>(); List dels = new ArrayList<>(); List upds = new ArrayList<>(); List products = transportCert.getTransportProduct(); List productList = transportCertProductService.selectProduct(transportCert.getCode()); if (products.size() > 0) { for (TransportCertProduct product : products) { if (product.getId() == null) { product.setValidflag(true); product.setCertificatecode(transportCert.getCode()); adds.add(product); } } } //B-A if (productList.size() > 0) { for (int i = 0; i < productList.size(); i++) { boolean flag = true; for (int j = 0; j < products.size(); j++) { if (productList.get(i).getId().equals(products.get(j).getId())) { upds.add(products.get(j)); flag = false; } } if (flag) { productList.get(i).setValidflag(false); dels.add(productList.get(i)); } } } if (adds.size() > 0) { transportCertProductService.saveBatch(adds); } if (dels.size() > 0) { transportCertProductService.updateBatchById(dels); } if (upds.size() > 0) { transportCertProductService.updateBatchById(upds); } } //修改人员 { List adds = new ArrayList<>(); List dels = new ArrayList<>(); List upds = new ArrayList<>(); List persons = transportCert.getTransportPerson(); List personList = transportCertificatePersonService.selectProduct(transportCert.getCode()); if (persons.size() > 0) { for (TransportCertificatePerson person : persons) { if (person.getId() == null) { person.setValidflag(true); person.setCertificatecode(transportCert.getCode()); adds.add(person); } } } //B-A if (personList.size() > 0) { for (int i = 0; i < personList.size(); i++) { boolean flag = true; for (int j = 0; j < persons.size(); j++) { if (personList.get(i).getId().equals(persons.get(j).getId())) { upds.add(persons.get(j)); flag = false; } } if (flag) { personList.get(i).setValidflag(false); dels.add(personList.get(i)); } } } if (adds.size() > 0) { transportCertificatePersonService.saveBatch(adds); } if (dels.size() > 0) { transportCertificatePersonService.updateBatchById(dels); } if (upds.size() > 0) { transportCertificatePersonService.updateBatchById(upds); } } //修改文件(每次上传都是覆盖) { MultipartFile[] files = transportCertVo.getFile(); List adds; if (files != null && files.length > 0) { //1.删除所有文件 transportCertFileService.deleteByCode(transportCert.getCode()); //2.新增新上传文件 adds = new ArrayList<>(); for (MultipartFile file : files) { String name = UploadUtil.uploadFile(file, com.gk.firework.Domain.Utils.Properties.transportCertificatePath); TransportCertFile certFile = new TransportCertFile(); certFile.setCertificatecode(transportCert.getCode()); certFile.setFilename(file.getOriginalFilename()); certFile.setType(file.getContentType()); certFile.setUrl(Properties.transportCertificate + name); certFile.setValidflag(true); adds.add(certFile); } transportCertFileService.saveBatch(adds); } } } /** * @Description: 删除单子 * @date 2021/4/28 8:33 */ @Override public void delCert(Long id, UserInfo user) { TransportCert cert = new TransportCert(); cert.setId(id); cert.setUpdatetime(new Date()); cert.setUpdateby(user.getId()); cert.setUpdatebyname(user.getUsername()); cert.setValidflag(false); this.updateById(cert); TransportCert transport = this.getById(cert); //删除产品 transportCertProductService.deleteProductByCode(transport.getCode()); //删除人员 transportCertificatePersonService.deleteByCertificateCode(transport.getCode()); //删除文件 transportCertFileService.deleteByCode(transport.getCode()); } @Override public int countByCode(String code) { if (StringUtils.isBlank(code)) { throw new BusinessException("运输证编号不能为空"); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TransportCert::getValidflag, true) .eq(TransportCert::getCode, code); return transportCertMapper.selectCount(queryWrapper); } @Override public List selectWarnList(Date start, Date end) { return transportCertMapper.selectWarnList(start,end); } }