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<TransportCertMapper, TransportCert> 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<TransportCertProduct> products = transportCert.getTransportProduct();
|
if (products != null && products.size() > 0) {
|
for (TransportCertProduct product : products) {
|
product.setCertificatecode(transportCert.getCode());
|
product.setValidflag(true);
|
}
|
transportCertProductService.saveBatch(products);
|
}
|
}
|
|
//新增 驾驶员|押运员
|
{
|
List<TransportCertificatePerson> 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<TransportCertFile> 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<TransportCert> 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"));
|
List<TransportCert> 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<TransportCertProduct> adds = new ArrayList<>();
|
List<TransportCertProduct> dels = new ArrayList<>();
|
List<TransportCertProduct> upds = new ArrayList<>();
|
List<TransportCertProduct> products = transportCert.getTransportProduct();
|
List<TransportCertProduct> 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<TransportCertificatePerson> adds = new ArrayList<>();
|
List<TransportCertificatePerson> dels = new ArrayList<>();
|
List<TransportCertificatePerson> upds = new ArrayList<>();
|
List<TransportCertificatePerson> persons = transportCert.getTransportPerson();
|
List<TransportCertificatePerson> 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<TransportCertFile> 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<TransportCert> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(TransportCert::getValidflag, true)
|
.eq(TransportCert::getCode, code);
|
return transportCertMapper.selectCount(queryWrapper);
|
}
|
|
@Override
|
public List<TransportCert> selectWarnList(Date start, Date end) {
|
return transportCertMapper.selectWarnList(start,end);
|
}
|
|
|
}
|