Browse Source

订单修改

wangxiaoming 5 years ago
parent
commit
a3dc1a8fb4

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

@@ -23,6 +23,8 @@ public class SalesOrderItem implements Serializable {
     private Integer itemProductPrice;   //产品市场价
     private Integer itemProductDiscount;//产品折扣价
     private Integer itemTotal;//小结
+    private Integer itemCost;//单个成本
+    private Integer itemCostTotal;//成本小结
     private Date itemCreateTime;        //创建时间
     private Integer itemIsSource;       //产品来源 1:产品颜色表,2:配件表
 
@@ -212,4 +214,20 @@ public class SalesOrderItem implements Serializable {
     public void setItemTotal(Integer itemTotal) {
         this.itemTotal = itemTotal;
     }
+
+    public Integer getItemCost() {
+        return itemCost;
+    }
+
+    public void setItemCost(Integer itemCost) {
+        this.itemCost = itemCost;
+    }
+
+    public Integer getItemCostTotal() {
+        return itemCostTotal;
+    }
+
+    public void setItemCostTotal(Integer itemCostTotal) {
+        this.itemCostTotal = itemCostTotal;
+    }
 }

+ 47 - 6
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -5,6 +5,7 @@ import com.iamberry.redis.RedisUtils;
 import com.iamberry.rst.core.cm.SalesOrder;
 import com.iamberry.rst.core.cm.SalesOrderItem;
 import com.iamberry.rst.core.cm.StoreInfo;
+import com.iamberry.rst.core.dm.SupplierProduct;
 import com.iamberry.rst.core.fm.ComplaintDetectInfo;
 import com.iamberry.rst.core.fm.InventoryInfo;
 import com.iamberry.rst.core.fm.InventoryLog;
@@ -21,6 +22,7 @@ import com.iamberry.rst.faces.order.EfastOrderService;
 import com.iamberry.rst.faces.order.OrderWarehouseService;
 import com.iamberry.rst.faces.product.ProductService;
 import com.iamberry.rst.service.cm.mapper.SalesOrderMapper;
+import com.iamberry.rst.service.dm.mapper.SupplierProductMapper;
 import com.iamberry.rst.service.fm.mapper.ComplaintDetectInfoMapper;
 import com.iamberry.rst.service.fm.mapper.InventoryLogMapper;
 import com.iamberry.rst.service.fm.mapper.InventoryMapper;
@@ -78,6 +80,8 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     private OrderWarehouseService orderWarehouseService;
     @Autowired
     private InventoryService inventoryService;
+    @Autowired
+    private SupplierProductMapper supplierProductMapper;
 
     @Override
     public Integer addSalesOrder(SalesOrder salesOrder) {
@@ -104,6 +108,33 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         if (res == null || res <= 0) {
             return 0;
         }
+
+        //确认订单需要填入产品成本价格
+        if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 1){
+            SalesOrderItem salesOrderItem = new SalesOrderItem();
+            salesOrderItem.setItemOrderId(salesOrder.getSalesId());
+            List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
+            List<SalesOrderItem> newSalesOrderItem = new ArrayList<>();
+            for (SalesOrderItem soi:salesOrderItemList) {
+                SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(soi.getItemColorId());
+                if(supplierProduct != null){
+                    SalesOrderItem newSalesOrder = new SalesOrderItem();
+                    newSalesOrder.setItemCost(supplierProduct.getSpCost());
+                    newSalesOrder.setItemCostTotal(supplierProduct.getSpCost() * soi.getItemNum());
+                    newSalesOrder.setItemId(soi.getItemId());
+                    newSalesOrderItem.add(newSalesOrder);
+                }else{
+                    throw  new RuntimeException("确认订单失败-未查询到该产品("+ soi.getItemProductName() +"-"+ soi.getItemProductColor() +")的成本价格");
+                }
+            }
+            for (SalesOrderItem soi : newSalesOrderItem) {
+                Integer flag = salesOrderMapper.updateOrderItemObj(soi);
+                if(flag < 1){
+                    throw  new RuntimeException("确认订单失败-修改产品项的成本价格失败");
+                }
+            }
+        }
+
         // 作废订单时需要返还库存
         if(salesOrder.getSalesStatus() != null && salesOrder.getSalesStatus() == 3){
             // 如果已出库则返还库存
@@ -1060,12 +1091,12 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         *  添加订单
         */
         if(saleId == null ){
-            throw  new RuntimeException("确认订单-订单id异常!");
+            throw  new RuntimeException("确认订单失败-订单id异常!");
         }
 
         SalesOrder salesOrder = salesOrderMapper.getSalesOrderById(saleId);
         if(salesOrder == null){
-            throw  new RuntimeException("确认订单-订单异常!");
+            throw  new RuntimeException("确认订单失败-订单异常!");
         }
 
         Integer flag = 0;
@@ -1073,25 +1104,35 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         salesOrderItem.setItemOrderId(salesOrder.getSalesId());
         List<SalesOrderItem> salesOrderItemList = salesOrderMapper.listSalesOrderItem(salesOrderItem);
         if(salesOrderItemList == null || salesOrderItemList.size()<1){
-            throw  new RuntimeException("确认订单-查询订单项失败!");
+            throw  new RuntimeException("确认订单失败-查询订单项失败!");
         }
         salesOrder.setSalesOrderItemList(salesOrderItemList);
 
         flag = salesOrderMapper.delOrderById(salesOrder.getSalesId());
         if(flag < 1){
-            throw  new RuntimeException("确认订单-删除订单失败!");
+            throw  new RuntimeException("确认订单失败-删除订单失败!");
         }
 
         flag = salesOrderMapper.delOrderItem(salesOrder.getSalesId());
         if(flag < 1){
-            throw  new RuntimeException("确认订单-删除订单项失败!");
+            throw  new RuntimeException("确认订单失败-删除订单项失败!");
+        }
+
+        for (SalesOrderItem soi:salesOrder.getSalesOrderItemList()) {
+            SupplierProduct supplierProduct = supplierProductMapper.getSupplierProductByColorId(soi.getItemColorId());
+            if(supplierProduct != null){
+                soi.setItemCost(supplierProduct.getSpCost());
+                soi.setItemCostTotal(supplierProduct.getSpCost() * soi.getItemNum());
+            }else{
+                throw  new RuntimeException("确认订单失败-未查询到该产品("+ soi.getItemProductName() +"-"+ soi.getItemProductColor() +")的成本价格");
+            }
         }
 
         //1:确认 状态
         salesOrder.setSalesStatus(1);
         boolean fl = salesOrderService.addRstOrderAndIteminfo(salesOrder);
         if(!fl){
-            throw  new RuntimeException("确认订单-添加订单失败!");
+            throw  new RuntimeException("确认订单失败-添加订单失败!");
         }
         return flag;
     }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/SalesOrderMapper.java

@@ -138,6 +138,11 @@ public interface SalesOrderMapper {
     Integer updateOrderItem(SalesOrderItem salesOrderItem);
 
     /**
+     * 修改订单项
+     */
+    Integer updateOrderItemObj(SalesOrderItem salesOrderItem);
+
+    /**
      * 根据外部订单号查询订单信息
      * **/
     SalesOrder getSalesOrderByLogistics(SalesOrder salesOrder);

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

@@ -717,15 +717,15 @@
       (
         item_order_id,item_product_id,item_num,item_color_id,item_product_type,
         item_product_name,item_product_pic,item_product_color,item_color_bar,
-        item_product_price,item_product_discount,item_total,item_create_time,item_is_source
+        item_product_price,item_product_discount,item_total,item_cost,item_cost_total,item_create_time,item_is_source
       )
     VALUES
     <foreach collection="list" item="item" separator=",">
       (
         #{item.itemOrderId},#{item.itemProductId},#{item.itemNum},#{item.itemColorId},
         #{item.itemProductType},#{item.itemProductName},#{item.itemProductPic},#{item.itemProductColor},
-        #{item.itemColorBar},#{item.itemProductPrice},#{item.itemProductDiscount},#{item.itemTotal},#{item.itemCreateTime},
-        #{item.itemIsSource}
+        #{item.itemColorBar},#{item.itemProductPrice},#{item.itemProductDiscount},#{item.itemTotal},
+        #{item.itemCost},#{item.itemCostTotal}, #{item.itemCreateTime},#{item.itemIsSource}
       )
     </foreach>
   </insert>
@@ -981,6 +981,62 @@
     AND item_color_bar = #{itemColorBar}
   </update>
 
+    <update id="updateOrderItemObj" parameterType="SalesOrderItem" >
+        update
+        tb_rst_sales_order_item
+        <set >
+            <if test="itemOrderId != null ">
+                item_order_id = #{itemOrderId},
+            </if >
+            <if test="itemProductId != null ">
+                item_product_id = #{itemProductId},
+            </if >
+            <if test="itemNum != null ">
+                item_num = #{itemNum},
+            </if >
+            <if test="itemColorId != null ">
+                item_color_id = #{itemColorId},
+            </if >
+            <if test="itemProductType != null ">
+                item_product_type = #{itemProductType},
+            </if >
+            <if test="itemProductName != null and itemProductName != ''">
+                item_product_name = #{itemProductName},
+            </if >
+            <if test="itemProductPic != null and itemProductPic != ''">
+                item_product_pic = #{itemProductPic},
+            </if >
+            <if test="itemProductColor != null and itemProductColor != ''">
+                item_product_color = #{itemProductColor},
+            </if >
+            <if test="itemColorBar != null and itemColorBar != ''">
+                item_color_bar = #{itemColorBar},
+            </if >
+            <if test="itemProductPrice != null ">
+                item_product_price = #{itemProductPrice},
+            </if >
+            <if test="itemProductDiscount != null ">
+                item_product_discount = #{itemProductDiscount},
+            </if >
+            <if test="itemTotal != null ">
+                item_total = #{itemTotal},
+            </if >
+            <if test="itemCost != null ">
+                item_cost = #{itemCost},
+            </if >
+            <if test="itemCostTotal != null ">
+                item_cost_total = #{itemCostTotal},
+            </if >
+            <if test="itemIsSource != null ">
+                item_is_source = #{itemIsSource},
+            </if >
+            <if test="itemReturnNum != null ">
+                item_return_num = #{itemReturnNum}
+            </if >
+        </set >
+        where item_id= #{itemId}
+    </update>
+
   <update id="updateOrderItemReturnNum" parameterType="SalesOrderItem">
     UPDATE tb_rst_sales_order_item
     <set>

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/dm/mapper/SupplierProductMapper.java

@@ -23,6 +23,12 @@ public interface SupplierProductMapper {
      */
     SupplierProduct  getSupplierProductById(Integer  id);
     /**
+     * 查询单条数据
+     * @param  colorId
+     * @return  supplierProduct
+     */
+    SupplierProduct  getSupplierProductByColorId(Integer colorId);
+    /**
      * 删除数据
      * @param  id
      * @return Integer

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/dm/mapper/supplierProductMapper.xml

@@ -42,6 +42,14 @@
         from tb_rst_dm_supplier_product t
         where t.sp_id= #{spId}
     </select>
+
+    <select id="getSupplierProductByColorId" resultMap="BaseResultMap" parameterType="Integer" >
+        select
+        <include refid="Base_List" />
+        from tb_rst_dm_supplier_product t
+        where t.color_id = #{colorId}
+    </select>
+
     <delete id="delete" parameterType="Integer" >
         delete FROM
         tb_rst_dm_supplier_product

+ 12 - 5
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/AdminSalesOrderController.java

@@ -1203,20 +1203,27 @@ public class AdminSalesOrderController {
         Integer flag = 0;
         String errorId = "";
             for (Integer salesIds : salesOrderIds) {
+                String msg = "";
                 if(isSplit != null && isSplit == 1){
                     try {
                         flag = salesOrderService.confirmSalesOrder(salesIds);
                     } catch (Exception e) {
+                        msg = e.getMessage();
                         e.printStackTrace();
                     }
                 }else if(isSplit != null && isSplit == 2){
-                    SalesOrder salesOrder = new SalesOrder();
-                    salesOrder.setSalesId(salesIds);
-                    salesOrder.setSalesStatus(1);
-                    flag = salesOrderService.updateSalesOrder(salesOrder);
+                    try {
+                        SalesOrder salesOrder = new SalesOrder();
+                        salesOrder.setSalesId(salesIds);
+                        salesOrder.setSalesStatus(1);
+                        flag = salesOrderService.updateSalesOrder(salesOrder);
+                    } catch (Exception e) {
+                        msg = e.getMessage();
+                        e.printStackTrace();
+                    }
                 }
                 if (flag < 1) {
-                    errorId += salesIds + ",";
+                    errorId += salesIds + ":" + msg + ";";
                 }
             }
             if (errorId.length() > 0) {