fubin 2 سال پیش
والد
کامیت
79f80f69f3

+ 11 - 0
src/main/java/com/dk/mdm/controller/sale/OrderController.java

@@ -71,6 +71,17 @@ public class OrderController {
     }
 
     /**
+     * @desc   : 获取订单信息(编辑用)
+     * @author : 付斌
+     * @date   : 2024-03-03 9:28
+     */
+    @ApiOperation(value = "编辑订单", notes = "编辑订单")
+    @PostMapping({"get_order_for_update/{id}"})
+    public ResponseResultVO<?> getOrderForUpdate(@PathVariable String id) {
+        return orderService.getOrderForUpdate(id);
+    }
+
+    /**
      * @desc : 编辑订单
      * @author : 付斌
      * @date : 2023/1/9 10:49

+ 8 - 0
src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.java

@@ -4,6 +4,7 @@ import com.dk.mdm.model.pojo.sale.OrderItem;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.query.sale.OrderItemQuery;
 import com.dk.mdm.model.response.sale.OrderItemResponse;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -26,5 +27,12 @@ public interface OrderItemMapper extends BaseMapper<OrderItem>{
      * @date   : 2024-02-28 10:19
      */
     Long countByCond(OrderItemQuery orderQuery);
+
+    /**
+     * @desc   : 删除明细
+     * @author : 付斌
+     * @date   : 2024-03-03 14:17
+     */
+    int deleteById(@Param("id") String id);
 }
 

+ 6 - 1
src/main/java/com/dk/mdm/mapper/sale/OrderItemMapper.xml

@@ -5,7 +5,7 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        item_id, order_id, item_index, sku_id, item_qty, price_std, amt_std, price_sale, item_amt, price_discount, non_std_code, out_status, outing_qty, outing_amt, out_qty, out_amt, return_qty, return_amt, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
+        item_id , order_id, item_index, sku_id, item_qty, price_std, amt_std, price_sale, item_amt, price_discount, non_std_code, out_status, outing_qty, outing_amt, out_qty, out_amt, return_qty, return_amt, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -235,4 +235,9 @@
             )
         </foreach>
     </insert>
+
+    <delete id="deleteById">
+        DELETE FROM dkic_b.t_psi_order_item
+        WHERE item_id = #{id}::UUID;
+    </delete>
 </mapper>

+ 7 - 0
src/main/java/com/dk/mdm/mapper/sale/OrderMapper.java

@@ -26,5 +26,12 @@ public interface OrderMapper extends BaseMapper<Order>{
      * @date   : 2024-02-28 10:19
      */
     Long countByCond(OrderQuery orderQuery);
+
+    /**
+     * @desc   : 根据Id进行查询
+     * @author : 付斌
+     * @date   : 2024-03-03 9:25
+     */
+    OrderResponse selectById(String id);
 }
 

+ 61 - 6
src/main/java/com/dk/mdm/mapper/sale/OrderMapper.xml

@@ -205,6 +205,7 @@
                tmc.cus_code                                      as "cusCode",
                tmc.cus_name                                      as "cusName",
                tmc.cus_phone                                     as "cusPhone",
+               tmc.cus_from                                      as "cusFrom",
                tmdd.data_value                                   as "cusFromName",
                tpo.address_area,
                tpo.address_name,
@@ -236,7 +237,8 @@
                tpo.remarks,
                tpo.annex_paths,
                makestaff.staff_name                              as "makeStaffName",
-               tpo.make_time
+               tpo.make_time,
+               tpo.cp_id
         FROM dkic_b.t_psi_order as tpo
                  left join dkic_b.t_mst_sale_channel tmsc on tpo.sales_channel = tmsc.channel_id
                  left join dkic_b.t_mst_org tmo on tpo.org_id = tmo.org_id
@@ -248,7 +250,7 @@
                  left join sys.t_data_kind as tdk2 on tpo.order_status = tdk2.kind_code
                  left join sys.t_data_kind as tdk3 on tpo.out_status = tdk3.kind_code
         <include refid="Condition"/>
-        order by tpo.make_time desc
+        order by tpo.op_create_time desc
         <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
             limit #{end} offset #{start}
         </if>
@@ -264,10 +266,63 @@
 
     <!-- 根据主键查询表t_psi_order的一行数据 -->
     <select id="selectById" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM t_psi_order
-        WHERE order_id = #{orderId}::uuid
+        SELECT tpo.order_id,
+               tpo.order_no,
+               tpo.order_type,
+               sys.f_get_name_i18n(tdk1.kind_name_i18n, 'zh_CN') as "orderTypeName",
+               tpo.org_id,
+               tmo.org_name                                      as "orgName",
+               tpo.staff_id,
+               tms.staff_name                                    as "staffName",
+               tpo.cus_id,
+               tmc.cus_code                                      as "cusCode",
+               tmc.cus_name                                      as "cusName",
+               tmc.cus_phone                                     as "cusPhone",
+               tmc.cus_from                                      as "cusFrom",
+               tmdd.data_value                                   as "cusFromName",
+               tpo.address_area,
+               tpo.address_name,
+               tpo.address_no,
+               tpo.address_gcj02,
+               tpo.address_full,
+               tpo.contact_name,
+               tpo.contact_phone,
+               tpo.sales_channel,
+               tmsc.channel_name                                 as "channelName",
+               tpo.delivery_date,
+               tpo.sum_quantity,
+               tpo.sum_standard,
+               tpo.sum_amount,
+               tpo.sale_discount,
+               tpo.order_status,
+               sys.f_get_name_i18n(tdk2.kind_name_i18n, 'zh_CN') as "orderStatusName",
+               tpo.out_status,
+               sys.f_get_name_i18n(tdk3.kind_name_i18n, 'zh_CN') as "outStatusName",
+               tpo.outing_qty,
+               tpo.outing_amt,
+               tpo.out_qty,
+               tpo.out_amt,
+               tpo.return_qty,
+               tpo.return_amt,
+               tpo.amt_receivable,
+               tpo.amt_handle,
+               tpo.amt_residue,
+               tpo.remarks,
+               tpo.annex_paths,
+               makestaff.staff_name                              as "makeStaffName",
+               tpo.make_time,
+               tpo.cp_id
+        FROM dkic_b.t_psi_order as tpo
+                 left join dkic_b.t_mst_sale_channel tmsc on tpo.sales_channel = tmsc.channel_id
+                 left join dkic_b.t_mst_org tmo on tpo.org_id = tmo.org_id
+                 left join dkic_b.t_mst_staff tms on tpo.staff_id = tms.staff_id
+                 left join dkic_b.t_mst_staff as makestaff on tpo.make_staff = makestaff.staff_id
+                 left join dkic_b.t_mst_customer tmc on tpo.cus_id = tmc.cus_id
+                 left join dkic_b.t_mst_dictionary_data tmdd on tmc.cus_from = tmdd.data_id
+                 left join sys.t_data_kind as tdk1 on tpo.order_type = tdk1.kind_code
+                 left join sys.t_data_kind as tdk2 on tpo.order_status = tdk2.kind_code
+                 left join sys.t_data_kind as tdk3 on tpo.out_status = tdk3.kind_code
+        WHERE tpo.order_id = #{orderId}::uuid
     </select>
 
     <!-- 根据主键锁定表t_psi_order的一行数据 -->

+ 3 - 0
src/main/java/com/dk/mdm/model/response/sale/OrderResponse.java

@@ -422,6 +422,9 @@ public class OrderResponse extends PageInfo<OrderResponse> implements Serializab
     private String cusPhone;
 
     @ApiModelProperty(value = "客户来源")
+    private String cusFrom;
+
+    @ApiModelProperty(value = "客户来源名称")
     private String cusFromName;
 
     @ApiModelProperty(value = "销售渠道")

+ 3 - 0
src/main/java/com/dk/mdm/model/vo/sale/OrderVO.java

@@ -410,6 +410,9 @@ public class OrderVO extends PageInfo<OrderVO> implements Serializable {
     @ApiModelProperty(value = "订单明细")
     private List<OrderItemVO> orderItemList;
 
+    @ApiModelProperty(value = "删除明细")
+    private List<OrderItemVO> deleteItemList;
+
     @ApiModelProperty(value = "客户编号")
     private String cusCode;
 

+ 53 - 19
src/main/java/com/dk/mdm/service/sale/OrderService.java

@@ -11,7 +11,6 @@ import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.sale.OrderConvert;
 import com.dk.mdm.infrastructure.convert.sale.OrderItemConvert;
-import com.dk.mdm.mapper.common.CommonMapper;
 import com.dk.mdm.mapper.mst.CustomerMapper;
 import com.dk.mdm.mapper.sale.OrderItemMapper;
 import com.dk.mdm.mapper.sale.OrderMapper;
@@ -32,6 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 @Transactional
@@ -62,6 +62,9 @@ public class OrderService extends BaseService<Order> {
     private OrderItemConvert orderItemConvert;
 
     @Autowired
+    private OrderItemService orderItemService;
+
+    @Autowired
     private OrderItemMapper orderItemMapper;
 
     @Autowired
@@ -89,7 +92,7 @@ public class OrderService extends BaseService<Order> {
     @Pagination
     public ResponseResultVO<Map<String, Object>> selectOrderItemById(String id) {
         Map<String, Object> result = new HashMap<>();
-        // 货物
+        // 商品明细
         List<OrderItemResponse> orderItem = orderItemMapper.selectByCond(new OrderItemQuery().setOrderId(id));
         result.put("orderItem", orderItem);
 
@@ -157,6 +160,22 @@ public class OrderService extends BaseService<Order> {
     }
 
     /**
+     * @desc   : 获取订单信息(编辑用)
+     * @author : 付斌
+     * @date   : 2024-03-02 17:27
+     */
+    public ResponseResultVO<?> getOrderForUpdate(String id) {
+        Map<String, Object> orderInfo = new HashMap<>();
+        OrderResponse orderResponse = orderMapper.selectById(id);
+        orderInfo.put("order", orderResponse);
+
+        // 商品明细
+        List<OrderItemResponse> orderItem = orderItemMapper.selectByCond(new OrderItemQuery().setOrderId(id));
+        orderInfo.put("orderItem", orderItem);
+        return ResponseResultUtil.success(orderInfo);
+    }
+
+    /**
      * @desc : 编辑方法
      * @author : 付斌
      * @date : 2023/1/9 10:49
@@ -167,24 +186,39 @@ public class OrderService extends BaseService<Order> {
     public ResponseResultVO<Boolean> updateOrder(OrderVO orderVO) {
         // 转化实体
         Order order = orderConvert.convertToPo(orderVO);
+        //删除的
+        List<OrderItemVO> deleteOrderItemVOList = orderVO.getDeleteItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        if(deleteOrderItemVOList.size() > 0){
+            for (OrderItemVO orderItemVO : deleteOrderItemVOList) {
+                // 非待出库单据不能删除
+                if(!Constant.OutStatus.DAICHUKU.getName().equals(orderItemVO.getOutStatus())){
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.NO_WAIT_INTO.getMessage());
+                } else {
+                    orderItemMapper.deleteById(orderItemVO.getItemId());
+                }
+            }
+        }
+        // 编辑的(包括新增的)
+        // 新增的
+        List<OrderItemVO> insertOrderItemVOList = orderVO.getOrderItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
+        for (OrderItemVO orderItemVO : insertOrderItemVOList) {
+            OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
+            orderItem.setOrderId(order.getOrderId()).setCpId(order.getCpId()).setOutStatus(Constant.OutStatus.DAICHUKU.getName());
+            orderItemMapper.insert(orderItem);
+        }
+        // 编辑的
+        List<OrderItemVO> editOrderItemVOList = orderVO.getOrderItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
+        for (OrderItemVO orderItemVO : editOrderItemVOList) {
+            // 商品数量不能小于出库中数量
+            if(orderItemVO.getItemQty().compareTo(orderItemVO.getOutingQty()) == -1){
+                throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ITEMQTY_NO_LESS_OUTQTY.getMessage());
+            } else {
+                OrderItem orderItem = orderItemConvert.convertToPo(orderItemVO);
+                orderItemService.updateByUuid(orderItem);
+            }
+        }
+
         return ResponseResultUtil.success(super.update(order, new UpdateWrapper<Order>().lambda().eq(Order::getOrderId,
                 UUID.fromString(order.getOrderId()))));
     }
-
-    /**
-     * @desc   : 获取订单信息(编辑用)
-     * @author : 付斌
-     * @date   : 2024-03-02 17:27
-     */
-    public ResponseResultVO<?> getOrderForUpdate(String orderId) {
-        Map<String, Object> orderInfo = null;
-        Order order = orderMapper.selectById(orderId);
-        orderInfo.put("order", order);
-
-//            //新建经销商下的门店为部门
-//            List<Store> stores = storeMapper.selectByCond(new Store().setFlgValid(true).setStoreOnly(true).setSale2Id(id));
-//            companyInfo.put("subStoreList", stores);
-
-        return ResponseResultUtil.success(orderInfo);
-    }
 }