wangxiaoming 5 年 前
コミット
68a722b137

+ 9 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/SalesOrderItem.java

@@ -32,6 +32,7 @@ public class SalesOrderItem implements Serializable {
 
     private Integer colorIsMachine; //是否是水机 1:水机 2;其它产品
 
+    private String salesOrderId;            //订单号
     private String salesDealCode;   //交易号
     private Integer itemReturnNum;   //退货数量
 
@@ -194,4 +195,12 @@ public class SalesOrderItem implements Serializable {
     public void setItemReturnNum(Integer itemReturnNum) {
         this.itemReturnNum = itemReturnNum;
     }
+
+    public String getSalesOrderId() {
+        return salesOrderId;
+    }
+
+    public void setSalesOrderId(String salesOrderId) {
+        this.salesOrderId = salesOrderId;
+    }
 }

+ 0 - 13
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/InventoryService.java

@@ -48,17 +48,4 @@ public interface InventoryService {
      */
     Integer minusInventory(InventoryInfo inventoryInfo);
 
-    /**
-     * 增加库存
-     * @param
-     * @return
-     */
-    String addInventoryList(List<InventoryInfo> inventoryInfoList);
-
-    /**
-     * 减去库存
-     * @param
-     * @return
-     */
-    String minusInventoryList(List<InventoryInfo> inventoryInfoList);
 }

+ 36 - 24
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/InventoryServiceImpl.java

@@ -106,24 +106,33 @@ public class InventoryServiceImpl implements InventoryService {
             InventoryInfo newInent = new InventoryInfo();
             newInent.setInventoryId(info.getInventoryId());
 
+            String record = "";
+            if(!StringUtils.isEmpty(invent.getInventoryRecentRecord())){
+                record = invent.getInventoryRecentRecord();
+            }
+            //日志记录与 库存最后记录保持一致
+            String logRecord = "";
+
             //inventoryGoodProductNum;//良品数量
             if(invent.getInventoryGoodProductNum() != null && invent.getInventoryGoodProductNum() != 0 ){
-                newInent.setOperationNum(info.getInventoryGoodProductNum() + invent.getInventoryGoodProductNum());
-                newInent.setInventoryRecentRecord(sdf.format(new Date())+"[良品]入库:"+invent.getInventoryGoodProductNum()+"件");
+                logRecord = sdf.format(new Date())+"[良品]入库"+invent.getInventoryGoodProductNum()+"件,"+record;
+                newInent.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + invent.getInventoryGoodProductNum());
+                newInent.setInventoryRecentRecord(logRecord);
                 isNumUpadate = true;
                 num = invent.getInventoryGoodProductNum();
                 logQualityType = 1;
             }else if(invent.getInventoryDefectiveProductNum() != null && invent.getInventoryDefectiveProductNum() != 0 ){
                 //inventoryDefectiveProductNum;//不良品数量
-                newInent.setOperationNum(info.getInventoryDefectiveProductNum() + invent.getInventoryDefectiveProductNum());
-                newInent.setInventoryRecentRecord(sdf.format(new Date())+"[不良品]入库:"+invent.getInventoryDefectiveProductNum()+"件");
+                logRecord = sdf.format(new Date())+"[不良品]入库"+invent.getInventoryDefectiveProductNum()+"件,"+record;
+                newInent.setInventoryDefectiveProductNum(info.getInventoryDefectiveProductNum() + invent.getInventoryDefectiveProductNum());
+                newInent.setInventoryRecentRecord(logRecord);
                 isNumUpadate = true;
                 num = invent.getInventoryDefectiveProductNum();
                 logQualityType = 2;
             }
 //            else if(invent.getInventoryRemainingNum() != null && invent.getInventoryRemainingNum() != 0 ){
 //                //  inventoryRemainingNum;//库存剩余数量
-//                    newInent.setOperationNum(info.getInventoryRemainingNum() - invent.getInventoryRemainingNum());
+//                    newInent.setInventoryRemainingNum(info.getInventoryRemainingNum() - invent.getInventoryRemainingNum());
 //                    info.setInventoryRecentRecord(sdf.format(new Date())+"[剩余库存]出库:"+invent.getInventoryRemainingNum()+"件");
 //                    isNumUpadate = true;
 //                    num = invent.getInventoryRemainingNum();
@@ -143,7 +152,7 @@ public class InventoryServiceImpl implements InventoryService {
                     inventoryLog.setLogType(1); //类型1.采购 2.发货 3.次品
                 }
                 inventoryLog.setLogOperationType(1);    //增加
-                inventoryLog.setLogDesc(sdf.format(new Date())+"入库:"+num+"件");
+                inventoryLog.setLogDesc(logRecord);
                 inventoryLog.setLogQualityType(logQualityType);
                 inventoryLog.setLogWarehouseId(invent.getWarehouseId());
                 flag = inventoryLogMapper.insert(inventoryLog);
@@ -196,11 +205,20 @@ public class InventoryServiceImpl implements InventoryService {
             InventoryInfo newInent = new InventoryInfo();
             newInent.setInventoryId(info.getInventoryId());
 
+            String record = "";
+            if(!StringUtils.isEmpty(invent.getInventoryRecentRecord())){
+                record = invent.getInventoryRecentRecord();
+            }
+
+            //日志记录与 库存最后记录保持一致
+            String logRecord = "";
+
             //inventoryGoodProductNum;//良品数量
             if(invent.getInventoryGoodProductNum() != null && invent.getInventoryGoodProductNum() != 0 ){
                 if(info.getInventoryGoodProductNum() > invent.getInventoryGoodProductNum()){
-                    newInent.setOperationNum(info.getInventoryGoodProductNum() - invent.getInventoryGoodProductNum());
-                    newInent.setInventoryRecentRecord(sdf.format(new Date())+"[良品]出库:"+invent.getInventoryGoodProductNum()+"件");
+                    logRecord = sdf.format(new Date())+"[良品]出库"+invent.getInventoryGoodProductNum()+"件,"+record;
+                    newInent.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - invent.getInventoryGoodProductNum());
+                    newInent.setInventoryRecentRecord(logRecord);
                     isNumUpadate = true;
                     num = invent.getInventoryGoodProductNum();
                     logQualityType = 1;
@@ -210,8 +228,9 @@ public class InventoryServiceImpl implements InventoryService {
             }else if(invent.getInventoryDefectiveProductNum() != null && invent.getInventoryDefectiveProductNum() != 0 ){
                 //inventoryDefectiveProductNum;//不良品数量
                 if(info.getInventoryDefectiveProductNum() > invent.getInventoryDefectiveProductNum()){
-                    newInent.setOperationNum(info.getInventoryDefectiveProductNum() - invent.getInventoryDefectiveProductNum());
-                    newInent.setInventoryRecentRecord(sdf.format(new Date())+"[不良品]出库:"+invent.getInventoryDefectiveProductNum()+"件");
+                    logRecord = sdf.format(new Date())+"[不良品]出库"+invent.getInventoryDefectiveProductNum()+"件,"+record;
+                    newInent.setInventoryDefectiveProductNum(info.getInventoryDefectiveProductNum() - invent.getInventoryDefectiveProductNum());
+                    newInent.setInventoryRecentRecord(logRecord);
                     isNumUpadate = true;
                     num = invent.getInventoryDefectiveProductNum();
                     logQualityType = 2;
@@ -222,7 +241,7 @@ public class InventoryServiceImpl implements InventoryService {
 //            else if(invent.getInventoryRemainingNum() != null && invent.getInventoryRemainingNum() != 0 ){
 //                //  inventoryRemainingNum;//库存剩余数量
 //                if(info.getInventoryRemainingNum() > invent.getInventoryRemainingNum()){
-//                    newInent.setOperationNum(info.getInventoryRemainingNum() - invent.getInventoryRemainingNum());
+//                    newInent.setInventoryRemainingNum(info.getInventoryRemainingNum() - invent.getInventoryRemainingNum());
 //                    info.setInventoryRecentRecord(sdf.format(new Date())+"[剩余库存]出库:"+invent.getInventoryRemainingNum()+"件");
 //                    isNumUpadate = true;
 //                    num = invent.getInventoryRemainingNum();
@@ -239,9 +258,13 @@ public class InventoryServiceImpl implements InventoryService {
                 inventoryLog.setLogProductName(info.getInventoryProductName());
                 inventoryLog.setLogProductBar(info.getInventoryProductBar());
                 inventoryLog.setLogRemainingNum(num);
-                inventoryLog.setLogType(2); //类型1.采购 2.发货 3.次品
+                if(invent.getLogType() != null && invent.getLogType()!=0){
+                    inventoryLog.setLogType(invent.getLogType()); //类型1.采购 2.发货 3.次品
+                }else{
+                    inventoryLog.setLogType(1); //类型1.采购 2.发货 3.次品
+                }
                 inventoryLog.setLogOperationType(2);    //减去
-                inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库:"+num+"件");
+                inventoryLog.setLogDesc(logRecord);
                 inventoryLog.setLogQualityType(logQualityType);
                 inventoryLog.setLogWarehouseId(invent.getWarehouseId());
                 flag = inventoryLogMapper.insert(inventoryLog);
@@ -257,15 +280,4 @@ public class InventoryServiceImpl implements InventoryService {
         return flag;
     }
 
-    @Override
-    public String addInventoryList(List<InventoryInfo> inventoryInfoList) {
-        return null;
-    }
-
-    @Override
-    public String minusInventoryList(List<InventoryInfo> inventoryInfoList) {
-        return null;
-    }
-
-
 }

+ 38 - 10
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -16,6 +16,7 @@ import com.iamberry.rst.core.sys.Admin;
 import com.iamberry.rst.core.sys.SysConfig;
 import com.iamberry.rst.core.tools.LogisticsInfo;
 import com.iamberry.rst.faces.address.AddressService;
+import com.iamberry.rst.faces.cm.InventoryService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
 import com.iamberry.rst.faces.cm.StoreInfoService;
 import com.iamberry.rst.faces.order.EfastOrderService;
@@ -83,6 +84,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     private ComplaintDetectInfoMapper complaintDetectInfoMapper;
     @Autowired
     private OrderWarehouseService orderWarehouseService;
+    @Autowired
+    private InventoryService inventoryService;
 
     @Override
     public Integer addSalesOrder(SalesOrder salesOrder) {
@@ -451,6 +454,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             if(listSalesOrder.size() > 0){
                 for (int i = 0;i<listSalesOrder.size();i++){
                     listSalesOrder.get(i).setSalesDealCode(listSalesOrder.get(i).getSalesDealCode()+"-"+(i+1));
+                    listSalesOrder.get(i).setSalesOrderId(listSalesOrder.get(i).getSalesOrderId()+"-"+(i+1));
                     listSalesOrder.get(i).setSalesMainOrderId(mainOrder.getSalesId());
                     listSalesOrder.get(i).setSalesId(null);
                     orderNum = salesOrderMapper.addSalesOrder(listSalesOrder.get(i));
@@ -1103,15 +1107,39 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             throw new RuntimeException("出库失败,订单出库失败。");
         }
 
-        if(salesOrder.getSalesDeliver() == 2){//标记出库,修改库存
-            if(!salesOrderService.updateInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
-                throw new RuntimeException("出库失败,【出库】库存修改失败。");
+        boolean isMachineRetuen = false; //是否原机退回
+        ComplaintDetectInfo complaintDetectInfo = new ComplaintDetectInfo();
+        complaintDetectInfo.setSalesOrderId(salesOrder.getSalesOrderId());
+        List<ComplaintDetectInfo> complaintDetectInfoList = complaintDetectInfoMapper.listComplaintDetectByOrderId(complaintDetectInfo);
+        if(complaintDetectInfoList != null && complaintDetectInfoList.size() > 0) {
+            ComplaintDetectInfo cdinfo = complaintDetectInfoList.get(0);
+            if (5 == cdinfo.getDetectProcessingResults()) { //detectProcessingResults
+                isMachineRetuen = true;
             }
         }
 
-        if(salesOrder.getSalesDeliver() == 1){//标记未出库,修改库存
-            if(!salesOrderService.returnInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
-                throw new RuntimeException("出库失败,【返还库存】库存修改失败。");
+        if(isMachineRetuen){
+            //减去售后仓库不良品
+            ComplaintDetectInfo cdinfo = complaintDetectInfoList.get(0);
+            InventoryInfo inventoryInfo1 = new InventoryInfo();
+            inventoryInfo1.setInventoryDefectiveProductNum(1);
+            inventoryInfo1.setInventoryProductColorId(cdinfo.getProductColorId());
+            inventoryInfo1.setWarehouseId(2);
+            inventoryInfo1.setInventoryRecentRecord("维修机器-原机返回(维修ID:" + cdinfo.getDetectNumber() + ")");
+            flag = inventoryService.minusInventory(inventoryInfo1);
+            if (flag < 1) {
+                throw new RuntimeException("出库失败。维修库存调整失败");
+            }
+        }else{  //正常库存出库(包含正常销售与售后)
+            if(salesOrder.getSalesDeliver() == 2){//标记出库,修改库存
+                if(!salesOrderService.updateInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
+                    throw new RuntimeException("出库失败,【出库】库存修改失败。");
+                }
+            }
+            if(salesOrder.getSalesDeliver() == 1){//标记未出库,修改库存
+                if(!salesOrderService.returnInventory(salesOrder.getSalesId(),salesOrder.getSalesWarehouseId())){
+                    throw new RuntimeException("出库失败,【返还库存】库存修改失败。");
+                }
             }
         }
         return flag;
@@ -1136,7 +1164,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             if(info != null){
                 if(info.getInventoryGoodProductNum() >= item.getItemNum()){
                     info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() - item.getItemNum());
-                    info.setInventoryRecentRecord(sdf.format(new Date())+"出库:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
+                    info.setInventoryRecentRecord(sdf.format(new Date())+"出库"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
                     Integer flag =  inventoryMapper.updateById(info);
                     if(flag < 1){
                         throw new RuntimeException("【出库】更新库存失败,库存修改失败。");
@@ -1148,7 +1176,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                     inventoryLog.setLogRemainingNum(item.getItemNum());
                     inventoryLog.setLogType(2);
                     inventoryLog.setLogOperationType(2);
-                    inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
+                    inventoryLog.setLogDesc(sdf.format(new Date())+"待发货标记出库"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
                     inventoryLog.setLogQualityType(1);
                     inventoryLog.setLogWarehouseId(salesWarehouseId);
                     flag = inventoryLogMapper.insert(inventoryLog);
@@ -1182,7 +1210,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
             InventoryInfo info = inventoryMapper.getByInventoryByBar(item.getItemColorBar(),salesWarehouseId);
             if(info != null){
                 info.setInventoryGoodProductNum(info.getInventoryGoodProductNum() + item.getItemNum());
-                info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
+                info.setInventoryRecentRecord(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
                 Integer flag = inventoryMapper.updateById(info);
                 if(flag < 1){
                     throw new RuntimeException("【返还库存】更新库存失败,库存修改失败。");
@@ -1194,7 +1222,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
                 inventoryLog.setLogRemainingNum(item.getItemNum());
                 inventoryLog.setLogType(1);
                 inventoryLog.setLogOperationType(1);
-                inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存:"+item.getItemNum()+"件,订单号:"+item.getItemOrderId());
+                inventoryLog.setLogDesc(sdf.format(new Date())+"删除/作废/标记未出库时订单返还库存"+item.getItemNum()+"件,订单号:"+item.getSalesOrderId());
                 inventoryLog.setLogQualityType(1);
                 inventoryLog.setLogWarehouseId(salesWarehouseId);
                 flag = inventoryLogMapper.insert(inventoryLog);

+ 3 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/salesOrderMapper.xml

@@ -488,11 +488,13 @@
             pc.color_abbreviation,
             pc.color_is_weight,
             pc.color_is_machine,
-            item_return_num
+            item_return_num,
+            oi.sales_orderId
         FROM
             tb_rst_sales_order_item
       LEFT JOIN tb_rst_product_info pi ON tb_rst_sales_order_item.item_product_id = pi.product_id
       LEFT JOIN tb_rst_product_color pc ON tb_rst_sales_order_item.item_color_id = pc.color_id
+      LEFT JOIN tb_rst_sales_order_info oi ON tb_rst_sales_order_item.item_order_id = oi.sales_id
       <where>
           <if test="itemOrderId !=null and itemOrderId !=''">
               AND item_order_id = #{itemOrderId}

+ 80 - 40
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/ComplaintDetectInfoServiceImpl.java

@@ -169,6 +169,14 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
     @Override
     @Transactional
     public int updateDetectQc(ComplaintDetectInfo record) {
+        ComplaintDetectInfo comdi = complaintDetectInfoMapper.getDetectByIdFast(record.getDetectId());
+        if(comdi == null){
+            throw new RuntimeException("查询维修记录失败");
+        }
+        if(comdi.getMaintenanceResults() != null && comdi.getMaintenanceResults() == 1){
+            throw new RuntimeException("该机器已通过QC检测");
+        }
+
         Integer flag = 0;
         //添加日志
         QcInfo qcInfo = new  QcInfo();
@@ -176,39 +184,51 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
         qcInfo.setQcIsThrough(record.getMaintenanceResults());
         qcInfo.setQcInfoDesc(record.getQcDesc());
         flag = complaintDetectInfoMapper.addQcInfo(qcInfo);
+        if(flag < 1){
+            throw new RuntimeException("添加QC检测记录失败");
+        }
         flag = complaintDetectInfoMapper.updateDetectById(record);
+        if(flag < 1){
+            throw new RuntimeException("修改QC检测状态");
+        }
 
-        //判断是否为维修
-        ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectById(record.getDetectId());
-        if(cdi.getProcTypeId() == 3){    //3: 维修
-            //减去售后仓库不良品
-            InventoryInfo inventoryInfo1 = new InventoryInfo();
-            inventoryInfo1.setInventoryDefectiveProductNum(1);
-            inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
-            inventoryInfo1.setWarehouseId(2);
-            inventoryService.minusInventory(inventoryInfo1);
-
-            //增加售后仓库的良品
-            InventoryInfo inventoryInfo2 = new InventoryInfo();
-            inventoryInfo2.setInventoryGoodProductNum(1);
-            inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
-            inventoryInfo2.setWarehouseId(2);
-            inventoryService.addInventory(inventoryInfo2);
-
-        }else{  //退货等
-            //减去售后仓库不良品
-            InventoryInfo inventoryInfo1 = new InventoryInfo();
-            inventoryInfo1.setInventoryDefectiveProductNum(1);
-            inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
-            inventoryInfo1.setWarehouseId(2);
-            inventoryService.minusInventory(inventoryInfo1);
-
-            //增加销售仓库的良品
-            InventoryInfo inventoryInfo2 = new InventoryInfo();
-            inventoryInfo2.setInventoryGoodProductNum(1);
-            inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
-            inventoryInfo2.setWarehouseId(1);
-            inventoryService.addInventory(inventoryInfo2);
+        if(record.getMaintenanceResults() == 1){ //maintenanceResults
+            //判断是否为维修
+            ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectById(record.getDetectId());
+            if(cdi.getProcTypeId() == 3){    //3: 维修
+                //减去售后仓库不良品
+                InventoryInfo inventoryInfo1 = new InventoryInfo();
+                inventoryInfo1.setInventoryDefectiveProductNum(1);
+                inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
+                inventoryInfo1.setWarehouseId(2);
+                inventoryInfo1.setInventoryRecentRecord("维修机器完成,从售后不良品仓转入售后良品仓(维修ID:"+record.getDetectNumber()+")");
+                inventoryService.minusInventory(inventoryInfo1);
+
+                //增加售后仓库的良品
+                InventoryInfo inventoryInfo2 = new InventoryInfo();
+                inventoryInfo2.setInventoryGoodProductNum(1);
+                inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
+                inventoryInfo2.setWarehouseId(2);
+                inventoryInfo2.setInventoryRecentRecord("维修机器完成,从售后不良品仓转入售后良品仓(维修ID:"+record.getDetectNumber()+")");
+                inventoryService.addInventory(inventoryInfo2);
+
+            }else{  //退货等
+                //减去售后仓库不良品
+                InventoryInfo inventoryInfo1 = new InventoryInfo();
+                inventoryInfo1.setInventoryDefectiveProductNum(1);
+                inventoryInfo1.setInventoryProductColorId(cdi.getProductColorId());
+                inventoryInfo1.setWarehouseId(2);
+                inventoryInfo1.setInventoryRecentRecord("退货/换货,从售后不良品仓转入正常销售良品仓(维修ID:"+record.getDetectNumber()+")");
+                inventoryService.minusInventory(inventoryInfo1);
+
+                //增加销售仓库的良品
+                InventoryInfo inventoryInfo2 = new InventoryInfo();
+                inventoryInfo2.setInventoryGoodProductNum(1);
+                inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
+                inventoryInfo2.setWarehouseId(1);
+                inventoryInfo2.setInventoryRecentRecord("退货/换货,从售后不良品仓转入正常销售良品仓(维修ID:"+record.getDetectNumber()+")");
+                inventoryService.addInventory(inventoryInfo2);
+            }
         }
         return flag;
     }
@@ -578,17 +598,37 @@ public class ComplaintDetectInfoServiceImpl implements ComplaintDetectInfoServic
     }
 
     @Override
+    @Transactional
     public Integer updatePrint(ComplaintDetectInfo detectInfo) {
-        /*ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectByIdFast(detectInfo.getDetectId());
-        if(!Objects.equals(cdi.getDetectState(), detectInfo.getDetectState())){ //修改状态时判断状态,来调整库存
-            switch (detectInfo.getDetectState()){    //detectState
-                case 23:
-                    break;
-                default:
-                    break;
+        ComplaintDetectInfo cdi = complaintDetectInfoMapper.getDetectByIdFast(detectInfo.getDetectId());
+        if(cdi == null){
+            return 0;
+        }
+        Integer flag = complaintDetectInfoMapper.updateDetectById(detectInfo);
+        if(flag < 1){
+            return flag;
+        }
+
+        if(detectInfo.getDetectState() != null && detectInfo.getDetectState() != 0){
+            if(!Objects.equals(cdi.getDetectState(), detectInfo.getDetectState())){ //修改状态时判断状态,来调整库存
+                switch (detectInfo.getDetectState()){    //detectState
+                    case 23:    //报废完成-减少不良品数量
+                        InventoryInfo inventoryInfo2 = new InventoryInfo();
+                        inventoryInfo2.setInventoryDefectiveProductNum(1);
+                        inventoryInfo2.setInventoryProductColorId(cdi.getProductColorId());
+                        inventoryInfo2.setWarehouseId(2);
+                        inventoryInfo2.setInventoryRecentRecord("产品报废(维修ID:"+detectInfo.getDetectNumber()+")");
+                        flag = inventoryService.minusInventory(inventoryInfo2);
+                        if(flag < 1){
+                            throw new RuntimeException("签收失败,更新库存失败。");
+                        }
+                        break;
+                    default:
+                        break;
+                }
             }
-        }*/
-        return complaintDetectInfoMapper.updateDetectById(detectInfo);
+        }
+        return flag;
     }
 
     @Override

+ 52 - 47
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/ComplaintSignclosedInfoServiceImpl.java

@@ -10,6 +10,7 @@ import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.faces.cm.InventoryService;
 import com.iamberry.rst.faces.fm.ComplaintSignclosedInfoService;
 import com.iamberry.rst.faces.sms.SmsService;
 import com.iamberry.rst.service.cm.mapper.*;
@@ -53,6 +54,9 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
     @Autowired
     private SmsService smsService;
 
+    @Autowired
+    private InventoryService inventoryService;
+
     @Override
     @Transactional
     public Integer insert(ComplaintSignclosedInfo record,
@@ -97,9 +101,7 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
 
             }
         }
-        if(num < 1){
-            return msg;//新增签收失败
-        }else{
+        if(num > 0){
             if(orderItemString != null){
                 JSONArray jsonArray = JSONArray.fromObject(orderItemString);
                 List<SalesOrderItem> salesOrderItemList = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
@@ -172,31 +174,19 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
         }
 
         // 代签收 - >  已签收  需要入库到售后仓库
-        if(msg == 1 || msg == 3){
-            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if(msg==1 || msg == 3){
             List<SignclosedProductInfo> signclosedProductInfoList = complaintSignclosedProductInfoMapper.listSignclosedById(signclosedId);
             for (SignclosedProductInfo spi:signclosedProductInfoList) {
-                InventoryInfo info = inventoryMapper.getByInventoryByBar(spi.getColorBar(),2);
-                info.setInventoryDefectiveProductNum(info.getInventoryDefectiveProductNum()+spi.getProductNum());
-                info.setInventoryRecentRecord(sdf.format(new Date())+"不良品入库:"+ spi.getProductNum() + "件");
-                flag =  inventoryMapper.updateById(info);
-                if(flag < 1){
-                    throw new RuntimeException("更新库存失败,更新库存失败。");
-                }
-
-                //添加日志
-                InventoryLog inventoryLog = new InventoryLog();
-                inventoryLog.setLogProductName(info.getInventoryProductName());
-                inventoryLog.setLogProductBar(info.getInventoryProductBar());
-                inventoryLog.setLogRemainingNum(spi.getProductNum());
-                inventoryLog.setLogType(3);
-                inventoryLog.setLogOperationType(1);
-                inventoryLog.setLogDesc(sdf.format(new Date())+"不良品入库:"+spi.getProductNum()+"件");
-                inventoryLog.setLogQualityType(2);
-                inventoryLog.setLogWarehouseId(2);    //售后仓库
-                flag = inventoryLogMapper.insert(inventoryLog);
+                //增加售后仓库的良品
+                InventoryInfo inventoryInfo2 = new InventoryInfo();
+                inventoryInfo2.setInventoryDefectiveProductNum(spi.getProductNum());
+                inventoryInfo2.setInventoryProductBar(spi.getColorBar());
+                inventoryInfo2.setWarehouseId(2);
+                inventoryInfo2.setLogType(3);   //售后签收,都是次品
+                inventoryInfo2.setInventoryRecentRecord("售后签收产品(签收ID:"+spi.getSignclosedId()+")");
+                flag = inventoryService.addInventory(inventoryInfo2);
                 if(flag < 1){
-                    throw new RuntimeException("更新库存失败,增加库存记录失败。");
+                    throw new RuntimeException("签收失败,更新库存失败。");
                 }
             }
         }
@@ -614,35 +604,50 @@ public class ComplaintSignclosedInfoServiceImpl implements ComplaintSignclosedIn
             sendbackInfo.setSendbackSignTime(signclosedInfo.getSignclosedDate());
             customerInfoMapper.updateSendbackInfo(sendbackInfo);
 
-
-            // 代签收 - >  已签收  需要入库到售后仓库
             Integer flag = 0;
-            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            // 代签收 - >  已签收  需要入库到售后仓库
             List<SignclosedProductInfo> signclosedProductInfoList = complaintSignclosedProductInfoMapper.listSignclosedById(record.getSignclosedId());
             for (SignclosedProductInfo spi:signclosedProductInfoList) {
-                InventoryInfo info = inventoryMapper.getByInventoryByBar(spi.getColorBar(),2);
-                info.setInventoryDefectiveProductNum(info.getInventoryDefectiveProductNum()+spi.getProductNum());
-                info.setInventoryRecentRecord(sdf.format(new Date())+"不良品入库:"+ spi.getProductNum() + "件");
-                flag =  inventoryMapper.updateById(info);
+                //增加售后仓库的良品
+                InventoryInfo inventoryInfo2 = new InventoryInfo();
+                inventoryInfo2.setInventoryDefectiveProductNum(spi.getProductNum());
+                inventoryInfo2.setInventoryProductBar(spi.getColorBar());
+                inventoryInfo2.setWarehouseId(2);
+                inventoryInfo2.setLogType(3);   //售后签收,都是次品
+                inventoryInfo2.setInventoryRecentRecord("售后签收产品(签收ID:"+spi.getSignclosedId()+")");
+                flag = inventoryService.addInventory(inventoryInfo2);
                 if(flag < 1){
-                    throw new RuntimeException("更新库存失败,更新库存失败。");
-                }
-                //添加日志
-                InventoryLog inventoryLog = new InventoryLog();
-                inventoryLog.setLogProductName(info.getInventoryProductName());
-                inventoryLog.setLogProductBar(info.getInventoryProductBar());
-                inventoryLog.setLogRemainingNum(spi.getProductNum());
-                inventoryLog.setLogType(3);
-                inventoryLog.setLogOperationType(1);
-                inventoryLog.setLogDesc(sdf.format(new Date())+"不良品入库:"+spi.getProductNum()+"件");
-                inventoryLog.setLogQualityType(2);
-                inventoryLog.setLogWarehouseId(2);    //售后仓库
-                flag = inventoryLogMapper.insert(inventoryLog);
-                if(flag < 1){
-                    throw new RuntimeException("更新库存失败,增加库存记录失败。");
+                    throw new RuntimeException("签收失败,更新库存失败。");
                 }
             }
 
+            // 代签收 - >  已签收  需要入库到售后仓库
+//            Integer flag = 0;
+//            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//            List<SignclosedProductInfo> signclosedProductInfoList = complaintSignclosedProductInfoMapper.listSignclosedById(record.getSignclosedId());
+//            for (SignclosedProductInfo spi:signclosedProductInfoList) {
+//                InventoryInfo info = inventoryMapper.getByInventoryByBar(spi.getColorBar(),2);
+//                info.setInventoryDefectiveProductNum(info.getInventoryDefectiveProductNum()+spi.getProductNum());
+//                info.setInventoryRecentRecord(sdf.format(new Date())+"不良品入库:"+ spi.getProductNum() + "件");
+//                flag =  inventoryMapper.updateById(info);
+//                if(flag < 1){
+//                    throw new RuntimeException("更新库存失败,更新库存失败。");
+//                }
+//                //添加日志
+//                InventoryLog inventoryLog = new InventoryLog();
+//                inventoryLog.setLogProductName(info.getInventoryProductName());
+//                inventoryLog.setLogProductBar(info.getInventoryProductBar());
+//                inventoryLog.setLogRemainingNum(spi.getProductNum());
+//                inventoryLog.setLogType(3);
+//                inventoryLog.setLogOperationType(1);
+//                inventoryLog.setLogDesc(sdf.format(new Date())+"不良品入库:"+spi.getProductNum()+"件");
+//                inventoryLog.setLogQualityType(2);
+//                inventoryLog.setLogWarehouseId(2);    //售后仓库
+//                flag = inventoryLogMapper.insert(inventoryLog);
+//                if(flag < 1){
+//                    throw new RuntimeException("更新库存失败,增加库存记录失败。");
+//                }
+//            }
         }
         //关联客诉/判断是否生成客诉信息
         try {

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/ComplaintDetectInfoMapper.java

@@ -177,4 +177,9 @@ public interface ComplaintDetectInfoMapper {
     ComplaintAfterSalesNum getDetectCount();
 
 
+    /**
+     * 根据订单id查询维修状态
+     * @return
+     */
+    List<ComplaintDetectInfo> listComplaintDetectByOrderId(ComplaintDetectInfo complaintDetectInfo);
 }

+ 9 - 24
watero-rst-service/src/main/java/com/iamberry/rst/service/fm/mapper/complaintDetectInfoMapper.xml

@@ -81,30 +81,7 @@
 
   <select id="getDetectByIdFast" resultType="ComplaintDetectInfo" parameterType="java.lang.Integer" >
     select
-      detect_id detectId,
-      detect_product_number detectProductNumber,
-      detect_state detectState,
-      cd.customer_id customerId,
-      detect_phenomenon detectPhenomenon,
-      detect_classification detectClassification,
-      detect_failure_cause detectFailureCause,
-      detect_results detectResults,
-      detect_point detectPoint,
-      detect_nalysis detectNalysis,
-      detect_content detectContent,
-      detect_desc detectDesc,
-      detect_date detectDate,
-      detect_create_time detectCreateTime,
-      detect_update_time detectUpdateTime,
-      detect_offer detectOffer,
-      detect_renovation detectRenovation,
-      detect_processing_results detectProcessingResults,
-      detect_production detectProduction,
-      detect_fuselage_barcode detectFuselageBarcode,
-      detect_film_type detectFilmType,
-      detect_float_type detectFloatType,
-      detect_version_number detectVersionNumber,
-      detect_is_refurbishing detectIsRefurbishing
+      cd.*
     from tb_rst_complaint_detect cd
     where detect_id = #{detectId,jdbcType=INTEGER}
   </select>
@@ -317,6 +294,13 @@
       ORDER BY cd.detect_create_time DESC
   </select>
 
+  <select id="listComplaintDetectByOrderId" resultType="ComplaintDetectInfo" parameterType="ComplaintDetectInfo" >
+    select
+      cd.*
+    from tb_rst_complaint_detect cd
+    WHERE cd.sales_orderId  = #{salesOrderId}
+  </select>
+
   <update id="updateDetectById" parameterType="ComplaintDetectInfo" >
     update tb_rst_complaint_detect
     <set >
@@ -790,4 +774,5 @@
     FROM
     tb_rst_complaint_detect
   </select>
+
 </mapper>

+ 4 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AwaitSendController.java

@@ -590,6 +590,10 @@ public class AwaitSendController {
             rj.setResultMsg("出货失败,权限不足,未分配所属仓库,无法查看,请联系管理员");
             return rj;
         }
+        if(postNum == null || "".equals(postNum)){
+            rj.setResultMsg("出货失败,请输入物流单号");
+            return rj;
+        }
 
         SalesOrder salesOrder = null;
         try{

+ 1 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inspection/detect_list.ftl

@@ -727,7 +727,7 @@
         });
     }
     //修改状态
-    function  updateScrap(detectId,state) {
+    function   updateScrap(detectId,state) {
             $.ajax({
                 cache: true,
                 type: "POST",

+ 3 - 1
watero-rst-web/src/main/webapp/WEB-INF/views/cm/inventory/inventoryLog_list.ftl

@@ -55,6 +55,9 @@
 
     <div class="text-c">
         <form name="form1" action="${path}/admin/inventory/select_inventoryLog_list" method="post">
+            <input type="hidden" name="logProductBar" value="${inventoryInfo.inventoryProductBar!''}">
+            <input type="hidden" name="logWarehouseId" value="${inventoryInfo.warehouseId!''}">
+
         <#--<input class="my-input" style="width: 70px;" type="text" name="signclosedCustomerId" value="${signclosedCustomerId!}" placeholder="客诉编号"/>
         <input class="my-input" style="width: 70px;" type="text" name="signclosedSendName" value="${signclosedSendName!}" placeholder="寄件人姓名"/>
         <input class="my-input" style="width: 70px;" type="text" name="signclosedSendTel" value="${signclosedSendTel!}" placeholder="寄件人电话号码"/>
@@ -81,7 +84,6 @@
             </#list>
         </#if>
         </select>-->
-            <input type="hidden" value="${logProductBar!''}" name="logProductBar">
         <button style="cursor:pointer;" type="submit" class="my-btn-search">搜索</button>
         </form>
     </div>