Browse Source

feat:商城-总后台/销售后台:1、订单添加审核确认;2、列表筛选添加;3、导出调整;3、导入物流单号时添加发货时间

caoliqin 2 days ago
parent
commit
2406508ee6

+ 15 - 0
fs-admin/src/main/java/com/fs/hisStore/controller/FsStoreOrderScrmController.java

@@ -1119,6 +1119,21 @@ public class FsStoreOrderScrmController extends BaseController {
         return R.ok();
     }
 
+    @ApiOperation("批量审核订单")
+    @Log(title = "订单管理", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('store:storeOrder:batchAudit')")
+    @PostMapping("/batchAudit")
+    public R batchAuditOrder(@Validated @RequestBody FsStoreOrderBatchAuditParam param) {
+        if (param.getOrderIds() == null || param.getOrderIds().isEmpty()) {
+            return R.error("订单ID列表不能为空");
+        }
+        if (param.getIsAudit() == null) {
+            return R.error("审核状态不能为空");
+        }
+        int count = fsStoreOrderService.batchAuditOrder(param);
+        return R.ok("成功审核 " + count + " 条订单");
+    }
+
     private FsStoreOrderDf getDFInfo(String loginAccount) {
         //查询订单账户 判断是否存在该订单账户
         List<FsDfAccount> erpAccounts = fsDfAccountService.selectFsDfAccountList(null);

+ 18 - 4
fs-company/src/main/java/com/fs/hisStore/controller/FsStoreOrderScrmController.java

@@ -30,13 +30,11 @@ import com.fs.hisStore.dto.ExpressInfoDTO;
 import com.fs.hisStore.dto.StoreOrderProductDTO;
 import com.fs.hisStore.enums.OrderLogEnum;
 import com.fs.hisStore.enums.ShipperCodeEnum;
-import com.fs.hisStore.param.FsStoreOrderBindCustomerParam;
-import com.fs.hisStore.param.FsStoreOrderCreateUserParam;
-import com.fs.hisStore.param.FsStoreOrderFinishParam;
-import com.fs.hisStore.param.FsStoreOrderParam;
+import com.fs.hisStore.param.*;
 import com.fs.hisStore.service.*;
 import com.fs.hisStore.vo.*;
 import com.fs.system.service.ISysConfigService;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -473,4 +471,20 @@ public class FsStoreOrderScrmController extends BaseController
         Integer createSalesOrderType = config.getCreateSalesOrderType();
         return R.ok().put("createSalesOrderType",createSalesOrderType);
     }
+
+    @ApiOperation("批量审核订单")
+    @Log(title = "订单管理", businessType = BusinessType.UPDATE)
+    @PreAuthorize("@ss.hasPermi('store:storeOrder:batchAudit')")
+    @PostMapping("/batchAudit")
+    public R batchAuditOrder(@Validated @RequestBody FsStoreOrderBatchAuditParam param) {
+        if (param.getOrderIds() == null || param.getOrderIds().isEmpty()) {
+            return R.error("订单ID列表不能为空");
+        }
+        if (param.getIsAudit() == null) {
+            return R.error("审核状态不能为空");
+        }
+        int count = fsStoreOrderService.batchAuditOrder(param);
+        return R.ok("成功审核 " + count + " 条订单");
+    }
+
 }

+ 7 - 0
fs-service/src/main/java/com/fs/hisStore/domain/FsStoreOrderScrm.java

@@ -353,4 +353,11 @@ public class FsStoreOrderScrm extends BaseEntity
 
     @TableField(exist = false)
     private String bankTransactionId;
+
+     // 是否审核,1-是,0-否
+    private Integer isAudit;
+
+    // 订单总后台备注
+    private String orderRemark;
+
 }

+ 5 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java

@@ -76,7 +76,8 @@ public interface FsStoreOrderItemScrmMapper
 
     @Select({"<script> " +
             "select i.*,o.user_id,psps.cost,o.pay_postage,o.total_num,o.status,fspcs.cate_name, o.real_name,o.user_phone,o.user_address,o.create_time,o.pay_time,o.delivery_sn,o.delivery_name,o.delivery_id, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber,o.upload_time ,CASE WHEN o.certificates IS NULL OR o.certificates = '' THEN 0 ELSE 1 END AS is_upload   " +
-            " ,p.title as package_name,cts.name as scheduleName,os.pay_money, os.bank_transaction_id as bankTransactionId " +
+            " ,p.title as package_name,cts.name as scheduleName,os.pay_money, os.bank_transaction_id as bankTransactionId, o.delivery_send_time " +
+            ", CASE o.is_audit WHEN 1 THEN '是' ELSE '否' END AS isAudit " +
             " from fs_store_order_item_scrm i " +
             " left join fs_store_order_scrm o on o.id=i.order_id" +
             " left join fs_store_payment_scrm os on os.business_order_id = o.id " +
@@ -159,6 +160,9 @@ public interface FsStoreOrderItemScrmMapper
             "<if test = 'maps.scheduleId != null    '> " +
             "and o.schedule_id =#{maps.scheduleId} " +
             "</if>" +
+            "<if test = 'maps.isAudit != null'> " +
+            "and o.is_audit = #{maps.isAudit} " +
+            "</if>" +
             " order by o.id desc limit 50000"+
             "</script>"})
     List<FsStoreOrderItemExportVO> selectFsStoreOrderItemListExportVO(@Param("maps")FsStoreOrderParam fsStoreOrder);

+ 14 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderScrmMapper.java

@@ -651,6 +651,7 @@ public interface FsStoreOrderScrmMapper
 
     @Select({"<script> " +
             "select o.*,cts.name as scheduleName,u.nickname,u.phone,cc.push_code,cc.create_time as customer_create_time,cc.source,cc.customer_code, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber ,p.title as package_title ,CASE WHEN o.certificates IS NULL OR o.certificates = '' THEN 0 ELSE 1 END AS is_upload  " +
+            ", CASE o.is_audit WHEN 1 THEN '是' ELSE '否' END AS isAudit " +
             " from fs_store_order_scrm o  " +
             " left JOIN fs_store_product_package_scrm p on o.package_id=p.package_id " +
             " left join fs_user u on o.user_id=u.user_id  " +
@@ -748,6 +749,9 @@ public interface FsStoreOrderScrmMapper
             "<if test = 'maps.isUpload != null and maps.isUpload == 1    '> " +
             "and o.certificates is not null " +
             "</if>" +
+            "<if test = 'maps.isAudit != null'> " +
+            "and o.is_audit = #{maps.isAudit} " +
+            "</if>" +
             " ${maps.params.dataScope} "+
             " order by o.id desc limit 50000"+
             "</script>"})
@@ -1421,4 +1425,14 @@ public interface FsStoreOrderScrmMapper
 
     @Select("SELECT * FROM fs_store_order_scrm WHERE create_time >= DATE_SUB(NOW(), INTERVAL 30 MINUTE) and status = 0")
     List<FsStoreOrderScrm> selectBankOrder();
+
+    /**
+     * 批量更新订单审核状态
+     *
+     * @param orderIds 订单ID列表
+     * @param isAudit  审核状态 1-是,0-否
+     * @return 更新条数
+     */
+    int batchUpdateAuditStatus(@Param("orderIds") List<Long> orderIds, @Param("isAudit") Integer isAudit);
+
 }

+ 24 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderBatchAuditParam.java

@@ -0,0 +1,24 @@
+package com.fs.hisStore.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 批量审核订单参数
+ *
+ * @author fs
+ * @date 2024
+ */
+@Data
+public class FsStoreOrderBatchAuditParam {
+    /**
+     * 订单ID列表
+     */
+    private List<Long> orderIds;
+
+    /**
+     * 审核状态 1-是,0-否
+     */
+    private Integer isAudit;
+}

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsStoreOrderParam.java

@@ -119,4 +119,6 @@ public class FsStoreOrderParam extends BaseEntity implements Serializable
     private Integer pageNum;
     private Integer pageSize;
 
+    // 是否审核,1-是,0-否
+    private Integer isAudit;
 }

+ 8 - 0
fs-service/src/main/java/com/fs/hisStore/service/IFsStoreOrderScrmService.java

@@ -349,4 +349,12 @@ public interface IFsStoreOrderScrmService
     void cancelOrderByCode(String outerPayId);
 
     void updateFsStoreOrderDb(FsStoreOrderScrm order);
+
+    /**
+     * 批量审核订单
+     *
+     * @param param 批量审核参数
+     * @return 更新条数
+     */
+    int batchAuditOrder(FsStoreOrderBatchAuditParam param);
 }

+ 6 - 0
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -5355,6 +5355,12 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         fsStoreOrderMapper.updateFsStoreOrder(order);
     }
 
+    @Override
+    @Transactional
+    public int batchAuditOrder(FsStoreOrderBatchAuditParam param) {
+        return fsStoreOrderMapper.batchUpdateAuditStatus(param.getOrderIds(), param.getIsAudit());
+    }
+
     private static final DateTimeFormatter CST_FORMATTER = DateTimeFormatter
             .ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US)
             .withZone(ZoneId.of("Asia/Shanghai"));

+ 6 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderExportVO.java

@@ -252,6 +252,9 @@ public class FsStoreOrderExportVO implements Serializable
     @Excel(name = "物流跟踪状态" , dictType = "store_order_delivery_type")
     private String deliveryType;
 
+    @Excel(name = "发货时间")
+    private String deliverySendTime;
+
     @Excel(name = "客户编码")
     private String customerCode;
 
@@ -267,4 +270,7 @@ public class FsStoreOrderExportVO implements Serializable
 
     @Excel(name = "归属档期")
     private String scheduleName;
+
+    @Excel(name = "是否审核")
+    private String isAudit;
 }

+ 6 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderItemExportVO.java

@@ -89,6 +89,9 @@ public class FsStoreOrderItemExportVO implements Serializable
     @Excel(name = "快递单号")
     private String deliveryId;
 
+    @Excel(name = "发货时间")
+    private String deliverySendTime;
+
     @Excel(name = "所属公司")
     private String companyName;
     @Excel(name = "所属销售")
@@ -114,4 +117,7 @@ public class FsStoreOrderItemExportVO implements Serializable
     @Excel(name = "银行交易流水号")
     private String bankTransactionId;
 
+    @Excel(name = "是否审核")
+    private String isAudit;
+
 }

+ 5 - 0
fs-service/src/main/java/com/fs/hisStore/vo/FsStoreOrderVO.java

@@ -251,6 +251,9 @@ public class FsStoreOrderVO implements Serializable
     @Excel(name = "物流代收金额")
     private BigDecimal deliveryPayMoney;
 
+    @Excel(name = "发货时间")
+    private String deliverySendTime;
+
     private String itemJson;
 
     private String orderVisit;
@@ -271,5 +274,7 @@ public class FsStoreOrderVO implements Serializable
     @Excel(name = "银行交易流水号")
     private String bankTransactionId;
 
+    // 是否审核,1-是,0-否
+    private Boolean isAudit;
 
 }

+ 19 - 2
fs-service/src/main/resources/mapper/hisStore/FsStoreOrderScrmMapper.xml

@@ -956,8 +956,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                     WHEN order_code = #{item.orderNumber} THEN #{item.deliveryPayTime}
                 </foreach>
                 ELSE delivery_pay_time
-                END
+                END,
             </if>
+            delivery_send_time = NOW()
         </set>
         WHERE order_code IN
         <foreach collection="list" item="item" open="(" separator="," close=")">
@@ -1593,7 +1594,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectFsStoreOrderListVO" resultType="com.fs.hisStore.vo.FsStoreOrderVO">
         select DISTINCT o.id,o.order_code,o.extend_order_id,o.pay_order_id,o.bank_order_id,o.user_id,o.real_name,o.user_phone,o.user_address,o.cart_id,o.freight_price,o.total_num,o.total_price,o.total_postage,o.pay_price,o.pay_postage,o.pay_delivery,o.pay_money,o.deduction_price,o.coupon_id,o.coupon_price,o.paid,o.pay_time,o.pay_type,o.create_time,o.update_time,o.status,o.refund_status,o.refund_reason_wap_img,o.refund_reason_wap_explain,o.refund_reason_time,o.refund_reason_wap,o.refund_reason,o.refund_price,o.delivery_sn,o.delivery_name,o.delivery_type,o.delivery_id,o.gain_integral,o.use_integral,o.pay_integral,o.back_integral,o.mark,o.is_del,o.remark,o.verify_code,o.store_id,o.shipping_type,o.is_channel,o.is_remind,o.is_sys_del,o.is_prescribe,o.prescribe_id,o.company_id,o.company_user_id,o.is_package,o.package_json,o.order_type,o.package_id,o.finish_time,o.delivery_status,o.delivery_pay_status,o.delivery_time,o.delivery_pay_time,o.delivery_pay_money,o.tui_money,o.tui_money_status,o.delivery_import_time,o.tui_user_id,o.tui_user_money_status,o.order_create_type,o.store_house_code,o.dept_id,o.is_edit_money,o.customer_id,o.is_pay_remain,o.delivery_send_time,o.certificates,o.upload_time,o.item_json,o.schedule_id,o.delivery_pay_type,o.order_visit,o.service_fee,o.cycle,o.prescribe_price,o.follow_doctor_id,o.follow_time,o.user_coupon_id,o.order_medium,o.erp_phone
         ,u.phone,u.register_code,u.register_date,u.source, c.company_name ,cu.nick_name as company_user_nick_name ,cu.phonenumber as company_usere_phonenumber
-        , csc.name miniProgramName,fsp.cost, fspc.cate_name,spavs.bar_code, sp_latest.bank_transaction_id as bankTransactionId
+        , csc.name miniProgramName,fsp.cost, fspc.cate_name,spavs.bar_code, sp_latest.bank_transaction_id as bankTransactionId, o.is_audit
         from fs_store_order_scrm o
         left join fs_user u on o.user_id=u.user_id
         left join company c on c.company_id=o.company_id
@@ -1731,6 +1732,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="maps.erpAccount == '未分拣'">
                 and ( df.login_account is null or df.login_account like '')
             </if>
+            <if test="maps.isAudit != null   ">
+                and o.is_audit = #{maps.isAudit}
+            </if>
         </where>
         ${maps.params.dataScope}
 <!--        <if test="maps.productName != null and  maps.productName !=  ''   ">-->
@@ -1915,6 +1919,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="maps.erpAccount == '未分拣'">
                 and ( df.login_account is null or df.login_account like '')
             </if>
+            <if test="maps.isAudit != null ">
+                and o.is_audit = #{maps.isAudit}
+            </if>
         </where>
         ${maps.params.dataScope}
 <!--        <if test="maps.productName != null and  maps.productName !=  ''   ">-->
@@ -2129,4 +2136,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </update>
 
+    <!-- 批量更新订单审核状态 -->
+    <update id="batchUpdateAuditStatus">
+        UPDATE fs_store_order_scrm
+        SET is_audit = #{isAudit}
+        WHERE id IN
+        <foreach collection="orderIds" item="orderId" open="(" separator="," close=")">
+            #{orderId}
+        </foreach>
+    </update>
+
 </mapper>