package com.gk.firework.Controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gk.firework.Controller.Base.BaseController; import com.gk.firework.Domain.*; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.Utils.FilterObject; import com.gk.firework.Domain.Utils.Msg; import com.gk.firework.Domain.Utils.Properties; import com.gk.firework.Domain.Vo.Product2JsonVo; import com.gk.firework.Domain.Vo.TransportArrivalVo; import com.gk.firework.Domain.Vo.TransportCertVo; import com.gk.firework.Service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; import java.util.Map; @Api(tags = "运输证管理") @RequestMapping("/transport") @RestController public class TransportController extends BaseController { @Autowired private TransportCarrierService transportCarrierService; @Autowired private TransportPersonService transportPersonService; @Autowired private TransportCertificateService transportCertificateService; @Autowired private TransportCertService transportCertService; @Autowired private TransportCertificateFileService transportCertificateFileService; @Autowired private TransportCertificateArrivalRecordService transportCertificateArrivalRecordService; @Autowired private ProductService productService; /** * @Description: 承运人管理 * @date 2021/3/30 11:04 */ @PostMapping("/carrierList") @ApiOperation(value = "承运人查询", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "页码",required = true), @ApiImplicitParam(name = "pageSize",value = "页面大小",required = true), @ApiImplicitParam(name = "filter",value = "过滤条件",required = true), }) Object carrierList(@RequestBody FilterObject carrierFilter) { Integer pageIndex = carrierFilter.getPageIndex(); Integer pageSize = carrierFilter.getPageSize(); IPage page = transportCarrierService.selectPage(new Page<>(pageIndex,pageSize),carrierFilter.getFilter()); return success(page); } @PostMapping("/addcarrier") @ApiOperation(value = "新增承运人", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "承运人id(不传)"), @ApiImplicitParam(name = "companyname",value = "单位名称"), @ApiImplicitParam(name = "number",value = "危险货物道路运输资质证号"), @ApiImplicitParam(name = "phone",value = "联系电话"), @ApiImplicitParam(name = "validtime",value = "有效时间"), }) Object addCarrier(@RequestBody TransportCarrier transportCarrier) { transportCarrierService.checkCarrier(transportCarrier); transportCarrierService.addCarrier(transportCarrier,getUser()); return success(); } @PostMapping("/putcarrier") @ApiOperation(value = "修改承运人", httpMethod = "PUT") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "承运人id(必传)",required = true), @ApiImplicitParam(name = "companyname",value = "单位名称"), @ApiImplicitParam(name = "number",value = "危险货物道路运输资质证号"), @ApiImplicitParam(name = "phone",value = "联系电话"), @ApiImplicitParam(name = "validtime",value = "有效时间"), }) Object modCarrier(@RequestBody TransportCarrier transportCarrier) { transportCarrierService.checkCarrier(transportCarrier); transportCarrierService.modCarrier(transportCarrier,getUser()); return success(); } @PostMapping("/delcarrier") @ApiOperation(value = "删除承运人", httpMethod = "DELETE") @ApiImplicitParam(name = "id",value = "承运人id(必传)") Object delCarrier(@RequestParam Long id) { transportCarrierService.delCarrier(id,getUser()); return success(); } /** * @Description: 驾驶员|押运员管理 * @date 2021/3/30 11:04 */ @PostMapping("/personList") @ApiOperation(value = "驾驶员|押运员查询", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "页码",required = true), @ApiImplicitParam(name = "pageSize",value = "页面大小",required = true), @ApiImplicitParam(name = "filter",value = "过滤条件",required = true), }) Object personList(@RequestBody FilterObject carrierFilter) { Integer pageIndex = carrierFilter.getPageIndex(); Integer pageSize = carrierFilter.getPageSize(); IPage page = transportPersonService.selectPage(new Page<>(pageIndex,pageSize),carrierFilter.getFilter()); return success(page); } @PostMapping("/addperson") @ApiOperation(value = "新增驾驶员|押运员", httpMethod = "POST") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "承运人id(不传)"), @ApiImplicitParam(name = "type", value = "类别", required = true), @ApiImplicitParam(name = "name", value = "姓名", required = true), @ApiImplicitParam(name = "phone", value = "电话", required = true), @ApiImplicitParam(name = "identify", value = "身份证号", required = true), @ApiImplicitParam(name = "certificate", value = "资格证", required = true), @ApiImplicitParam(name = "validtime", value = "有效期", required = true), @ApiImplicitParam(name = "belongid", value = "隶属承运人id", required = true), @ApiImplicitParam(name = "belongname", value = "隶属承运人name", required = true), }) Object addPerson(@RequestBody TransportPerson transportPerson) { transportPersonService.checkPerson(transportPerson); transportPersonService.addPerson(transportPerson, getUser()); return success(); } @PostMapping("/putperson") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "驾驶员|押运员id(必传)", required = true), @ApiImplicitParam(name = "type", value = "类别", required = true), @ApiImplicitParam(name = "name", value = "姓名", required = true), @ApiImplicitParam(name = "identify", value = "身份证号", required = true), @ApiImplicitParam(name = "certificate", value = "资格证", required = true), @ApiImplicitParam(name = "validtime", value = "有效期", required = true), @ApiImplicitParam(name = "belongid", value = "隶属承运人id", required = true), @ApiImplicitParam(name = "belongname", value = "隶属承运人name", required = true), @ApiImplicitParam(name = "phone", value = "电话", required = true), }) Object modPerson(@RequestBody TransportPerson transportPerson) { transportPersonService.modPerson(transportPerson, getUser()); return success(); } @PostMapping("/delperson") @ApiImplicitParam(name = "id", value = "驾驶员|押运员id(必传)", required = true) Object delPerson(@RequestParam Long id) { transportPersonService.delPerson(id, getUser()); return success(); } /** * @Description: 运输证 * @date 2021/3/31 15:39 */ @PostMapping("/certificateList") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "页码",required = true), @ApiImplicitParam(name = "pageSize",value = "页面大小",required = true), @ApiImplicitParam(name = "filter.code", value = "运输证编码", required = true), @ApiImplicitParam(name = "filter.province", value = "省", required = true), @ApiImplicitParam(name = "filter.city", value = "市", required = true), @ApiImplicitParam(name = "filter.district", value = "区", required = true), @ApiImplicitParam(name = "filter.street", value = "街道", required = true), @ApiImplicitParam(name = "filter.committee", value = "委员会", required = true), }) Object certificateList(@RequestBody FilterObject certificateFilter) { Integer pageIndex = certificateFilter.getPageIndex(); Integer pageSize = certificateFilter.getPageSize(); IPage page = transportCertificateService.selectPages(new Page<>(pageIndex,pageSize), certificateFilter.getFilter(),getUser()); return success(page); } /** * @Description: 新增运输证 * @date 2021/3/31 17:58 */ @PostMapping("/upload") @ApiImplicitParam(name = "file", value = "上传文件", required = true) Object upload(MultipartFile[] file) { try { List urls = transportCertificateFileService.uploadFiles(file); return success(urls); } catch (Exception e) { e.printStackTrace(); Msg msg = new Msg(); msg.setCode("400"); msg.setMessage("上传失败"); return msg; } } @PostMapping("/addcertificate") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "主键id(不传)",required = true), @ApiImplicitParam(name = "code",value = "运输编号(不传)",required = true), @ApiImplicitParam(name = "type",value = "运输证类型",required = true), @ApiImplicitParam(name = "contractcode",value = "电子合同编号",required = true), @ApiImplicitParam(name = "salecompanyid", value = "销售单位id", required = true), @ApiImplicitParam(name = "salecompanyname", value = "销售单位name", required = true), @ApiImplicitParam(name = "productionlicense", value = "生产经营许可证", required = true), @ApiImplicitParam(name = "contractnumber", value = "安全买卖合同编号", required = true), @ApiImplicitParam(name = "shippercompanyname", value = "托运人:单位名称 ", required = true), @ApiImplicitParam(name = "shipperaddress", value = "托运人:地址", required = true), @ApiImplicitParam(name = "shipperprincipalname", value = "运人:负责人姓名 ", required = true), @ApiImplicitParam(name = "shipperprincipalphone", value = "托运人:负责人电话", required = true), @ApiImplicitParam(name = "shippermanagername", value = "托运人:经办人姓名", required = true), @ApiImplicitParam(name = "shippermanageridentify", value = "托运人:经办人身份证号", required = true), @ApiImplicitParam(name = "shippermanagerphone", value = "托运人:经办人电话", required = true), @ApiImplicitParam(name = "receivercompanyname", value = "收货人:单位名称", required = true), @ApiImplicitParam(name = "receiveraddress", value = "收货人:地址", required = true), @ApiImplicitParam(name = "receiverprincipalname", value = "收货人:负责人姓名", required = true), @ApiImplicitParam(name = "receiverprincipalphone", value = "收货人:负责人电话", required = true), @ApiImplicitParam(name = "carrierid", value = "承运人id", required = true), @ApiImplicitParam(name = "carriercompanyname", value = "承运人单位名称", required = true), @ApiImplicitParam(name = "carrieraddress", value = "承运人:地址", required = true), @ApiImplicitParam(name = "carrierprincipalname", value = "承运人:负责人姓名", required = true), @ApiImplicitParam(name = "carrierprincipalphone", value = "承运人:负责人电话", required = true), @ApiImplicitParam(name = "carriernumber", value = "承运人:道路运输证号", required = true), @ApiImplicitParam(name = "carriercarnumber", value = "承运人:运输车辆牌号", required = true), @ApiImplicitParam(name = "carriervalidtime", value = "承运人:证件有效期", required = true), @ApiImplicitParam(name = "otherdeparture", value = "其他:起始地", required = true), @ApiImplicitParam(name = "otherdestination", value = "其他:到达地", required = true), @ApiImplicitParam(name = "othershipstarttime", value = "其他:运输起始时间", required = true), @ApiImplicitParam(name = "othershipendtime", value = "其他:运输截止时间", required = true), @ApiImplicitParam(name = "othermemo", value = "其他:备注", required = true), @ApiImplicitParam(name = "transportPerson", value = "押运人|驾驶员", required = true), @ApiImplicitParam(name = "transportProduct", value = "运输产品", required = true), @ApiImplicitParam(name = "transportApproach", value = "途径地", required = true), @ApiImplicitParam(name = "transportFile", value = "上传10文件", required = true), }) Object addCertificateApply(@RequestBody TransportCertificate transportCertificate) { transportCertificateService.checkAddApply(transportCertificate); transportCertificateService.addCertificateApply(transportCertificate,getUser()); return success(); } @PostMapping("/putcertificate") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "主键id(不传)",required = true), @ApiImplicitParam(name = "type",value = "运输证类型",required = true), @ApiImplicitParam(name = "code",value = "运输编号(不传)",required = true), @ApiImplicitParam(name = "contractcode",value = "电子合同编号",required = true), @ApiImplicitParam(name = "salecompanyid", value = "销售单位id", required = true), @ApiImplicitParam(name = "salecompanyname", value = "销售单位name", required = true), @ApiImplicitParam(name = "productionlicense", value = "生产经营许可证", required = true), @ApiImplicitParam(name = "contractnumber", value = "安全买卖合同编号", required = true), @ApiImplicitParam(name = "shippercompanyname", value = "托运人:单位名称 ", required = true), @ApiImplicitParam(name = "shipperaddress", value = "托运人:地址", required = true), @ApiImplicitParam(name = "shipperprincipalname", value = "运人:负责人姓名 ", required = true), @ApiImplicitParam(name = "shipperprincipalphone", value = "托运人:负责人电话", required = true), @ApiImplicitParam(name = "shippermanagername", value = "托运人:经办人姓名", required = true), @ApiImplicitParam(name = "shippermanageridentify", value = "托运人:经办人身份证号", required = true), @ApiImplicitParam(name = "shippermanagerphone", value = "托运人:经办人电话", required = true), @ApiImplicitParam(name = "receivercompanyname", value = "收货人:单位名称", required = true), @ApiImplicitParam(name = "receiveraddress", value = "收货人:地址", required = true), @ApiImplicitParam(name = "receiverprincipalname", value = "收货人:负责人姓名", required = true), @ApiImplicitParam(name = "receiverprincipalphone", value = "收货人:负责人电话", required = true), @ApiImplicitParam(name = "carrierid", value = "承运人id", required = true), @ApiImplicitParam(name = "carriercompanyname", value = "承运人单位名称", required = true), @ApiImplicitParam(name = "carrieraddress", value = "承运人:地址", required = true), @ApiImplicitParam(name = "carrierprincipalname", value = "承运人:负责人姓名", required = true), @ApiImplicitParam(name = "carrierprincipalphone", value = "承运人:负责人电话", required = true), @ApiImplicitParam(name = "carriernumber", value = "承运人:道路运输证号", required = true), @ApiImplicitParam(name = "carriercarnumber", value = "承运人:运输车辆牌号", required = true), @ApiImplicitParam(name = "carriervalidtime", value = "承运人:证件有效期", required = true), @ApiImplicitParam(name = "otherdeparture", value = "其他:起始地", required = true), @ApiImplicitParam(name = "otherdestination", value = "其他:到达地", required = true), @ApiImplicitParam(name = "othershipstarttime", value = "其他:运输起始时间", required = true), @ApiImplicitParam(name = "othershipendtime", value = "其他:运输截止时间", required = true), @ApiImplicitParam(name = "othermemo", value = "其他:备注", required = true), @ApiImplicitParam(name = "transportPerson", value = "押运人|驾驶员", required = true), @ApiImplicitParam(name = "transportProduct", value = "运输产品", required = true), @ApiImplicitParam(name = "transportApproach", value = "途径地", required = true), @ApiImplicitParam(name = "transportFile", value = "上传10文件", required = true), }) Object modCertificateApply(@RequestBody TransportCertificate transportCertificate) { transportCertificateService.checkAddApply(transportCertificate); transportCertificateService.modCertificateApply(transportCertificate,getUser()); return success(); } /** * @Description: 提交单子 * @date 2021/5/11 16:08 */ @PostMapping("/submit") @ApiImplicitParam(name = "id", value = "单子", required = true) Object summitApply(@RequestParam Long id) { transportCertificateService.summitApply(id,getUser()); return success(); } /** * @Description: 监管部门审批单子 * @date 2021/5/11 16:08 */ @PostMapping("/approve") @ApiImplicitParam(name = "id", value = "单子", required = true) Object approveApply(@RequestBody JSONObject approveInfo) { transportCertificateService.approveApply(approveInfo,getUser()); return success(); } /** * @Description: 监管部门拒绝单子 * @date 2021/5/11 16:08 */ @PostMapping("/refuse") @ApiImplicitParam(name = "id", value = "单子", required = true) Object refuseApply(@RequestParam Long id) { transportCertificateService.refuseApply(id,getUser()); return success(); } /** * @Description: 导出运输许可证 三联 * @date 2021/5/11 17:14 */ @GetMapping("/export/certificate") Object exportCertificate(HttpServletRequest request, HttpServletResponse response, @RequestParam Long id) throws IOException { String fileName = "烟花爆竹道路许可证.docx"; String fileUrlOnServer = transportCertificateService.exportCertificate(id); return success(fileUrlOnServer); // response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); // response.setContentType("application/msword"); // // 创建输出流 // try (FileInputStream in = new FileInputStream(fileUrlOnServer); OutputStream out = response.getOutputStream()) { // // 缓存区 // byte[] buffer = new byte[1024]; // int len = 0; // // 循环将输入流中的内容读取到缓冲区中 // while ((len = in.read(buffer)) > 0) { // out.write(buffer, 0, len); // } // } } /** * @Description: 导出运输许可证申请 * @date 2021/5/13 14:00 */ @GetMapping("/export/certificateApply") Object exportCertificateApply( HttpServletResponse response, @RequestParam Long id) throws IOException { String fileName = "烟花爆竹道路许可证申请.docx"; String fileUrlOnServer = transportCertificateService.exportCertificateApply(id); return success(fileUrlOnServer); // response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); // response.setContentType("application/msword"); // // 创建输出流 // try (FileInputStream in = new FileInputStream(fileUrlOnServer); OutputStream out = response.getOutputStream()) { // // 缓存区 // byte[] buffer = new byte[1024]; // int len = 0; // // 循环将输入流中的内容读取到缓冲区中 // while ((len = in.read(buffer)) > 0) { // out.write(buffer, 0, len); // } // } } @PostMapping("/delcertificate") @ApiImplicitParam(name = "id", value = "运输证id", required = true) Object delCertificate(@RequestParam Long id) { transportCertificateService.delCertificate(id,getUser()); return success(); } /** * @Description: 运输证 改 * @date 2021/3/31 15:39 */ @PostMapping("/certList") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "页码",required = true), @ApiImplicitParam(name = "pageSize",value = "页面大小",required = true), @ApiImplicitParam(name = "filter.code", value = "运输证编码", required = true), @ApiImplicitParam(name = "filter.province", value = "省", required = true), @ApiImplicitParam(name = "filter.city", value = "市", required = true), @ApiImplicitParam(name = "filter.district", value = "区", required = true), @ApiImplicitParam(name = "filter.street", value = "街道", required = true), @ApiImplicitParam(name = "filter.committee", value = "委员会", required = true), }) Object transportCertList(@RequestBody FilterObject filterObject) { Integer pageIndex = filterObject.getPageIndex(); Integer pageSize = filterObject.getPageSize(); IPage page = transportCertService.selectPages(new Page<>(pageIndex,pageSize), filterObject.getFilter(),getUser()); return success(page); } /** * @Description: 新增运输证 * @date 2021/4/25 9:30 */ @PostMapping("/addcert") @ApiOperation("新增运输证") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "主键id(不传)",required = true), @ApiImplicitParam(name = "code",value = "运输编号(不传)",required = true), @ApiImplicitParam(name = "contractcode",value = "电子合同编号",required = true), @ApiImplicitParam(name = "receivercompanyname", value = "收货人:单位名称", required = true), @ApiImplicitParam(name = "receiveraddress", value = "收货人:地址", required = true), @ApiImplicitParam(name = "receiverprincipalname", value = "收货人:负责人姓名", required = true), @ApiImplicitParam(name = "receiverprincipalphone", value = "收货人:负责人电话", required = true), @ApiImplicitParam(name = "carnumber", value = "运输车辆牌号", required = true), @ApiImplicitParam(name = "transportPerson", value = "押运人|驾驶员", required = true), @ApiImplicitParam(name = "transportProduct", value = "运输产品", required = true), @ApiImplicitParam(name = "file", value = "上传文件", required = true), }) Object addTransportCertificate(TransportCertVo transportCertVo) { Msg msg = new Msg(); msg.setCode("200"); try { transportCertService.addCert(transportCertVo, getUser()); } catch (BusinessException e) { msg.setMessage(e.getMessage()); msg.setCode("400"); } catch (Exception e) { e.printStackTrace(); msg.setCode("400"); msg.setMessage("发生错误,请联系管理员"); } return msg; } /** * @Description: 修改运输证 * @date 2021/4/25 9:30 */ @PostMapping("/putcert") @ApiOperation("修改运输证") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "主键id(不传)",required = true), @ApiImplicitParam(name = "type",value = "运输证类型",required = true), @ApiImplicitParam(name = "code",value = "运输编号(不传)",required = true), @ApiImplicitParam(name = "contractcode",value = "电子合同编号",required = true), @ApiImplicitParam(name = "receivercompanyname", value = "收货人:单位名称", required = true), @ApiImplicitParam(name = "receiveraddress", value = "收货人:地址", required = true), @ApiImplicitParam(name = "receiverprincipalname", value = "收货人:负责人姓名", required = true), @ApiImplicitParam(name = "receiverprincipalphone", value = "收货人:负责人电话", required = true), @ApiImplicitParam(name = "carnumber", value = "运输车辆牌号", required = true), @ApiImplicitParam(name = "transportPerson", value = "押运人|驾驶员", required = true), @ApiImplicitParam(name = "transportProduct", value = "运输产品", required = true), @ApiImplicitParam(name = "file", value = "上传文件", required = true), }) Object modCert( TransportCertVo transportCertVo) { Msg msg = new Msg(); msg.setCode("200"); try { transportCertService.modCert(transportCertVo,getUser()); } catch (BusinessException e) { msg.setMessage(e.getMessage()); msg.setCode("400"); } catch (Exception e) { e.printStackTrace(); msg.setCode("400"); msg.setMessage("发生错误,请联系管理员"); } return msg; } @PostMapping("/delcert") @ApiOperation("删除运输证") Object delCert(@RequestParam Long id) { transportCertService.delCert(id,getUser()); return success(); } /** * @Description: 根据运输证编号获取运输证信息 * @date 2021/5/14 18:41 */ @GetMapping("/getCertByCode") @ApiOperation("获取运输证信息") Object getCertByCode(@RequestParam String code) { TransportCertificate certificate = transportCertificateService.getByCode(code); return success(certificate); } /** * @Description: 根据单号修改产品到货数量 * @date 2021/5/14 19:21 */ @PostMapping("/sendArrivalNum") @ApiOperation("获取运输证信息") Object sendArrivalNum(@RequestBody TransportArrivalVo transportArrivalVo) { transportCertificateService.modTransportProductArrivalNum(transportArrivalVo,getUser()); return success(); } /** * @Description: 查找到运输证到货数量 * @date 2021/5/14 20:20 */ @GetMapping("/transportArrivalList") @ApiOperation("获取运输证信息") Object getTransportArrival(@RequestParam Integer pageIndex,@RequestParam Integer pageSize) { IPage page = transportCertificateArrivalRecordService.selectTransportArrivalPages(new Page<>(pageIndex,pageSize),getUser()); return success(page); } /** * @Description: 获取运输证到货记录详情 * @date 2021/5/14 20:38 */ @GetMapping("/getTransportArrivalDetail") @ApiOperation("获取运输证信息") Object getTransportArrivalDetail(@RequestParam String certificateCode) { List list = transportCertificateArrivalRecordService.getTransportArrivalDetail(certificateCode,getUser()); return success(list); } /** * @Description: 上传的excel文件转换成json产品列表返回 * @date 2021/5/25 10:19 */ @PostMapping("/product2json") public Msg product2json(MultipartFile file) { List product2JsonVos = productService.transform2JsonSimple(file, getUser()); return success(product2JsonVos); } }