|
@@ -2,6 +2,8 @@ package com.iamberry.rst.controllers.order;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.iamberry.rst.core.cm.*;
|
|
import com.iamberry.rst.core.cm.*;
|
|
|
|
+import com.iamberry.rst.core.fm.InventoryInfo;
|
|
|
|
+import com.iamberry.rst.core.fm.InventoryLog;
|
|
import com.iamberry.rst.core.order.*;
|
|
import com.iamberry.rst.core.order.*;
|
|
import com.iamberry.rst.core.page.PagedResult;
|
|
import com.iamberry.rst.core.page.PagedResult;
|
|
import com.iamberry.rst.core.pts.PtsBatch;
|
|
import com.iamberry.rst.core.pts.PtsBatch;
|
|
@@ -59,8 +61,10 @@ public class AwaitSendController {
|
|
private CustomerService customerService;
|
|
private CustomerService customerService;
|
|
@Autowired
|
|
@Autowired
|
|
private CmRelationService cmRelationService;
|
|
private CmRelationService cmRelationService;
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private InventoryService inventoryService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private InventoryLogService inventoryLogService;
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(AwaitSendController.class);
|
|
|
|
|
|
|
|
|
|
@@ -89,37 +93,37 @@ public class AwaitSendController {
|
|
if(orderWarehouse == null){
|
|
if(orderWarehouse == null){
|
|
return mv;
|
|
return mv;
|
|
}
|
|
}
|
|
- salesOrder.setSalesWarehouseId(orderWarehouse.getWarehouseId());
|
|
|
|
- salesOrder.setSalesStatus(1);
|
|
|
|
- PagedResult<SalesOrder> pagedResult = salesOrderService.listAwaitSendSalesOrderPage(pageNO, pageSize, salesOrder,totalNum == 0);
|
|
|
|
- if (totalNum != 0) {
|
|
|
|
- pagedResult.setTotal(totalNum);
|
|
|
|
- }
|
|
|
|
- // 查询订单项
|
|
|
|
- if (pagedResult != null && pagedResult.getDataList() != null && !pagedResult.getDataList().isEmpty()) {
|
|
|
|
- for (SalesOrder temp : pagedResult.getDataList()) {
|
|
|
|
- SalesOrderItem item = new SalesOrderItem();
|
|
|
|
- item.setItemOrderId(temp.getSalesId());
|
|
|
|
- temp.setSalesOrderItemList(salesOrderService.listSalesOrderItem(item));
|
|
|
|
- }
|
|
|
|
|
|
+ salesOrder.setSalesWarehouseId(orderWarehouse.getWarehouseId());
|
|
|
|
+ salesOrder.setSalesStatus(1);
|
|
|
|
+ PagedResult<SalesOrder> pagedResult = salesOrderService.listAwaitSendSalesOrderPage(pageNO, pageSize, salesOrder,totalNum == 0);
|
|
|
|
+ if (totalNum != 0) {
|
|
|
|
+ pagedResult.setTotal(totalNum);
|
|
|
|
+ }
|
|
|
|
+ // 查询订单项
|
|
|
|
+ if (pagedResult != null && pagedResult.getDataList() != null && !pagedResult.getDataList().isEmpty()) {
|
|
|
|
+ for (SalesOrder temp : pagedResult.getDataList()) {
|
|
|
|
+ SalesOrderItem item = new SalesOrderItem();
|
|
|
|
+ item.setItemOrderId(temp.getSalesId());
|
|
|
|
+ temp.setSalesOrderItemList(salesOrderService.listSalesOrderItem(item));
|
|
}
|
|
}
|
|
- int errorOrderNum = 0;
|
|
|
|
- // 聚合打单方式
|
|
|
|
- Map<String, Integer> postMap = new HashMap<>();
|
|
|
|
- List<PostInfo> postInfos = salesOrderService.listWaitPrintOrderNum(orderWarehouse.getWarehouseId());
|
|
|
|
- if (postInfos != null && !postInfos.isEmpty()) {
|
|
|
|
- for (PostInfo temp : postInfos) {
|
|
|
|
- LogisticsInfo info = new LogisticsInfo();
|
|
|
|
- info.setLogisticsRstCode(temp.getPostFirm());
|
|
|
|
- List<LogisticsInfo> logisticsInfos = salesOrderService.getLogisticsInfo(info);
|
|
|
|
- if (logisticsInfos == null || logisticsInfos.size() <= 0) {
|
|
|
|
- errorOrderNum ++;
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- String key = logisticsInfos.get(0).getLogisticsName();
|
|
|
|
- postMap.put(key, temp.getNumber());
|
|
|
|
|
|
+ }
|
|
|
|
+ int errorOrderNum = 0;
|
|
|
|
+ // 聚合打单方式
|
|
|
|
+ Map<String, Integer> postMap = new HashMap<>();
|
|
|
|
+ List<PostInfo> postInfos = salesOrderService.listWaitPrintOrderNum(orderWarehouse.getWarehouseId());
|
|
|
|
+ if (postInfos != null && !postInfos.isEmpty()) {
|
|
|
|
+ for (PostInfo temp : postInfos) {
|
|
|
|
+ LogisticsInfo info = new LogisticsInfo();
|
|
|
|
+ info.setLogisticsRstCode(temp.getPostFirm());
|
|
|
|
+ List<LogisticsInfo> logisticsInfos = salesOrderService.getLogisticsInfo(info);
|
|
|
|
+ if (logisticsInfos == null || logisticsInfos.size() <= 0) {
|
|
|
|
+ errorOrderNum ++;
|
|
|
|
+ continue;
|
|
}
|
|
}
|
|
|
|
+ String key = logisticsInfos.get(0).getLogisticsName();
|
|
|
|
+ postMap.put(key, temp.getNumber());
|
|
}
|
|
}
|
|
|
|
+ }
|
|
List<ProductColor> productColorList = productService.listproductAndColor(new ProductColor());
|
|
List<ProductColor> productColorList = productService.listproductAndColor(new ProductColor());
|
|
|
|
|
|
salesOrder.setSalesOrderItemList(null);
|
|
salesOrder.setSalesOrderItemList(null);
|
|
@@ -263,6 +267,11 @@ public class AwaitSendController {
|
|
//德邦 (360特惠件)
|
|
//德邦 (360特惠件)
|
|
eOrderRequestData.CustomerName = ("651476854");
|
|
eOrderRequestData.CustomerName = ("651476854");
|
|
eOrderRequestData.ExpType = ("2");
|
|
eOrderRequestData.ExpType = ("2");
|
|
|
|
+ } else if (post.equalsIgnoreCase("SDDB")) {
|
|
|
|
+ // 上朵德邦(标准快递)
|
|
|
|
+ eOrderRequestData.CustomerName = ("S20140809-60390596");
|
|
|
|
+ eOrderRequestData.ExpType = ("3");
|
|
|
|
+ eOrderRequestData.ShipperCode = "DBL";
|
|
}
|
|
}
|
|
LOGGER.info( "===salesId:" + salesId + "快递方式:" + post+ "订单编号:"+ orderId);
|
|
LOGGER.info( "===salesId:" + salesId + "快递方式:" + post+ "订单编号:"+ orderId);
|
|
// 收件人信息
|
|
// 收件人信息
|
|
@@ -270,6 +279,7 @@ public class AwaitSendController {
|
|
if (addrs.length <= 3) {
|
|
if (addrs.length <= 3) {
|
|
addrs = salesOrderInfo.getSalesAddressInfo().split("-");
|
|
addrs = salesOrderInfo.getSalesAddressInfo().split("-");
|
|
}
|
|
}
|
|
|
|
+ String addrDetails = salesOrderInfo.getSalesAddressInfo().substring(addrs[0].length() + addrs[1].length() + addrs[2].length() + 3);
|
|
// 获取收件人邮编
|
|
// 获取收件人邮编
|
|
String postCode = AddrUtil.getPostCode(addrs[2]);
|
|
String postCode = AddrUtil.getPostCode(addrs[2]);
|
|
if (postCode == null || "".equals(postCode)) {
|
|
if (postCode == null || "".equals(postCode)) {
|
|
@@ -285,7 +295,7 @@ public class AwaitSendController {
|
|
receiver.put("ProvinceName", AddrUtil.dealProvince(addrs[0]));
|
|
receiver.put("ProvinceName", AddrUtil.dealProvince(addrs[0]));
|
|
receiver.put("CityName", addrs[1]);
|
|
receiver.put("CityName", addrs[1]);
|
|
receiver.put("ExpAreaName", addrs[2]);
|
|
receiver.put("ExpAreaName", addrs[2]);
|
|
- receiver.put("Address", salesOrderInfo.getSalesAddressInfo());
|
|
|
|
|
|
+ receiver.put("Address", addrDetails);
|
|
receiver.put("PostCode", postCode);
|
|
receiver.put("PostCode", postCode);
|
|
eOrderRequestData.Receiver = (receiver);
|
|
eOrderRequestData.Receiver = (receiver);
|
|
// 发件人信息
|
|
// 发件人信息
|
|
@@ -307,12 +317,12 @@ public class AwaitSendController {
|
|
Double colorIsWeight = 0.00;
|
|
Double colorIsWeight = 0.00;
|
|
StringBuilder goodName = new StringBuilder();
|
|
StringBuilder goodName = new StringBuilder();
|
|
// 2018-12-21 增加打印面单需求:判断是否为维修机
|
|
// 2018-12-21 增加打印面单需求:判断是否为维修机
|
|
- if (salesOrderInfo.getSalesCustomerId() != null) {
|
|
|
|
|
|
+ /*if (salesOrderInfo.getSalesCustomerId() != null) {
|
|
CustomerInfo customerInfo = customerService.getCustomerInfo(salesOrderInfo.getSalesCustomerId());
|
|
CustomerInfo customerInfo = customerService.getCustomerInfo(salesOrderInfo.getSalesCustomerId());
|
|
if (customerInfo != null && customerInfo.getCustomerIsSolve() != null && customerInfo.getCustomerIsSolve() == 4) {
|
|
if (customerInfo != null && customerInfo.getCustomerIsSolve() != null && customerInfo.getCustomerIsSolve() == 4) {
|
|
goodName.append("【原机返回】");
|
|
goodName.append("【原机返回】");
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
int Goodsquantity = 0;
|
|
int Goodsquantity = 0;
|
|
for (SalesOrderItem temp : items) {
|
|
for (SalesOrderItem temp : items) {
|
|
goodName.append(temp.getProductAbbreviation())
|
|
goodName.append(temp.getProductAbbreviation())
|
|
@@ -348,7 +358,7 @@ public class AwaitSendController {
|
|
|
|
|
|
// 订单发货
|
|
// 订单发货
|
|
SalesOrder salesOrder = new SalesOrder();
|
|
SalesOrder salesOrder = new SalesOrder();
|
|
- salesOrder.setSalesPostFirm(eOrderRequestData.ShipperCode);
|
|
|
|
|
|
+ //salesOrder.setSalesPostFirm(eOrderRequestData.ShipperCode);
|
|
salesOrder.setSalesPostNum(code);
|
|
salesOrder.setSalesPostNum(code);
|
|
salesOrder.setSalesShippingStatus(1);
|
|
salesOrder.setSalesShippingStatus(1);
|
|
salesOrder.setSalesSendTime(new Date());
|
|
salesOrder.setSalesSendTime(new Date());
|
|
@@ -542,9 +552,16 @@ public class AwaitSendController {
|
|
rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态是否为已发货。");
|
|
rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态是否为已发货。");
|
|
return rj;
|
|
return rj;
|
|
}
|
|
}
|
|
- rj = ResponseJson.getSUCCESS();
|
|
|
|
- rj.setResultMsg("物流单号("+ postNum +")出库成功。");
|
|
|
|
- return rj;
|
|
|
|
|
|
+ //修改库存信息
|
|
|
|
+ if(updateInventory(salesOrder.getSalesId())){
|
|
|
|
+ rj = ResponseJson.getSUCCESS();
|
|
|
|
+ rj.setResultMsg("物流单号("+ postNum +")出库成功。");
|
|
|
|
+ return rj;
|
|
|
|
+ }else{
|
|
|
|
+ rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态是否为已发货,产品库存是否充足。");
|
|
|
|
+ return rj;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
if(salesOrder == null){
|
|
if(salesOrder == null){
|
|
rj.setResultMsg("出货失败,该物流单号("+postNum+")未查询到订单。");
|
|
rj.setResultMsg("出货失败,该物流单号("+postNum+")未查询到订单。");
|
|
@@ -559,10 +576,12 @@ public class AwaitSendController {
|
|
return rj;
|
|
return rj;
|
|
}
|
|
}
|
|
salesOrder.setSalesDeliver(2);
|
|
salesOrder.setSalesDeliver(2);
|
|
- Integer flag = salesOrderService.updateDeliver(salesOrder);
|
|
|
|
- if(flag < 1){
|
|
|
|
- rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态。");
|
|
|
|
- return rj;
|
|
|
|
|
|
+ if(updateInventory(salesOrder.getSalesId())){
|
|
|
|
+ Integer flag = salesOrderService.updateDeliver(salesOrder);
|
|
|
|
+ if(flag < 1){
|
|
|
|
+ rj.setResultMsg("出货失败,请检查该物流单号("+postNum+")和订单状态,产品库存是否充足。");
|
|
|
|
+ return rj;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
//查询出库的产品项
|
|
//查询出库的产品项
|
|
List<SalesOrderItem> itemList = salesOrderService.selectSalesOrderItemList(salesOrder.getSalesId());
|
|
List<SalesOrderItem> itemList = salesOrderService.selectSalesOrderItemList(salesOrder.getSalesId());
|
|
@@ -572,6 +591,38 @@ public class AwaitSendController {
|
|
return rj;
|
|
return rj;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public boolean updateInventory(Integer salesId){
|
|
|
|
+ SalesOrderItem salesOrderItem = new SalesOrderItem();
|
|
|
|
+ salesOrderItem.setItemOrderId(salesId);
|
|
|
|
+ List<SalesOrderItem> listOrderitem = salesOrderService.listSalesOrderItem(salesOrderItem);
|
|
|
|
+ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
+ for(SalesOrderItem item : listOrderitem){
|
|
|
|
+ InventoryInfo info = inventoryService.getByInventoryByBar(item.getItemColorBar());
|
|
|
|
+ if(info != null){
|
|
|
|
+ if(info.getInventoryGoodProductNum() >= item.getItemNum()){
|
|
|
|
+ info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - item.getItemNum());
|
|
|
|
+ info.setInventoryRecentRecord(sdf.format(new Date())+"出库:"+item.getItemNum()+"件");
|
|
|
|
+ inventoryService.updateById(info);
|
|
|
|
+ //添加日志
|
|
|
|
+ InventoryLog inventoryLog = new InventoryLog();
|
|
|
|
+ inventoryLog.setLogProductName(info.getInventoryProductName());
|
|
|
|
+ inventoryLog.setLogProductBar(info.getInventoryProductBar());
|
|
|
|
+ inventoryLog.setLogRemainingNum(item.getItemNum());
|
|
|
|
+ inventoryLog.setLogType(2);
|
|
|
|
+ inventoryLog.setLogOperationType(2);
|
|
|
|
+ inventoryLog.setLogDesc(sdf.format(new Date())+"手动出库:"+item.getItemNum()+"件");
|
|
|
|
+ inventoryLog.setLogQualityType(1);
|
|
|
|
+ inventoryLog.setLogWarehouseId(1);
|
|
|
|
+ inventoryLogService.insert(inventoryLog);
|
|
|
|
+ }else{
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 出库
|
|
* 出库
|
|
* @param request
|
|
* @param request
|
|
@@ -979,7 +1030,7 @@ public class AwaitSendController {
|
|
if(salesOrder.getSalesDeliver() == null){
|
|
if(salesOrder.getSalesDeliver() == null){
|
|
salesDeliver = "未出库";
|
|
salesDeliver = "未出库";
|
|
}else{
|
|
}else{
|
|
- ///出库状态 1:未出库 2:已出库
|
|
|
|
|
|
+ ///出库状态 1:未出库 2:已出库
|
|
switch (salesOrder.getSalesDeliver()){
|
|
switch (salesOrder.getSalesDeliver()){
|
|
case 1:
|
|
case 1:
|
|
salesDeliver = "未出库";
|
|
salesDeliver = "未出库";
|