diff --git a/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java new file mode 100644 index 0000000..0a5b2d6 --- /dev/null +++ b/emis-api-web/src/main/java/com/xdadan/erp/apiweb/WaybillController.java @@ -0,0 +1,362 @@ + +/** + * @Project: emis + * @Title: EmisWaybillController.java + * @author linfso + * @date 2024-02-29 08:15:14 + * @Copyright: ShangHai Duta 2022 All rights reserved. + * @version v1.0 + * @Description:

运单列表 控制器

+ */ + +package com.xdadan.erp.apiweb; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xdadan.erp.common.annotation.Log; +import com.xdadan.erp.common.config.PayConfig; +import com.xdadan.erp.common.core.controller.BaseController; +import com.xdadan.erp.common.core.domain.AjaxResult; +import com.xdadan.erp.common.core.domain.entity.SysUser; +import com.xdadan.erp.common.core.page.TableDataInfo; +import com.xdadan.erp.common.enums.BusinessType; +import com.xdadan.erp.common.utils.DateUtils; +import com.xdadan.erp.common.utils.idgen.UUID; +import com.xdadan.erp.emis.domain.EmisTmsScanRecord; +import com.xdadan.erp.emis.domain.EmisWaybill; +import com.xdadan.erp.emis.domain.enumtype.ScanType; +import com.xdadan.erp.emis.domain.exception.EmisBizError; +import com.xdadan.erp.emis.domain.vo.FeeItem; +import com.xdadan.erp.emis.domain.vo.WaybillOrder; +import com.xdadan.erp.emis.service.EmisBaseService; +import com.xdadan.erp.emis.service.IEmisElectronicSitePagService; +import com.xdadan.erp.emis.service.IEmisTmsScanRecordService; +import com.xdadan.erp.emis.service.IEmisWaybillService; +import com.xdadan.erp.emis.service.print.IXddTplPrint; +import com.xdadan.erp.emis.service.print.tanex.TanexTplPrintImpl; +import com.xdadan.erp.emis.utils.WaybillHelper; +import com.xdadan.erp.system.domain.SysFileInfo; +import com.xdadan.erp.system.service.ISysFileInfoService; +import com.xdadan.erp.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.http.MediaType; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.*; +import java.nio.charset.Charset; +import java.util.*; + +/** + * 运单列表Controller + * + * @author linfso + * @date 2024-02-29 08:15:14 + */ +@Slf4j +@RestController +@RequestMapping("/apiweb/emisWaybill") +public class WaybillController extends BaseController +{ + @Autowired + private IEmisWaybillService emisWaybillService; + + @Autowired + private EmisBaseService emisBaseService; + + @Autowired + private ISysFileInfoService sysFileInfoService; + + @Autowired + private ISysUserService sysUserService; + + @Autowired + private IEmisElectronicSitePagService emisElectronicSitePagService; + + @Autowired + private IEmisTmsScanRecordService emisTmsScanRecordService; + + /** + * 获取电子运单信息 + */ + @GetMapping(value = "/getWaybillDetail") + public AjaxResult getWaybillDetail(String billCode ,String orderSn) + { + try { + WaybillOrder waybillOrder=null; + + if(StringUtils.isEmpty(billCode) ){ + return AjaxResult.error("参数错误"); + } + + billCode= WaybillHelper.formatQueryValue(billCode); + if(!StringUtils.isEmpty(billCode) ){ + boolean isExists=emisBaseService.checkWaybillIsExists(billCode); + if(!isExists){ + return AjaxResult.error("运单不存在"); + } + String mainBillCode=emisBaseService.getMainBillCode(billCode); + waybillOrder = emisWaybillService.getWaybillOrderByBillCode(mainBillCode); + if(waybillOrder==null){ + return AjaxResult.error("运单不存在"); + } + + // 返回子单信息 + waybillOrder.setBillCode(billCode); + + }else if(!StringUtils.isEmpty(orderSn)){ + waybillOrder = emisWaybillService.getWaybillOrderByOrderSn(orderSn); + if(waybillOrder==null){ + return AjaxResult.error("订单不存在"); + } + } + + // 获取取件员电话 + if(!StringUtils.isEmpty(waybillOrder.getTakePieceEmployeeCode())){ + SysUser user= sysUserService.selectUserByUserName(waybillOrder.getTakePieceEmployeeCode()); + waybillOrder.setTakePieceEmployeePhone(user.getPhonenumber()); + } + + return AjaxResult.success("获取成功",waybillOrder); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + } + + @Log(title = "Excel草稿方式下单", businessType = BusinessType.INSERT) + @PostMapping(value = "/draftSubmitOrder") + public AjaxResult draftSubmitOrder(@RequestBody EmisWaybill emisWaybillSave) + { + + JSONObject jObjOut = new JSONObject(); + String result="success"; + String msg="下单成功"; + try { + + emisWaybillService.draftSubmitOrder(emisWaybillSave); + jObjOut.put("billDetail", emisWaybillSave); + + }catch(EmisBizError ex){ + ex.printStackTrace(); + + result="fail"; + msg=ex.getErrorCode()+":"+ex.getMessage(); + + } + catch (DuplicateKeyException e) { + e.printStackTrace(); + result="fail"; + msg="运单号重复"; + + } + catch (Exception ex){ + result="fail"; + ex.printStackTrace(); + msg="系统异常:"+ex.getMessage(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + msg=((EmisBizError)ex).getErrorCode()+":"+ex.getMessage(); + } + + } + jObjOut.put("result", result); + jObjOut.put("msg", msg); + return AjaxResult.success("成功", jObjOut); + + } + + @Log(title = "取消订单", businessType = BusinessType.INSERT) + @PostMapping(value = "/cancelOrder") + public AjaxResult cancelOrder(@Valid @RequestBody WaybillOrder waybillOrder) + { + try { + + if(StringUtils.isEmpty(waybillOrder.getOrderSn()) ){ + return AjaxResult.error("订单号不能为空"); + } + + EmisWaybill emisWaybill = new EmisWaybill(); + emisWaybill.setOrderSn(waybillOrder.getOrderSn()); + emisWaybill.setOrderRemark(waybillOrder.getOrderRemark()); + emisWaybillService.cancelOrder(emisWaybill); + + return AjaxResult.success("取消成功"); + }catch(EmisBizError ex){ + ex.printStackTrace(); + return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + } + + @Log(title = "运单实时下单", businessType = BusinessType.INSERT) + @PostMapping(value = "/realSubmitOrder") + public AjaxResult realSubmitOrder(@Valid @RequestBody WaybillOrder waybillOrder, Integer isModify) + { + try { + + if(StringUtils.isEmpty(waybillOrder.getBillCode()) ){ + waybillOrder.setBillCode(emisElectronicSitePagService.realMatchWaybill(waybillOrder.getSendSiteCode(),"T7080")); + } + + EmisWaybill emisWaybillSave = waybillOrder.toDb(); + + emisWaybillService.realSubmitOrder(emisWaybillSave); + + JSONObject jObjOut = new JSONObject(); + jObjOut.put("billCode", waybillOrder.getBillCode()); +// jObjOut.put("prodName", waybillOrder.getProductType()); + + return AjaxResult.success("下单成功", jObjOut); + }catch(EmisBizError ex){ + ex.printStackTrace(); + return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); + } + catch (DuplicateKeyException e) { + e.printStackTrace(); + return AjaxResult.error("运单号重复!"); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + } + + + @Log(title = "运费试算", businessType = BusinessType.OTHER) + @PostMapping(value = "/preCalcWaybillFee") + public AjaxResult preCalcWaybillFee(@RequestBody WaybillOrder waybillOrder) + { + try { + EmisWaybill emisWaybillSave = waybillOrder.toDb(); + List estList=emisWaybillService.preCalcWaybillFee(emisWaybillSave); + return AjaxResult.success("试算成功", estList); + } + catch(EmisBizError ex){ + ex.printStackTrace(); + return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + } + + @Log(title = "计算运费", businessType = BusinessType.OTHER) + @PostMapping(value = "/calcWaybillFee") + public AjaxResult calcWaybillFee(@RequestBody WaybillOrder waybillOrder) + { + try { + EmisWaybill emisWaybillSave = waybillOrder.toDb(); + + emisWaybillService.calcWaybillFee(emisWaybillSave); + + JSONObject jObjFee = new JSONObject(); + jObjFee.put("totalFee", emisWaybillSave.getFreight()); + + FeeItem feeItem = new FeeItem(); + jObjFee.put("feeList",feeItem.cvtToVoList(emisWaybillSave.getFeeitemList())); + + return AjaxResult.success("计算成功", jObjFee); + } + catch(EmisBizError ex){ + ex.printStackTrace(); + return AjaxResult.error("("+ex.getErrorCode()+")"+ex.getMessage()); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + } + + @Log(title = "计算结算重量", businessType = BusinessType.OTHER) + @PostMapping(value = "/calcSetteldWeight") + public AjaxResult calcSetteldWeight(@RequestBody WaybillOrder waybillOrder) + { + try { + EmisWaybill emisWaybillSave = waybillOrder.toDb(); + + emisWaybillService.calcSettledWeight(emisWaybillSave); + + JSONObject jObjRst = new JSONObject(); + jObjRst.put("settlementWeight", emisWaybillSave.getSettlementWeight()); + jObjRst.put("volumeWeight", emisWaybillSave.getVolumeWeight()); + return AjaxResult.success("计算成功", jObjRst); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + + } + + @Log(title = "计算体积重量", businessType = BusinessType.OTHER) + @PostMapping(value = "/calcVolumeWeight") + public AjaxResult calcVolumeWeight(@RequestBody WaybillOrder waybillOrder) + { + try { + EmisWaybill emisWaybillSave = waybillOrder.toDb(); + + emisWaybillService.calcVolumeWeight(emisWaybillSave); + + JSONObject jObjRst = new JSONObject(); + jObjRst.put("volumeWeight", emisWaybillSave.getVolumeWeight()); + return AjaxResult.success("计算成功", jObjRst); + } + catch (Exception ex){ + ex.printStackTrace(); + // 返回子定义异常 + if(ex instanceof EmisBizError){ + return AjaxResult.error(ex.getMessage(),((EmisBizError)ex).getErrorCode()); + } + + return AjaxResult.error("服务器异常,联系客服"); + } + + } + + + + +}