|
@@ -39,10 +39,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
-import java.io.File;
|
|
|
-import java.io.FileReader;
|
|
|
-import java.io.FileWriter;
|
|
|
-import java.io.IOException;
|
|
|
+import java.io.*;
|
|
|
+import java.nio.ByteBuffer;
|
|
|
+import java.nio.channels.FileChannel;
|
|
|
+import java.nio.charset.Charset;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
@@ -281,6 +281,119 @@ public class AwaitSendController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 创建电子面单上需要显示的产品名称
|
|
|
+ * @param salesOrderInfo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String ctrOrderProduct(SalesOrder salesOrderInfo) {
|
|
|
+ /// 产品名称
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
+ item.setItemOrderId(salesOrderInfo.getSalesId());
|
|
|
+ List<SalesOrderItem> items = salesOrderService.listSalesOrderItem(item);
|
|
|
+ StringBuilder goodName = new StringBuilder();
|
|
|
+ for (SalesOrderItem temp : items) {
|
|
|
+ goodName.append(temp.getProductAbbreviation()).append("(").append(temp.getColorAbbreviation()).append(")*").append(temp.getItemNum()).append(";");
|
|
|
+ }
|
|
|
+ // 维修编号
|
|
|
+ List<ComplaintDetectInfo> listDetect = complaintDetectInfoService.listComplaintDetectBySalesId(salesOrderInfo.getSalesOrderId());
|
|
|
+ if(listDetect != null && listDetect.size() > 0){
|
|
|
+ goodName.append("<br>【维修编号:");
|
|
|
+ for(int i = 0; i< listDetect.size();i++ ){
|
|
|
+ ComplaintDetectInfo detectInfo = listDetect.get(i);
|
|
|
+ if( i == 0){
|
|
|
+ goodName.append(detectInfo.getDetectNumber());
|
|
|
+ }else{
|
|
|
+ goodName.append(",").append(detectInfo.getDetectNumber());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ goodName.append("】");
|
|
|
+ }
|
|
|
+ // 特殊需求
|
|
|
+ if ("DBL".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())) {
|
|
|
+ goodName.append("<重泡比8000已备案>");
|
|
|
+ }
|
|
|
+ // 打印日期
|
|
|
+ goodName.append("【D").append(DateTimeUtil.format(new Date(), "MMdd")).append("】");
|
|
|
+ return goodName.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理请求第三方平台的Handler
|
|
|
+ * @param salesOrderInfo
|
|
|
+ * @param commodity
|
|
|
+ */
|
|
|
+ private Double henderProduct(SalesOrder salesOrderInfo, List<Map<String, Object>> commodity, String uuid) {
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
+ item.setItemOrderId(salesOrderInfo.getSalesId());
|
|
|
+ List<SalesOrderItem> items = salesOrderService.listSalesOrderItem(item);
|
|
|
+ // 整个产品的重量
|
|
|
+ double colorIsWeight = 0.00;
|
|
|
+ int Goodsquantity = 0;
|
|
|
+ for (SalesOrderItem temp : items) {
|
|
|
+ if(temp.getColorIsWeight() != null){
|
|
|
+ colorIsWeight += temp.getColorIsWeight();
|
|
|
+ }
|
|
|
+ Goodsquantity += temp.getItemNum();
|
|
|
+ }
|
|
|
+ // 增加产品信息
|
|
|
+ Map<String, Object> product1 = new HashMap<String, Object>(3);
|
|
|
+ product1.put("GoodsName", uuid);
|
|
|
+ product1.put("Goodsquantity", Goodsquantity);
|
|
|
+ product1.put("GoodsWeight", colorIsWeight/1000);
|
|
|
+ commodity.add(product1);
|
|
|
+ return colorIsWeight;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 生成一个订单对应的UUID
|
|
|
+ * @param orderId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private String ctrOrderUUID(String orderId) {
|
|
|
+ String key = CACHE_PRODUCT_NAME_TO_UUID_NAME + orderId;
|
|
|
+ String uuid = RedisUtils.get(key);
|
|
|
+ if(uuid == null){
|
|
|
+ uuid = UUIDGenerator.getUUID().substring(0, 8);
|
|
|
+ RedisUtils.put(key,uuid);
|
|
|
+ RedisUtils.expire(key, DateTimeUtil.addDay(15));
|
|
|
+ }
|
|
|
+ return uuid;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存物流文件
|
|
|
+ * @param filePath
|
|
|
+ * @param text
|
|
|
+ * @param orderId
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+ private void savePostFile(String filePath, String text, String orderId) throws IOException {
|
|
|
+ File dir = new File(filePath + File.separator + "send_order");
|
|
|
+ if (!dir.exists()) {
|
|
|
+ dir.mkdir();
|
|
|
+ }
|
|
|
+ File file = new File(dir.getAbsolutePath() + File.separator + orderId + ".txt");
|
|
|
+ if (!file.createNewFile()) {
|
|
|
+ throw new RuntimeException("创建文件失败");
|
|
|
+ }
|
|
|
+ FileChannel foChannel = null;
|
|
|
+ try {
|
|
|
+ byte[] jsonByte = text.getBytes("UTF-8");
|
|
|
+ ByteBuffer buffer = ByteBuffer.allocate(jsonByte.length);
|
|
|
+ buffer.put(jsonByte);
|
|
|
+ foChannel = new FileOutputStream(file).getChannel();
|
|
|
+ buffer.flip();
|
|
|
+ foChannel.write(buffer);
|
|
|
+ } catch (Exception e) {
|
|
|
+ LOGGER.error("", e);
|
|
|
+ } finally {
|
|
|
+ if (foChannel != null) {
|
|
|
+ foChannel.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 打单发货,兼容多台打印机并发打印
|
|
|
* @param orderId
|
|
|
* @param salesId
|
|
@@ -325,10 +438,9 @@ public class AwaitSendController {
|
|
|
return ResponseJson.getFAILURE().addResponseKeyValue("error","物流公司未设置对应的数据" + salesOrderInfo.getSalesPostFirm());
|
|
|
}
|
|
|
|
|
|
- //判断是否是京东订单 订单来源 2020年3月30日新增
|
|
|
+ // 判断是否是京东订单 订单来源 2020年3月30日新增
|
|
|
if("jd".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())){
|
|
|
StoreInfo storeInfo = storeInfoService.getStoreInfoById(salesOrderInfo.getSalesStoreId());
|
|
|
-
|
|
|
if(storeInfo.getStoreName().contains("京东")){
|
|
|
eOrderRequestData.ExpType = "1";
|
|
|
eOrderRequestData.ThrOrderCode = salesOrderInfo.getSalesExOrderId();
|
|
@@ -341,21 +453,20 @@ public class AwaitSendController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- // 组装通用数据
|
|
|
+ /* 组装通用数据 */
|
|
|
eOrderRequestData.OrderCode = salesOrderInfo.getSalesOrderId();
|
|
|
eOrderRequestData.PayType = (3);
|
|
|
eOrderRequestData.Cost = (0.00);
|
|
|
eOrderRequestData.OtherCost = (0.0);
|
|
|
eOrderRequestData.Remark = salesId.toString();
|
|
|
eOrderRequestData.IsReturnPrintTemplate = 1;
|
|
|
- // 收件人信息
|
|
|
+ /* 收件人信息 */
|
|
|
String[] addrs = salesOrderInfo.getSalesAddressInfo().split(" ");
|
|
|
if (addrs.length <= 3) {
|
|
|
addrs = salesOrderInfo.getSalesAddressInfo().split("-");
|
|
|
}
|
|
|
String addrDetails = salesOrderInfo.getSalesAddressInfo().substring(addrs[0].length() + addrs[1].length() + addrs[2].length() + 3);
|
|
|
- Map<String, Object> receiver = new HashMap<String, Object>();
|
|
|
+ Map<String, Object> receiver = new HashMap<String, Object>(7);
|
|
|
receiver.put("Name", salesOrderInfo.getSalesAddressName());
|
|
|
receiver.put("Tel", salesOrderInfo.getSalesAddressTel());
|
|
|
receiver.put("ProvinceName", AddrUtil.dealProvince(addrs[0]));
|
|
@@ -364,8 +475,8 @@ public class AwaitSendController {
|
|
|
receiver.put("Address", addrDetails);
|
|
|
receiver.put("PostCode", salesOrderInfo.getSalesAddressPostcode());
|
|
|
eOrderRequestData.Receiver = (receiver);
|
|
|
- // 发件人信息
|
|
|
- Map<String, Object> sender = new HashMap<String, Object>();
|
|
|
+ /* 发件人信息 */
|
|
|
+ Map<String, Object> sender = new HashMap<String, Object>(7);
|
|
|
sender.put("Name", storeShip.getStoreShipName());
|
|
|
sender.put("Tel", storeShip.getStoreShipTel());
|
|
|
sender.put("ProvinceName", storeShip.getStoreShipProvince());
|
|
@@ -374,215 +485,100 @@ public class AwaitSendController {
|
|
|
sender.put("Address", storeShip.getStoreShipAddress());
|
|
|
sender.put("PostCode", "523660");
|
|
|
eOrderRequestData.Sender = (sender);
|
|
|
- // 产品信息
|
|
|
+ /* 产品信息 */
|
|
|
List<Map<String, Object>> commodity = new ArrayList<>();
|
|
|
- SalesOrderItem item = new SalesOrderItem();
|
|
|
- item.setItemOrderId(salesOrderInfo.getSalesId());
|
|
|
- List<SalesOrderItem> items = salesOrderService.listSalesOrderItem(item);
|
|
|
- // 整个产品的重量
|
|
|
- Double colorIsWeight = 0.00;
|
|
|
- StringBuilder goodName = new StringBuilder();
|
|
|
- int Goodsquantity = 0;
|
|
|
- for (SalesOrderItem temp : items) {
|
|
|
- goodName.append(temp.getProductAbbreviation())
|
|
|
- .append("(")
|
|
|
- .append(temp.getColorAbbreviation())
|
|
|
- .append(")*")
|
|
|
- .append(temp.getItemNum())
|
|
|
- .append(";");
|
|
|
- if(temp.getColorIsWeight() != null){
|
|
|
- colorIsWeight += temp.getColorIsWeight();
|
|
|
- }
|
|
|
- Goodsquantity += temp.getItemNum();
|
|
|
- }
|
|
|
- // 20190603增加需求:产品名称后面增加售后维修编号
|
|
|
- if(salesOrderInfo.getComplaintDetectInfoList() != null && salesOrderInfo.getComplaintDetectInfoList().size() > 0){
|
|
|
- goodName.append("<br>【维修编号:");
|
|
|
- for(int i = 0; i< salesOrderInfo.getComplaintDetectInfoList().size();i++ ){
|
|
|
- ComplaintDetectInfo detectInfo = salesOrderInfo.getComplaintDetectInfoList().get(i);
|
|
|
- if( i == 0){
|
|
|
- goodName.append(detectInfo.getDetectNumber());
|
|
|
- }else{
|
|
|
- goodName.append(",").append(detectInfo.getDetectNumber());
|
|
|
- }
|
|
|
- }
|
|
|
- goodName.append("】");
|
|
|
- }
|
|
|
- if ("DBL".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())) {
|
|
|
- goodName.append("重泡比8000已备案");
|
|
|
- }
|
|
|
- // 20181113增加需求:产品名称后面增加打印订单日期
|
|
|
- goodName.append("【D").append(DateTimeUtil.format(new Date(), "MMdd")).append("】");
|
|
|
- // 生成一个uuid对应订单的产品信息,因为第三方系统不会完整保存产品名称到电子面单,会导致无法拣货
|
|
|
- String key = CACHE_PRODUCT_NAME_TO_UUID_NAME + orderId;
|
|
|
- String uuid = RedisUtils.get(key);
|
|
|
- if(uuid == null){
|
|
|
- uuid = UUIDGenerator.getUUID().substring(0, 8);
|
|
|
- RedisUtils.put(key,uuid);
|
|
|
- RedisUtils.expire(key, DateTimeUtil.addDay(15));
|
|
|
- }
|
|
|
- // 增加产品信息
|
|
|
- Map<String, Object> product1 = new HashMap<String, Object>();
|
|
|
- product1.put("GoodsName", uuid);
|
|
|
- product1.put("Goodsquantity", Goodsquantity);
|
|
|
- // 计算产品重量deliver_statistics
|
|
|
- product1.put("GoodsWeight", colorIsWeight/1000);
|
|
|
- commodity.add(product1);
|
|
|
+ double colorIsWeight = henderProduct(salesOrderInfo, commodity, ctrOrderUUID(salesOrderInfo.getSalesOrderId()));
|
|
|
eOrderRequestData.Commodity = (commodity);
|
|
|
eOrderRequestData.Weight = (colorIsWeight/1000);
|
|
|
- //如果订单是字母件则按照子母件方式传值
|
|
|
- List<SalesOrder> orders = salesOrderService.listSublistCount(salesId);
|
|
|
- if(logisticsInfo.getLogisticsIsLashSingle() == 1 && orders != null && orders.size() > 0){
|
|
|
- eOrderRequestData.Quantity = orders.size()+1;
|
|
|
+
|
|
|
+ /* 当前快递是否支持子母件,如果支持,需要将子母件的内容传递到系统 */
|
|
|
+ List<SalesOrder> orders = salesOrderService.listSublistCount(salesId);
|
|
|
+ if(logisticsInfo.getLogisticsIsLashSingle() == 1 && orders.size() >= 1){
|
|
|
+ eOrderRequestData.Quantity = (orders.size()+1);
|
|
|
}else{
|
|
|
eOrderRequestData.Quantity = 1;
|
|
|
}
|
|
|
|
|
|
- //第三方发货,传入的id
|
|
|
- Set<Integer> salesIdsset = new HashSet<Integer>();
|
|
|
- Set<String> salesCodeSet = new HashSet<String>();
|
|
|
- salesIdsset.add(salesOrderInfo.getSalesId());
|
|
|
- salesCodeSet.add(salesOrderInfo.getSalesDealCode());
|
|
|
-
|
|
|
+ JSONObject jsonObject = null;
|
|
|
try {
|
|
|
// 向第三方系统【快递鸟】提交订单数据,第三方系统会检测订单是否重复
|
|
|
- String json = OrderUtils.orderOnlineByJson(eOrderRequestData);
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(json);
|
|
|
- boolean flag = jsonObject.getBoolean("Success");
|
|
|
- if (flag) {
|
|
|
-
|
|
|
- // 主订单发货 : 仅针对已经通知通知配货的订单(如果已发货,此处不修改对应的订单数据)
|
|
|
- SalesOrder salesOrder = new SalesOrder();
|
|
|
- salesOrder.setSalesPostNum(jsonObject.getJSONObject("Order").getString("LogisticCode"));
|
|
|
- salesOrder.setSalesShippingStatus(1);
|
|
|
- salesOrder.setSalesSendTime(new Date());
|
|
|
- salesOrder.setSalesId(salesId);
|
|
|
- salesOrder.setSalesOldOrderStatus(11);
|
|
|
- Integer res = salesOrderService.updateSalesOrder(salesOrder);
|
|
|
- if (res == null || res <= 0) {
|
|
|
- return ResponseJson.getFAILURE().addResponseKeyValue("error", "订单状态非通知配货,无法打印");
|
|
|
- }
|
|
|
-
|
|
|
- /*子母单 : 获取子单打印模板集合*/
|
|
|
- JSONArray subPrintTemplates = jsonObject.getJSONArray("SubPrintTemplates");
|
|
|
- if(logisticsInfo.getLogisticsIsLashSingle() == 1 && orders != null && orders.size() >= 1 && subPrintTemplates.size() >= 1){
|
|
|
- //获取子单物流单号集合
|
|
|
- JSONArray subOrders = jsonObject.getJSONArray("SubOrders");
|
|
|
- //替换子单产品名称
|
|
|
- JSONArray subTemplates = new JSONArray();
|
|
|
- // 整个产品的重量
|
|
|
- SalesOrderItem it = new SalesOrderItem();
|
|
|
- for(int i = 0 ;i < subPrintTemplates.size(); i++){
|
|
|
- String subTemplate = subPrintTemplates.getString(i);
|
|
|
- StringBuilder productName = new StringBuilder();
|
|
|
- it.setItemOrderId(orders.get(i).getSalesId());
|
|
|
- List<SalesOrderItem> its = salesOrderService.listSalesOrderItem(it);
|
|
|
- for (SalesOrderItem temp : its) {
|
|
|
- productName
|
|
|
- .append(temp.getProductAbbreviation())
|
|
|
- .append("(")
|
|
|
- .append(temp.getColorAbbreviation())
|
|
|
- .append(")*")
|
|
|
- .append(temp.getItemNum())
|
|
|
- .append(";");
|
|
|
- }
|
|
|
- //替换产品名
|
|
|
- //如果是京东订单则需直接根据订单id替换产品信息
|
|
|
- if("jd".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())){
|
|
|
- subTemplate = subTemplate.replace(salesId.toString(), "<font style=\"font-size:6px\">"+productName.toString()+"</font>");
|
|
|
- }else{
|
|
|
- subTemplate = subTemplate.replace(uuid, productName.toString());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //替换订单号
|
|
|
- subTemplate = subTemplate.replace(orderId, orders.get(i).getSalesOrderId());
|
|
|
- //替换备注
|
|
|
- subTemplate = subTemplate.replace(salesId.toString(), orders.get(i).getSalesId().toString());
|
|
|
- subTemplates.add(subTemplate);
|
|
|
- // 订单发货 : 仅针对已经通知通知配货的订单(如果已发货,此处不修改对应的订单数据)
|
|
|
- SalesOrder order = new SalesOrder();
|
|
|
- order.setSalesPostNum(subOrders.get(i).toString());
|
|
|
- order.setSalesShippingStatus(1);
|
|
|
- order.setSalesSendTime(new Date());
|
|
|
- order.setSalesId(orders.get(i).getSalesId());
|
|
|
- order.setSalesOldOrderStatus(11);
|
|
|
- Integer msg = salesOrderService.updateSalesOrder(order);
|
|
|
- salesIdsset.add(orders.get(i).getSalesId());
|
|
|
- salesCodeSet.add(orders.get(i).getSalesDealCode());
|
|
|
- if (msg == null || msg <= 0) {
|
|
|
- return ResponseJson.getFAILURE().addResponseKeyValue("error", "子订单状态非通知配货,无法打印");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- jsonObject.put("SubPrintTemplates",subTemplates);
|
|
|
- }
|
|
|
- /*子母单设置 end*/
|
|
|
-
|
|
|
-
|
|
|
- // 替换母订单产品名称
|
|
|
- //如果是京东订单则需直接根据订单id替换产品信息
|
|
|
- if("jd".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())){
|
|
|
- jsonObject.put("PrintTemplate",jsonObject.get("PrintTemplate").toString().replace(salesId.toString(), "<font style=\"font-size:6px\">"+goodName.toString()+"</font>"));
|
|
|
- json = jsonObject.toString();
|
|
|
- } else if("sto".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())) {
|
|
|
- jsonObject.put("PrintTemplate",jsonObject.get("PrintTemplate").toString().replace(salesId.toString(), goodName.toString()));
|
|
|
- json = jsonObject.toString();
|
|
|
- }else{
|
|
|
- jsonObject.put("PrintTemplate",jsonObject.get("PrintTemplate").toString().replace(uuid, goodName.toString()));
|
|
|
- json = jsonObject.toString();
|
|
|
- }
|
|
|
-
|
|
|
+ jsonObject = JSONObject.parseObject(OrderUtils.orderOnlineByJson(eOrderRequestData));
|
|
|
+ if (!jsonObject.getBoolean("Success")) {
|
|
|
+ // 获取电子面单失败
|
|
|
+ String reason = jsonObject.get("Reason").toString();
|
|
|
+ LOGGER.error("{} 获取电子面单失败,原因:{}", orderId, reason);
|
|
|
+ throw new RuntimeException(reason);
|
|
|
+ }
|
|
|
|
|
|
- // 保存HTML
|
|
|
- String filePath = request.getServletContext().getRealPath("/common/");
|
|
|
- File dir = new File(filePath + File.separator + "send_order");
|
|
|
- if (!dir.exists()) {
|
|
|
- dir.mkdir();
|
|
|
- }
|
|
|
- File file = new File(dir.getAbsolutePath() + File.separator + orderId + ".txt");
|
|
|
- if (!file.createNewFile()) {
|
|
|
- return ResponseJson.getFAILURE().addResponseKeyValue("error", "创建文件失败");
|
|
|
- }
|
|
|
- FileWriter fileWriter = null;
|
|
|
- try {
|
|
|
- fileWriter = new FileWriter(file, false);
|
|
|
- fileWriter.write(jsonObject.toString());
|
|
|
- } catch (Exception e) {
|
|
|
- LOGGER.error("", e);
|
|
|
- } finally {
|
|
|
- if (fileWriter != null) {
|
|
|
- fileWriter.close();
|
|
|
+ // 批量向Service提交变更的信息
|
|
|
+ List<SalesOrder> changeOrderList = new ArrayList<>(eOrderRequestData.Quantity + 1);
|
|
|
+ // 主订单发货 : 仅针对已经通知通知配货的订单(如果已发货,此处不修改对应的订单数据)
|
|
|
+ SalesOrder salesOrder = new SalesOrder();
|
|
|
+ salesOrder.setSalesPostNum(jsonObject.getJSONObject("Order").getString("LogisticCode"));
|
|
|
+ salesOrder.setSalesDealCode(salesOrderInfo.getSalesDealCode());
|
|
|
+ salesOrder.setSalesId(salesId);
|
|
|
+ changeOrderList.add(salesOrder);
|
|
|
+
|
|
|
+ /*子母单 : 获取子单打印模板集合*/
|
|
|
+ JSONArray subPrintTemplates = jsonObject.getJSONArray("SubPrintTemplates");
|
|
|
+ if(eOrderRequestData.Quantity > 1){
|
|
|
+ //获取子单物流单号集合
|
|
|
+ JSONArray subOrders = jsonObject.getJSONArray("SubOrders");
|
|
|
+ //替换子单产品名称
|
|
|
+ JSONArray subTemplates = new JSONArray();
|
|
|
+ for(int i = 0 ;i < subPrintTemplates.size(); i++){
|
|
|
+ // 电子面单
|
|
|
+ String subTemplate = subPrintTemplates.getString(i);
|
|
|
+ // 组装电子面单上的产品名称
|
|
|
+ String productName = ctrOrderProduct(orders.get(i));
|
|
|
+ if("jd".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())){
|
|
|
+ subTemplate = subTemplate.replace(salesId.toString(), "<font style=\"font-size:6px\">"+productName+"</font>");
|
|
|
+ }else{
|
|
|
+ subTemplate = subTemplate.replace(ctrOrderUUID(salesOrderInfo.getSalesOrderId()), productName);
|
|
|
}
|
|
|
+ // 替换订单号
|
|
|
+ subTemplate = subTemplate.replace(orderId, orders.get(i).getSalesOrderId());
|
|
|
+ // 替换备注
|
|
|
+ subTemplate = subTemplate.replace(salesId.toString(), orders.get(i).getSalesId().toString());
|
|
|
+
|
|
|
+ // 订单发货 : 仅针对已经通知通知配货的订单(如果已发货,此处不修改对应的订单数据)
|
|
|
+ SalesOrder order = new SalesOrder();
|
|
|
+ order.setSalesPostNum(subOrders.get(i).toString());
|
|
|
+ order.setSalesId(orders.get(i).getSalesId());
|
|
|
+ order.setSalesDealCode(orders.get(i).getSalesDealCode());
|
|
|
+ changeOrderList.add(order);
|
|
|
+ // 将改变后的打印模板添加到对应的List中
|
|
|
+ subTemplates.add(subTemplate);
|
|
|
}
|
|
|
+ // 将更改后的模板添加(自动覆盖以前的)
|
|
|
+ jsonObject.put("SubPrintTemplates",subTemplates);
|
|
|
+ }
|
|
|
+ /*子母单设置 end*/
|
|
|
|
|
|
- //小亚通订单,调用接口发货
|
|
|
- try{
|
|
|
- Integer[] saleIds = salesIdsset.toArray(new Integer[] {});
|
|
|
- boolean isShip = orderSyncLogService.syncXYTOrderShip(saleIds);
|
|
|
- }catch (Exception e){
|
|
|
- LOGGER.error("小亚通发货接口调用失败");
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
|
|
|
- //添加操作跟踪信息
|
|
|
- for (String aSalesCodeSet : salesCodeSet) {
|
|
|
- OrderTracking orderTracking = new OrderTracking();
|
|
|
- orderTracking.setAdminId(AdminUtils.getLoginAdminId());
|
|
|
- orderTracking.setSalesDealCode(aSalesCodeSet);
|
|
|
- orderTracking.setTrackingDesc("打印订单");
|
|
|
- salesOrderService.addTracking(orderTracking);
|
|
|
- }
|
|
|
+ // 替换母订单产品名称
|
|
|
+ String goodName = ctrOrderProduct(salesOrderInfo);
|
|
|
+ if("jd".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())){
|
|
|
+ jsonObject.put("PrintTemplate",jsonObject.get("PrintTemplate").toString().replace(salesId.toString(), "<font style=\"font-size:6px\">"+goodName+"</font>"));
|
|
|
+ } else if("sto".equalsIgnoreCase(salesOrderInfo.getSalesPostFirm())) {
|
|
|
+ jsonObject.put("PrintTemplate",jsonObject.get("PrintTemplate").toString().replace(salesId.toString(), goodName));
|
|
|
+ }else{
|
|
|
+ jsonObject.put("PrintTemplate",jsonObject.get("PrintTemplate").toString().replace(ctrOrderUUID(salesOrderInfo.getSalesOrderId()), goodName));
|
|
|
+ }
|
|
|
|
|
|
- } else {
|
|
|
- // 获取电子面单失败
|
|
|
- LOGGER.error("{} 获取电子面单失败,原因:{}", orderId, jsonObject.get("Reason"));
|
|
|
+ // 提交数据库
|
|
|
+ if (salesOrderService.printOrder(changeOrderList, AdminUtils.getLoginAdminId()) <= 0) {
|
|
|
+ throw new RuntimeException("订单发货失败,请核查");
|
|
|
}
|
|
|
- return ResponseJson.getSUCCESS().addResponseKeyValue("json", json);
|
|
|
+
|
|
|
+ // 保存HTML
|
|
|
+ savePostFile(request.getServletContext().getRealPath("/common/"), jsonObject.toJSONString(), salesOrderInfo.getSalesOrderId());
|
|
|
} catch (Exception e) {
|
|
|
LOGGER.error("", e);
|
|
|
return ResponseJson.getFAILURE().addResponseKeyValue("error", e.getMessage());
|
|
|
}
|
|
|
+ // 成功
|
|
|
+ return ResponseJson.getSUCCESS().addResponseKeyValue("json", jsonObject.toJSONString());
|
|
|
}
|
|
|
|
|
|
// 重新打印发货
|