From 1a77d8fc3759ce2187ce48c6a148b15950b475c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A3=E6=96=B0?= Date: Sun, 12 Apr 2026 09:16:48 +0000 Subject: [PATCH] Merge #91 into master from cc_20230331_device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat:添加阶段状态 * cc_20230331_device: (21 commits squashed) - feat:添加采购审批 - Merge branch 'master' into cc_20230331_device - feat:设备发货阶段 - feat:设备发货 - feat:设备发货 - feat:接口调整 - feat:接口调整 - feat:接口调整 - feat:接口调整 - feat:接口调整 - feat:接口调整 - feat:接口调整 - feat:接口调整 - feat:查询订单设备明细 - feat:测试 - feat:短信模板切换 - feat:getPendingList - feat:代办调整 - feat:处理人 - feat:添加阶段状态 - Merge branch 'master' into cc_20230331_device # Conflicts: # coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java # coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java Signed-off-by: 正新 Merged-by: 正新 CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/91 --- .../store/enums/DeliveryItemTypeEnum.java | 36 +++ .../store/enums/DeliveryPlanStageEnum.java | 37 +++ .../cool/store/enums/DeliveryStatusEnum.java | 36 +++ .../com/cool/store/enums/ErrorCodeEnum.java | 3 +- .../com/cool/store/enums/FileTypeEnum.java | 3 +- .../java/com/cool/store/enums/SMSMsgEnum.java | 3 + .../com/cool/store/enums/UserRoleEnum.java | 2 + .../enums/order/StoreOrderStatusEnum.java | 20 +- .../store/enums/point/ShopSubStageEnum.java | 2 + .../enums/point/ShopSubStageStatusEnum.java | 5 + .../cool/store/dao/ShopDeliveryPlanDAO.java | 77 ++++++ .../store/dao/ShopDeliveryPlanItemDAO.java | 93 +++++++ .../com/cool/store/dao/ShopStageInfoDAO.java | 9 + .../mapper/ShopDeliveryPlanItemMapper.java | 51 ++++ .../store/mapper/ShopDeliveryPlanMapper.java | 50 ++++ .../mapper/ShopDeliveryPlanItemMapper.xml | 92 +++++++ .../mapper/ShopDeliveryPlanMapper.xml | 101 ++++++++ .../converter/ConfigItemListConverter.java | 64 +++++ .../store/entity/plan/ShopDeliveryPlanDO.java | 53 ++++ .../entity/plan/ShopDeliveryPlanItemDO.java | 54 ++++ .../request/plan/NotifyDeliveryRequest.java | 26 ++ .../plan/UpdateDeliveryItemRequest.java | 28 ++ .../cool/store/vo/desk/DeliveryPendingVO.java | 51 ++++ .../vo/order/OrderDeviceConfigItemVO.java | 66 +++++ .../vo/order/OrderDeviceDetailExportVO.java | 73 ++++++ .../store/vo/order/OrderDeviceDetailVO.java | 28 ++ .../cool/store/vo/plan/DeliveryDetailVO.java | 48 ++++ .../cool/store/vo/plan/DeliveryInfoVO.java | 37 +++ .../com/cool/store/service/DeskService.java | 3 + .../store/service/ExportRealizeService.java | 17 +- .../com/cool/store/service/ExportService.java | 8 + .../store/service/impl/DeskServiceImpl.java | 61 ++++- .../impl/ExportRealizeServiceImpl.java | 25 ++ .../store/service/impl/ExportServiceImpl.java | 15 ++ .../service/impl/PreparationServiceImpl.java | 1 + .../store/service/impl/ShopServiceImpl.java | 2 + .../service/order/MiniStoreOrderService.java | 16 +- .../order/impl/MiniStoreOrderServiceImpl.java | 242 +++++++++++++----- .../service/plan/ShopDeliveryPlanService.java | 42 +++ .../impl/ShopDeliveryPlanServiceImpl.java | 227 ++++++++++++++++ .../impl/PreAllocationRecordServiceImpl.java | 3 +- .../store/controller/webb/DeskController.java | 7 + .../webb/ShopDeliveryPlanController.java | 52 ++++ .../controller/webb/StoreOrderController.java | 14 + .../webc/MiniShopDeliveryPlanController.java | 41 +++ .../webc/MiniStoreOrderController.java | 32 ++- .../store/controller/webc/TestController.java | 22 +- .../resources/application-test.properties | 2 +- 48 files changed, 1874 insertions(+), 106 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryItemTypeEnum.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryPlanStageEnum.java create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryStatusEnum.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanItemDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanItemMapper.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanItemMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/converter/ConfigItemListConverter.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanItemDO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/plan/NotifyDeliveryRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/plan/UpdateDeliveryItemRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/desk/DeliveryPendingVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceConfigItemVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailExportVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryDetailVO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryInfoVO.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/plan/ShopDeliveryPlanService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/plan/impl/ShopDeliveryPlanServiceImpl.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ShopDeliveryPlanController.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopDeliveryPlanController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryItemTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryItemTypeEnum.java new file mode 100644 index 000000000..2ad25cf7b --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryItemTypeEnum.java @@ -0,0 +1,36 @@ +package com.cool.store.enums; + + +/** + * 发货项类型枚举 + */ +public enum DeliveryItemTypeEnum { + + PURCHASE_DEVICE(1, "采购设备"), + FIRE_CODE_DEVICE(2, "火码设备"); + + private final Integer code; + private final String desc; + + DeliveryItemTypeEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + public static DeliveryItemTypeEnum getByCode(Integer code) { + for (DeliveryItemTypeEnum item : values()) { + if (item.getCode().equals(code)) { + return item; + } + } + return null; + } +} \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryPlanStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryPlanStageEnum.java new file mode 100644 index 000000000..d55846e8e --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryPlanStageEnum.java @@ -0,0 +1,37 @@ +package com.cool.store.enums; + + +/** + * 门店发货阶段枚举 + */ +public enum DeliveryPlanStageEnum { + + PENDING_DELIVERY(1, "待发货"), + PARTIAL_DELIVERY(2, "部分发货"), + COMPLETED(3, "已完成"); + + private final Integer code; + private final String desc; + + DeliveryPlanStageEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + public static DeliveryPlanStageEnum getByCode(Integer code) { + for (DeliveryPlanStageEnum item : values()) { + if (item.getCode().equals(code)) { + return item; + } + } + return null; + } +} \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryStatusEnum.java new file mode 100644 index 000000000..f8fc1d075 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/DeliveryStatusEnum.java @@ -0,0 +1,36 @@ +package com.cool.store.enums; + + +/** + * 发货状态枚举 + */ +public enum DeliveryStatusEnum { + + NOT_DELIVERED(0, "未发货"), + DELIVERED(1, "已发货"); + + private final Integer code; + private final String desc; + + DeliveryStatusEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + public static DeliveryStatusEnum getByCode(Integer code) { + for (DeliveryStatusEnum item : values()) { + if (item.getCode().equals(code)) { + return item; + } + } + return null; + } +} \ No newline at end of file diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index 816a9fa6a..4e0c3c73b 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -364,7 +364,8 @@ public enum ErrorCodeEnum { CURRENT_ORDER_STATUS_NOT_SUPPORT_CHANGE(1610111, "当前订单状态不支持变换心愿单!", null), CURRENT_WISHLIST_BIND_OTHER_POINT(1610112, "当前心愿单绑定了其他铺位!", null), ORDER_DATA_EXCEPTION(1610113, "心愿单数据异常!", null), - CURRENT_WISHLIST_NOT_EXIST(1610112, "当前心愿单不存在!", null), + CURRENT_WISHLIST_NOT_EXIST(1610114, "当前心愿单不存在!", null), + AMOUNT_GEN_ZERO(1610115, "分账金额必须大于0!", null), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java index 311435bdd..187d80b46 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/FileTypeEnum.java @@ -22,7 +22,7 @@ public enum FileTypeEnum { IMPORT_OA_OLD_SHOP_DATA("importOaOldShopData", "导入OA旧数据"), ZXJP_OPEN_SHOP_REPORT("zxjpOpenShopReport","正新鸡排开店"), IMPORT_OA_OLD_SHOP_STAGE_DATA("importOaOldShopStageData", "导入OA旧阶段数据"), - IMPORT_OA_OLD_SHOP_STAGE_DATA_ERROR("OaOldShopStageDataError", "导入OA旧数据阶段错误列表"), + IMPORT_OA_OLD_SHOP_STAGE_DATA_ERROR("OaOldShopStageDataErrorList", "导入OA旧数据阶段错误列表 "), IMPORT_FITMENT_SHOP_STAGE("importFitmentShopStage", "导入装修阶段完成数据"), IMPORT_FITMENT_SHOP_STAGE_DATA_ERROR_LIST("OaOldShopStageDataErrorList", "导入装修阶段完成数据错误列表 "), SELLING_DETAILS_REPORT("sellingDetailsReport", "开店明细报表"), @@ -33,6 +33,7 @@ public enum FileTypeEnum { ORDER_RECORD_EXPORT("orderRecordExport", "订单记录列表"), POINT_EXPORT("pointExport", "铺位管理列表"), MY_POINT_EXPORT("myPointExport", "我的铺位管理列表"), + ORDER_DEVICE_DETAIL_EXPORT("orderDeviceDetailExport", "订单设备明细导出"), ; private String fileType; private String desc; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/SMSMsgEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/SMSMsgEnum.java index 79df8a643..8977122ae 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/SMSMsgEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/SMSMsgEnum.java @@ -12,6 +12,9 @@ public enum SMSMsgEnum { DESIGN_STAGE("设计阶段", "", "SMS_498750214"), CONSTRUCTION_STAGE("施工阶段", "", "SMS_498870170"), PLATFORM_BUILD_STORE("平台建店", "", "SMS_498730163"), + DEVICE_NOTICE("设备发货通知", "${partnerName}-门店${shopName}可安排设备发货,期望发货日期为${shippingDate},请核对订单后安排发货,详情明细请登录CRM酷店掌-CRM首页-开店管理查看。", "SMS_504735256"), + + ; private String title; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java index 9f12c642b..2b0be8433 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/UserRoleEnum.java @@ -76,6 +76,8 @@ public enum UserRoleEnum { OPERATION_GENERAL_CONSULTANT(1764642515446L,"运营片区总顾问"), ORDER_GROUP(1766387359609L,"订单组"), AI_STORE_TYPE_APPROVE(1774252055402L,"AI店型订单审核"), + DEVICE_SHIPMENT_HM(1775108261858L,"设备发货-火码"), + DEVICE_SHIPMENT_CG(1775108280524L,"设备发货-采购") ; private Long code; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/order/StoreOrderStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/order/StoreOrderStatusEnum.java index 40eae1177..298026b60 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/order/StoreOrderStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/order/StoreOrderStatusEnum.java @@ -12,6 +12,7 @@ public enum StoreOrderStatusEnum { DRAFT(0, "草稿"), WAIT_CONFIRM(5, "待立规确认"), + DEVICE_CONFIRM(6, "待采购设备确认"), INVEST_MANAGER_CONFIRM(7, "待加盟商确认"), FINANCIAL_CONFIRM(8, "待内勤确认"), WAIT_ADJUST(10, "待调整"), @@ -37,14 +38,6 @@ public enum StoreOrderStatusEnum { } - /** - * 可撤回阶段 - * @param code - * @return - */ - public static boolean canWithdraw(Integer code) { - return WAIT_CONFIRM.getCode().equals(code) || WAIT_PAY.getCode().equals(code)||INVEST_MANAGER_CONFIRM.getCode().equals(code); - } /** * 待审核状态 @@ -52,6 +45,15 @@ public enum StoreOrderStatusEnum { * @return */ public static boolean approve(Integer code) { - return WAIT_CONFIRM.getCode().equals(code) || INVEST_MANAGER_CONFIRM.getCode().equals(code); + return WAIT_CONFIRM.getCode().equals(code) || INVEST_MANAGER_CONFIRM.getCode().equals(code) || DEVICE_CONFIRM.getCode().equals(code); + } + + /** + * 后台管理订单 只有立规确认或者设备确认的时候可以修改 + * @param code + * @return + */ + public static boolean managerOrder(Integer code) { + return WAIT_CONFIRM.getCode().equals(code) || DEVICE_CONFIRM.getCode().equals(code); } } diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java index 5d9f75ecd..a579dd55e 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageEnum.java @@ -45,6 +45,7 @@ public enum ShopSubStageEnum { SHOP_STAGE_27(ShopStageEnum.SHOP_STAGE_2, 270, "开业验收", 1), SHOP_STAGE_28(ShopStageEnum.SHOP_STAGE_2, 280, "生成预定订单", 1), + SHOP_STAGE_29(ShopStageEnum.SHOP_STAGE_2, 290, "设备发货", 1), SHOP_STAGE_30(ShopStageEnum.SHOP_STAGE_2, 300, "开业日期报备", 1), @@ -159,6 +160,7 @@ public enum ShopSubStageEnum { return ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00; } case SHOP_STAGE_28: + case SHOP_STAGE_29: if (userStrandard==1){ //是标准店 需要选择店型 其他情况不需要选择店型 return ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java index 02201952b..59fe54912 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/point/ShopSubStageStatusEnum.java @@ -169,6 +169,7 @@ public enum ShopSubStageStatusEnum { SHOP_SUB_STAGE_STATUS_280(ShopSubStageEnum.SHOP_STAGE_28, 2800, "待选购", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_281(ShopSubStageEnum.SHOP_STAGE_28, 2810, "待立规确认", Boolean.FALSE), + SHOP_SUB_STAGE_STATUS_281_2(ShopSubStageEnum.SHOP_STAGE_28, 2812, "待采购设备确认", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_281_5(ShopSubStageEnum.SHOP_STAGE_28, 2815, "待加盟商确认", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_282(ShopSubStageEnum.SHOP_STAGE_28, 2820, "待内勤确认分账", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_283(ShopSubStageEnum.SHOP_STAGE_28, 2830, "审批拒绝", Boolean.FALSE), @@ -176,6 +177,10 @@ public enum ShopSubStageStatusEnum { SHOP_SUB_STAGE_STATUS_284_5(ShopSubStageEnum.SHOP_STAGE_28, 2845, "对账中", Boolean.FALSE), SHOP_SUB_STAGE_STATUS_285(ShopSubStageEnum.SHOP_STAGE_28, 2850, "已完成", Boolean.TRUE), + SHOP_SUB_STAGE_STATUS_290(ShopSubStageEnum.SHOP_STAGE_29, 2900, "待通知发货", Boolean.FALSE), + SHOP_SUB_STAGE_STATUS_291(ShopSubStageEnum.SHOP_STAGE_29, 2910, "已通知发货", Boolean.FALSE), + SHOP_SUB_STAGE_STATUS_292(ShopSubStageEnum.SHOP_STAGE_29, 2920, "部分发货", Boolean.FALSE), + SHOP_SUB_STAGE_STATUS_294(ShopSubStageEnum.SHOP_STAGE_29, 2940, "已完成", Boolean.TRUE), //开业日期报备 SHOP_SUB_STAGE_STATUS_300(ShopSubStageEnum.SHOP_STAGE_30, 3000, "待填写", Boolean.FALSE), diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanDAO.java new file mode 100644 index 000000000..c3544afb0 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanDAO.java @@ -0,0 +1,77 @@ +package com.cool.store.dao; + +import com.cool.store.entity.plan.ShopDeliveryPlanDO; +import com.cool.store.mapper.ShopDeliveryPlanMapper; +import com.cool.store.vo.desk.DeliveryPendingVO; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +@Repository +public class ShopDeliveryPlanDAO { + + @Resource + private ShopDeliveryPlanMapper shopDeliveryPlanMapper; + + /** + * 根据ID查询 + */ + public ShopDeliveryPlanDO getById(Long id) { + if (id == null) { + return null; + } + return shopDeliveryPlanMapper.getById(id); + } + + /** + * 根据门店ID查询 + */ + public ShopDeliveryPlanDO getByShopId(Long shopId) { + if (shopId == null) { + return null; + } + return shopDeliveryPlanMapper.getByShopId(shopId); + } + + /** + * 插入 + */ + public int insert(ShopDeliveryPlanDO record) { + record.setCreateTime(new Date()); + record.setUpdateTime(new Date()); + return shopDeliveryPlanMapper.insert(record); + } + + /** + * 更新 + */ + public int update(ShopDeliveryPlanDO record) { + record.setUpdateTime(new Date()); + return shopDeliveryPlanMapper.update(record); + } + + /** + * 删除 + */ + public int deleteById(Long id) { + if (id == null) { + return 0; + } + return shopDeliveryPlanMapper.deleteById(id); + } + + public List getPendingList(String keyword, Integer type) { + return shopDeliveryPlanMapper.getPendingList(keyword,type); + } + + + + /** + * 查询所有 + */ + public List listAll() { + return shopDeliveryPlanMapper.listAll(); + } +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanItemDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanItemDAO.java new file mode 100644 index 000000000..8692ab1df --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopDeliveryPlanItemDAO.java @@ -0,0 +1,93 @@ +package com.cool.store.dao; + +import com.cool.store.entity.plan.ShopDeliveryPlanItemDO; +import com.cool.store.mapper.ShopDeliveryPlanItemMapper; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +@Repository +public class ShopDeliveryPlanItemDAO { + + @Resource + private ShopDeliveryPlanItemMapper shopDeliveryPlanItemMapper; + + /** + * 根据ID查询 + */ + public ShopDeliveryPlanItemDO getById(Long id) { + if (id == null) { + return null; + } + return shopDeliveryPlanItemMapper.getById(id); + } + + /** + * 根据主表ID查询明细列表 + */ + public List listByPlanId(Long planId) { + if (planId == null) { + return null; + } + return shopDeliveryPlanItemMapper.listByPlanId(planId); + } + + /** + * 根据主表ID和类型查询明细 + */ + public ShopDeliveryPlanItemDO getByPlanIdAndItemType(Long planId, Integer itemType) { + if (planId == null || itemType == null) { + return null; + } + return shopDeliveryPlanItemMapper.getByPlanIdAndItemType(planId, itemType); + } + + /** + * 插入 + */ + public int insert(ShopDeliveryPlanItemDO record) { + record.setCreateTime(new Date()); + record.setUpdateTime(new Date()); + return shopDeliveryPlanItemMapper.insert(record); + } + + + public int batchInsert(List recordList) { + if (CollectionUtils.isEmpty(recordList)){ + return 0; + } + return shopDeliveryPlanItemMapper.batchInsert(recordList); + } + + /** + * 更新 + */ + public int update(ShopDeliveryPlanItemDO record) { + record.setUpdateTime(new Date()); + return shopDeliveryPlanItemMapper.update(record); + } + + /** + * 删除 + */ + public int deleteById(Long id) { + if (id == null) { + return 0; + } + return shopDeliveryPlanItemMapper.deleteById(id); + } + + /** + * 根据主表ID删除明细 + */ + public int deleteByPlanId(Long planId) { + if (planId == null) { + return 0; + } + return shopDeliveryPlanItemMapper.deleteByPlanId(planId); + } +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java index 7f69c1172..79612c35d 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/ShopStageInfoDAO.java @@ -489,6 +489,15 @@ public class ShopStageInfoDAO { example.createCriteria().andIn("shopId",shopIds).andEqualTo("shopStage",shopStage); return shopStageInfoMapper.selectByExample(example); } + + public List getStageByShopSubStage(List shopIds, Integer shopSubStage){ + if (CollectionUtils.isEmpty(shopIds) || shopSubStage == null){ + return null; + } + Example example = new Example(ShopStageInfoDO.class); + example.createCriteria().andIn("shopId",shopIds).andEqualTo("shopSubStage",shopSubStage); + return shopStageInfoMapper.selectByExample(example); + } //查询处于xx状态的数据 public List getShopStageInfoByShopSubStageStatus(Integer shopSubStageStatus) { Example example = new Example(ShopStageInfoDO.class); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanItemMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanItemMapper.java new file mode 100644 index 000000000..8c42966df --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanItemMapper.java @@ -0,0 +1,51 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.plan.ShopDeliveryPlanItemDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface ShopDeliveryPlanItemMapper { + + /** + * 根据ID查询 + */ + ShopDeliveryPlanItemDO getById(@Param("id") Long id); + + /** + * 根据主表ID查询明细列表 + */ + List listByPlanId(@Param("planId") Long planId); + + /** + * 根据主表ID和类型查询明细 + */ + ShopDeliveryPlanItemDO getByPlanIdAndItemType(@Param("planId") Long planId, @Param("itemType") Integer itemType); + + /** + * 插入 + */ + int insert(ShopDeliveryPlanItemDO record); + + /** + * 批 liqu量插入 + */ + int batchInsert(@Param("list") List list); + + /** + * 更新 + */ + int update(ShopDeliveryPlanItemDO record); + + /** + * 删除 + */ + int deleteById(@Param("id") Long id); + + /** + * 根据主表ID删除明细 + */ + int deleteByPlanId(@Param("planId") Long planId); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanMapper.java new file mode 100644 index 000000000..9a4ce2ea8 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopDeliveryPlanMapper.java @@ -0,0 +1,50 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.plan.ShopDeliveryPlanDO; +import com.cool.store.vo.desk.DeliveryPendingVO; +import io.swagger.models.auth.In; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface ShopDeliveryPlanMapper { + + /** + * 根据ID查询 + */ + ShopDeliveryPlanDO getById(@Param("id") Long id); + + /** + * 根据门店ID查询 + */ + ShopDeliveryPlanDO getByShopId(@Param("shopId") Long shopId); + + /** + * 插入 + */ + int insert(ShopDeliveryPlanDO record); + + /** + * 更新 + */ + int update(ShopDeliveryPlanDO record); + + /** + * 删除 + */ + int deleteById(@Param("id") Long id); + + /** + * 查询所有 + */ + List listAll(); + + /** + * 查询代办 + * @param keyword + * @return + */ + List getPendingList(@Param("keyword") String keyword, @Param("type") Integer type); +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanItemMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanItemMapper.xml new file mode 100644 index 000000000..621e81c75 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanItemMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + id, plan_id, item_type, delivery_status, delivery_remark, create_time, update_time + + + + + + + + + + INSERT INTO zxjp_shop_delivery_plan_item + + plan_id, + item_type, + delivery_status, + delivery_remark, + create_time, + update_time, + + + #{planId,jdbcType=BIGINT}, + #{itemType,jdbcType=INTEGER}, + #{deliveryStatus,jdbcType=INTEGER}, + #{deliveryRemark,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, + #{updateTime,jdbcType=TIMESTAMP}, + + + + + INSERT INTO zxjp_shop_delivery_plan_item + (plan_id, item_type, delivery_status, delivery_remark, create_time, update_time) + VALUES + + (#{item.planId}, #{item.itemType}, #{item.deliveryStatus}, #{item.deliveryRemark}, now(), now()) + + + + + UPDATE zxjp_shop_delivery_plan_item + + plan_id = #{planId,jdbcType=BIGINT}, + item_type = #{itemType,jdbcType=INTEGER}, + delivery_status = #{deliveryStatus,jdbcType=INTEGER}, + delivery_remark = #{deliveryRemark,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + WHERE id = #{id,jdbcType=BIGINT} + + + + DELETE FROM zxjp_shop_delivery_plan_item + WHERE id = #{id} + + + + DELETE FROM zxjp_shop_delivery_plan_item + WHERE plan_id = #{planId} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanMapper.xml new file mode 100644 index 000000000..172195784 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/ShopDeliveryPlanMapper.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + id, shop_id, expected_delivery_time, remark, create_user, create_time, update_time + + + + + + + + INSERT INTO zxjp_shop_delivery_plan + + shop_id, + expected_delivery_time, + remark, + create_user, + create_time, + update_time, + + + #{shopId,jdbcType=BIGINT}, + #{expectedDeliveryTime,jdbcType=TIMESTAMP}, + #{remark,jdbcType=VARCHAR}, + #{createUser,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, + #{updateTime,jdbcType=TIMESTAMP}, + + + + + UPDATE zxjp_shop_delivery_plan + + shop_id = #{shopId,jdbcType=BIGINT}, + expected_delivery_time = #{expectedDeliveryTime,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + create_user = #{createUser,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + WHERE id = #{id,jdbcType=BIGINT} + + + + DELETE FROM zxjp_shop_delivery_plan + WHERE id = #{id} + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/converter/ConfigItemListConverter.java b/coolstore-partner-model/src/main/java/com/cool/store/converter/ConfigItemListConverter.java new file mode 100644 index 000000000..bc9afe921 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/converter/ConfigItemListConverter.java @@ -0,0 +1,64 @@ +package com.cool.store.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.alibaba.fastjson.JSON; +import com.cool.store.vo.order.OrderDeviceConfigItemVO; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @Auther zx_szh + * @Date 2026/4/3 09:30 + * @Version 1.0 + */ +public class ConfigItemListConverter implements Converter> { + + @Override + public Class supportJavaTypeKey() { + return List.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + + @Override + public List convertToJavaData(CellData cellData, + ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + String cellValue = cellData.getStringValue(); + if (!StringUtils.hasText(cellValue)) { + return new ArrayList<>(); + } + + // 将 JSON 字符串解析为 List + return JSON.parseArray(cellValue, OrderDeviceConfigItemVO.class); + } + + /** + * 导出 Excel 时:将 List 对象转换为字符串写入单元格 + * 导出时使用 + */ + @Override + public CellData convertToExcelData(List value, + ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + if (value == null || value.isEmpty()) { + return new CellData<>(""); + } + + // 将 List 转换为 JSON 字符串 + String jsonString = JSON.toJSONString(value); + return new CellData<>(jsonString); + } + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanDO.java new file mode 100644 index 000000000..74f31bd8b --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanDO.java @@ -0,0 +1,53 @@ +package com.cool.store.entity.plan; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * 门店发货阶段主表 + */ +@Data +@Table(name = "zxjp_shop_delivery_plan") +public class ShopDeliveryPlanDO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * 门店ID + */ + @Column(name = "shop_id") + private Long shopId; + + /** + * 期望发货时间 + */ + @Column(name = "expected_delivery_time") + private Date expectedDeliveryTime; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + @Column(name = "create_user") + private String createUser; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Date createTime; + + /** + * 更新时间 + */ + @Column(name = "update_time") + private Date updateTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanItemDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanItemDO.java new file mode 100644 index 000000000..7cd5928fb --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/plan/ShopDeliveryPlanItemDO.java @@ -0,0 +1,54 @@ +package com.cool.store.entity.plan; + +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +/** + * 门店发货阶段明细映射表 + */ +@Data +@Table(name = "zxjp_shop_delivery_plan_item") +public class ShopDeliveryPlanItemDO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * 主表ID(shop_delivery_plan.id) + */ + @Column(name = "plan_id") + private Long planId; + + /** + * 明细类型:1=采购设备,2=火码设备 + */ + @Column(name = "item_type") + private Integer itemType; + + /** + * 发货/订货状态:0-未发货 1-发货 + */ + @Column(name = "delivery_status") + private Integer deliveryStatus; + + /** + * 发货/订货备注 + */ + @Column(name = "delivery_remark") + private String deliveryRemark; + + /** + * 创建时间 + */ + @Column(name = "create_time") + private Date createTime; + + /** + * 更新时间 + */ + @Column(name = "update_time") + private Date updateTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/plan/NotifyDeliveryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/plan/NotifyDeliveryRequest.java new file mode 100644 index 000000000..a254166ab --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/plan/NotifyDeliveryRequest.java @@ -0,0 +1,26 @@ +package com.cool.store.request.plan; + +import com.cool.store.common.InsertGroup; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * 通知发货请求 + */ +@Data +public class NotifyDeliveryRequest { + + @ApiModelProperty(value = "门店ID", required = true) + @NotNull(message = "门店ID不能为空") + private Long shopId; + + @ApiModelProperty(value = "期望发货日期", required = true) + private Date expectedDeliveryDate; + + @ApiModelProperty(value = "备注") + private String remark; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/plan/UpdateDeliveryItemRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/plan/UpdateDeliveryItemRequest.java new file mode 100644 index 000000000..97ca22837 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/plan/UpdateDeliveryItemRequest.java @@ -0,0 +1,28 @@ +package com.cool.store.request.plan; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 更新发货项请求 + */ +@Data +public class UpdateDeliveryItemRequest { + + @ApiModelProperty(value = "门店ID", required = true) + @NotNull(message = "门店ID不能为空") + private Long shopId; + + @ApiModelProperty(value = "发货项类型:1=采购设备,2=火码设备", required = true) + @NotNull(message = "发货项类型不能为空") + private Integer itemType; + + @ApiModelProperty(value = "发货状态:0-未发货 1-发货", required = true) + @NotNull(message = "发货状态不能为空") + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货备注") + private String deliveryRemark; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/desk/DeliveryPendingVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/desk/DeliveryPendingVO.java new file mode 100644 index 000000000..adb316340 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/desk/DeliveryPendingVO.java @@ -0,0 +1,51 @@ +package com.cool.store.vo.desk; + +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; + +/** + * @Auther zx_szh + * @Date 2026/4/2 10:41 + * @Version 1.0 + */ +@Data +public class DeliveryPendingVO { + + @ApiModelProperty("门店ID") + private Long shopId; + + @ApiModelProperty("类型") + private Integer itemType; + + @ApiModelProperty("门店名称") + private String shopName; + + @ApiModelProperty("加盟商名称") + private String partnerName; + + private Long lineId; + + @ApiModelProperty("地址") + private String address; + + private Integer deliveryStatus ; + + @ApiModelProperty("运营大区") + private Long regionId; + + @ApiModelProperty("运营大区名称") + private String regionName; + + @ApiModelProperty("招商大区") + private Long investRegionId; + + @ApiModelProperty("招商大区名称") + private String investRegionName; + + private Integer subStageStatus; + + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceConfigItemVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceConfigItemVO.java new file mode 100644 index 000000000..c8c28663f --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceConfigItemVO.java @@ -0,0 +1,66 @@ +package com.cool.store.vo.order; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.cool.store.utils.BeanUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * 订单设备配置项明细VO + */ +@Data +public class OrderDeviceConfigItemVO { + + @ApiModelProperty("费用类型") + private String expenseTypeCode; + + @ApiModelProperty("配置大类") + private String categoryCode; + + @ApiModelProperty("配置大类名称") + @ExcelProperty(value = "配置大类", index = 1) + private String categoryName; + + @ApiModelProperty("配置项") + private String itemCode; + + @ApiModelProperty("配置项名称") + @ExcelProperty(value = "配置项", index = 2) + private String itemName; + + @ApiModelProperty("配置选型名称") + @ExcelProperty(value = "配置项选型", index = 3) + private String optionName; + + @ApiModelProperty("原单价") + @ExcelProperty(value = "原单价", index = 3) + private BigDecimal originalOptionPrice; + + @ApiModelProperty("默认数量") + @ExcelProperty(value = "优惠数量", index = 3) + private BigDecimal defaultQuantity; + + @ApiModelProperty("优惠单价") + @ExcelProperty(value = "优惠单价", index = 3) + private BigDecimal optionPrice; + + @ApiModelProperty("下单数量") + @ExcelProperty(value = "下单数量", index = 3) + private BigDecimal quantity; + + @ApiModelProperty("价格合计") + @ExcelProperty(value = "价格合计", index = 3) + private BigDecimal amount; + + @ApiModelProperty("单位") + private String optionUnit; + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailExportVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailExportVO.java new file mode 100644 index 000000000..6177d2820 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailExportVO.java @@ -0,0 +1,73 @@ +package com.cool.store.vo.order; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.cool.store.utils.BeanUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * @Auther zx_szh + * @Date 2026/4/3 10:15 + * @Version 1.0 + */ +@Data +public class OrderDeviceDetailExportVO { + + @ApiModelProperty("费用名称") + @ExcelProperty(value = "费用类型", index = 0) + private String expenseTypeName; + + @ApiModelProperty("配置大类名称") + @ExcelProperty(value = "配置大类", index = 1) + private String categoryName; + + @ApiModelProperty("配置项名称") + @ExcelProperty(value = "配置项", index = 2) + private String itemName; + + @ApiModelProperty("配置选型名称") + @ExcelProperty(value = "配置项选型", index = 3) + private String optionName; + + @ApiModelProperty("原单价") + @ExcelProperty(value = "原单价", index = 4) + private BigDecimal originalOptionPrice; + + @ApiModelProperty("默认数量") + @ExcelProperty(value = "优惠数量", index = 5) + private BigDecimal defaultQuantity; + + @ApiModelProperty("优惠单价") + @ExcelProperty(value = "优惠单价", index = 6) + private BigDecimal optionPrice; + + @ApiModelProperty("下单数量") + @ExcelProperty(value = "下单数量", index = 7) + private BigDecimal quantity; + + @ApiModelProperty("价格合计") + @ExcelProperty(value = "价格合计", index = 8) + private BigDecimal amount; + + + public static List convert(List voList){ + if (CollectionUtils.isEmpty(voList)){ + return new ArrayList<>(); + } + List result = new ArrayList<>(); + voList.forEach(x->{ + x.getItems().forEach(y->{ + OrderDeviceDetailExportVO orderDeviceConfigItemVO = new OrderDeviceDetailExportVO(); + BeanUtil.copyProperties(y,orderDeviceConfigItemVO); + orderDeviceConfigItemVO.setExpenseTypeName(x.getExpenseTypeName()); + result.add(orderDeviceConfigItemVO); + }); + }); + return result; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailVO.java new file mode 100644 index 000000000..11987ef37 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/order/OrderDeviceDetailVO.java @@ -0,0 +1,28 @@ +package com.cool.store.vo.order; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.cool.store.converter.ConfigItemListConverter; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 订单设备明细VO + */ +@Data +public class OrderDeviceDetailVO { + + @ApiModelProperty("费用类型") + private String expenseTypeCode; + + @ApiModelProperty("费用名称") + @ExcelProperty(value = "费用类型", index = 0) + private String expenseTypeName; + + @ApiModelProperty("配置项列表") + @ExcelProperty(value = "配置项", index = 1, converter = ConfigItemListConverter.class) + private List items; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryDetailVO.java new file mode 100644 index 000000000..c408645fa --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryDetailVO.java @@ -0,0 +1,48 @@ +package com.cool.store.vo.plan; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 发货详细信息VO + */ +@Data +public class DeliveryDetailVO { + + @ApiModelProperty("主表ID") + private Long id; + + @ApiModelProperty("门店ID") + private Long shopId; + + private Long orderId; + + @ApiModelProperty("期望发货日期") + private Date expectedDeliveryTime; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("采购设备发货状态:0-未发货 1-发货") + private Integer purchaseDeviceDeliveryStatus; + + @ApiModelProperty("采购设备发货备注") + private String purchaseDeviceDeliveryRemark; + + @ApiModelProperty("火码设备发货状态:0-未发货 1-发货") + private Integer fireCodeDeviceDeliveryStatus; + + @ApiModelProperty("火码设备发货备注") + private String fireCodeDeviceDeliveryRemark; + + @ApiModelProperty("创建人") + private String createUser; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryInfoVO.java new file mode 100644 index 000000000..fb665e243 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/plan/DeliveryInfoVO.java @@ -0,0 +1,37 @@ +package com.cool.store.vo.plan; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 发货信息VO + */ +@Data +public class DeliveryInfoVO { + + @ApiModelProperty("主表ID") + private Long id; + + @ApiModelProperty("门店ID") + private Long shopId; + + @ApiModelProperty("期望发货日期") + private String expectedDeliveryDate; + + @ApiModelProperty("期望发货时间") + private Date expectedDeliveryTime; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("创建人") + private String createUser; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; +} \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java index 9974f8312..89ffc6df4 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/DeskService.java @@ -235,4 +235,7 @@ public interface DeskService { */ PageInfo assignPendingList(AssignPendingRequest request,LoginUserInfo user); + + PageInfo deliveryPendingList(AssignPendingRequest request,LoginUserInfo user); + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java index d67dc8543..8a4c04d29 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportRealizeService.java @@ -7,6 +7,7 @@ import com.cool.store.request.FranchiseReportRequest; import com.cool.store.request.order.PCStoreOrderQueryRequest; import com.cool.store.request.visit.VisitRecordQueryRequest; import com.cool.store.request.PointPageRequest; +import com.cool.store.request.visit.VisitRecordQueryRequest; import com.cool.store.response.BranchShopResponse; import com.cool.store.response.FranchiseReportResponse; import com.cool.store.response.ShopReportResponse; @@ -14,10 +15,10 @@ import com.cool.store.response.ShopReportResponse; import java.util.List; /** - * @Author: WangShuo - * @Date: 2024/10/29/下午1:57 - * @Version 1.0 - * @注释: + * @Author: WangShuo + * @Date: 2024/10/29/下午1:57 + * @Version 1.0 + * @注释: */ public interface ExportRealizeService { @@ -43,6 +44,12 @@ public interface ExportRealizeService { void exportOrderRecord(PCStoreOrderQueryRequest request, ImportTaskDO importTaskDO); void exportPoint(AllPointPageRequest request, ImportTaskDO importTaskDO); - void myExportPoint(PointPageRequest request, String userId, ImportTaskDO importTaskDO); + + /** + * 导出订单设备明细 + * @param orderId 订单ID + * @param importTaskDO 导出任务 + */ + void exportOrderDeviceDetail(Long orderId, ImportTaskDO importTaskDO); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java index 432bde573..8bc73b8c5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/ExportService.java @@ -77,4 +77,12 @@ public interface ExportService { * @return 记录总数 */ Long myPointExport(PointPageRequest request, LoginUserInfo user); + + /** + * 订单设备明细导出 + * @param orderId 订单ID + * @param user 当前用户 + * @return 记录总数 + */ + Long exportOrderDeviceDetail(Long orderId, LoginUserInfo user); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java index 9ff19936a..24ea20c61 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/DeskServiceImpl.java @@ -7,10 +7,7 @@ import com.cool.store.dto.InvestmentCountDTO; import com.cool.store.dto.PendingCountDTO; import com.cool.store.dto.openPreparation.PlanLineDTO; import com.cool.store.entity.*; -import com.cool.store.enums.ErrorCodeEnum; -import com.cool.store.enums.ShopAccountEnum; -import com.cool.store.enums.UserRoleEnum; -import com.cool.store.enums.WorkflowSubStageStatusEnum; +import com.cool.store.enums.*; import com.cool.store.enums.point.PayBusinessTypeEnum; import com.cool.store.enums.point.ShopSubStageEnum; import com.cool.store.enums.point.ShopSubStageStatusEnum; @@ -104,6 +101,8 @@ public class DeskServiceImpl implements DeskService { OperationsConsultantAssignDAO operationsConsultantAssignDAO; @Resource private RegionDao regionDao; + @Resource + ShopDeliveryPlanDAO shopDeliveryPlanDAO; @Override public PageInfo intendPendingList(Integer pageNum, Integer pageSize, String userId, String keyword) { @@ -848,6 +847,60 @@ public class DeskServiceImpl implements DeskService { return page; } + @Override + public PageInfo deliveryPendingList(AssignPendingRequest request,LoginUserInfo user) { + List userRoleIds = enterpriseUserRoleMapper.getUserRoleIds(user.getUserId()); + List subStageStatusList = new ArrayList<>(); + Boolean isAdmin = sysRoleService.checkIsAdmin(user.getUserId()); + Boolean flag = userRoleIds.contains(UserRoleEnum.DEVICE_SHIPMENT_HM.getCode()) && userRoleIds.contains(UserRoleEnum.DEVICE_SHIPMENT_CG.getCode()); + + if (isAdmin||flag){ + //返回所有数据 + List pendingList = shopDeliveryPlanDAO.getPendingList(request.getKeyword(), null); + return convert(pendingList); + } + Integer type = null; + //采购 + if (userRoleIds.contains(UserRoleEnum.DEVICE_SHIPMENT_CG.getCode())){ + type = DeliveryItemTypeEnum.PURCHASE_DEVICE.getCode(); + } + //火码 + if (userRoleIds.contains(UserRoleEnum.DEVICE_SHIPMENT_HM.getCode())){ + type = DeliveryItemTypeEnum.FIRE_CODE_DEVICE.getCode(); + } + if(type!=null){ + List pendingList = shopDeliveryPlanDAO.getPendingList(request.getKeyword(), type); + return convert(pendingList); + } + return new PageInfo<>(); + } + + private PageInfo convert(List pendingList){ + if (CollectionUtils.isEmpty(pendingList)){ + return new PageInfo<>(); + } + PageInfo result = new PageInfo<>(pendingList); + List lineIdList = pendingList.stream().map(DeliveryPendingVO::getLineId).collect(Collectors.toList()); + List lineInfoDOList = lineInfoDAO.getByLineIds(lineIdList); + Map lineMap = lineInfoDOList.stream().collect(Collectors.toMap(LineInfoDO::getId, LineInfoDO::getUsername)); + + List regionIds = pendingList.stream().filter(x->x.getRegionId()!=null).map(DeliveryPendingVO::getRegionId).collect(Collectors.toList()); + List investRegionIds = pendingList.stream().filter(x->x.getInvestRegionId()!=null).map(DeliveryPendingVO::getRegionId).collect(Collectors.toList()); + regionIds.addAll(investRegionIds); + Map regionNameMap = regionDao.getRegionNameMap(regionIds); + List shopIdList = pendingList.stream().map(DeliveryPendingVO::getShopId).collect(Collectors.toList()); + List stageByShopSubStage = shopStageInfoDAO.getStageByShopSubStage(shopIdList, ShopSubStageEnum.SHOP_STAGE_29.getShopSubStage()); + Map stageStatusMap = stageByShopSubStage.stream().collect(Collectors.toMap(ShopStageInfoDO::getShopId, ShopStageInfoDO::getShopSubStageStatus)); + result.getList().stream().forEach(x->{ + x.setPartnerName(lineMap.get(x.getLineId())); + x.setRegionName(regionNameMap.get(x.getRegionId())); + x.setInvestRegionName(regionNameMap.get(x.getInvestRegionId())); + x.setSubStageStatus(stageStatusMap.get(x.getShopId())); + }); + return result; + } + + /** * 通用查询 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java index afa31ccf7..4f30d538d 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportRealizeServiceImpl.java @@ -33,6 +33,8 @@ import com.cool.store.utils.easyExcel.EasyExcelUtil; import com.cool.store.utils.poi.DateUtils; import com.cool.store.utils.poi.StringUtils; +import com.cool.store.vo.order.OrderDeviceDetailExportVO; +import com.cool.store.vo.order.OrderDeviceDetailVO; import com.cool.store.vo.order.PCStoreOrderListVO; import com.cool.store.vo.visit.VisitRecordListVO; import com.cool.store.vo.point.PointExportVO; @@ -856,6 +858,29 @@ public class ExportRealizeServiceImpl implements ExportRealizeService { return o.toString(); } + @Override + @Async("generalThreadPool") + public void exportOrderDeviceDetail(Long orderId, ImportTaskDO importTaskDO) { + String url = ""; + try { + List list = miniStoreOrderService.queryOrderDeviceDetailByOrderId(orderId); + if (CollectionUtils.isEmpty(list)) { + throw new ServiceException("订单设备明细数据为空"); + } + List exportList = OrderDeviceDetailExportVO.convert(list); + url = easyExcelUtil.exportExcel(OrderDeviceDetailExportVO.class, exportList, null, + FileTypeEnum.ORDER_DEVICE_DETAIL_EXPORT.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date()), + FileTypeEnum.ORDER_DEVICE_DETAIL_EXPORT.getDesc() + DateUtils.parseDateToStr(SPECIAL_DATE_START_1, new Date())); + importTaskDO.setStatus(ImportStatusEnum.success.getCode()); + importTaskDO.setFileUrl(url); + } catch (Exception e) { + log.error("订单设备明细导出失败", e); + importTaskDO.setStatus(ImportStatusEnum.fail.getCode()); + } finally { + importTaskMapper.update(eid, importTaskDO); + } + } + private List JsonToDate(String json) { if (StringUtils.isBlank(json)) { return new ArrayList<>(); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java index b77ea70e6..d6eaf9378 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ExportServiceImpl.java @@ -334,5 +334,20 @@ public class ExportServiceImpl implements ExportService { return count; } + @Override + public Long exportOrderDeviceDetail(Long orderId, LoginUserInfo user) { + ImportTaskDO importTaskDO = new ImportTaskDO(); + importTaskDO.setStatus(ImportStatusEnum.Ongoing.getCode()); + importTaskDO.setFileName(FileTypeEnum.ORDER_DEVICE_DETAIL_EXPORT.getDesc() + DateUtils.parseDateToStr(DateUtils.SPECIAL_DATE_START_1, new Date())); + importTaskDO.setIsImport(Boolean.FALSE); + importTaskDO.setFileType(FileTypeEnum.ORDER_DEVICE_DETAIL_EXPORT.getFileType()); + importTaskDO.setCreateUserId(user.getUserId()); + importTaskDO.setCreateTime(new Date().getTime()); + importTaskDO.setCreateName(user.getName()); + importTaskMapper.insert(eid, importTaskDO); + exportRealizeService.exportOrderDeviceDetail(orderId, importTaskDO); + return 1L; + } + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java index faef4427c..34a3528ba 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreparationServiceImpl.java @@ -206,6 +206,7 @@ public class PreparationServiceImpl implements PreparationService { list.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_85_1); list.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_140); list.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_150); + list.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_290); shopStageInfoDAO.batchUpdateShopStageStatus(shopId, list); } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java index e4e77d6ce..61bd9ebdd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/ShopServiceImpl.java @@ -1037,6 +1037,8 @@ public class ShopServiceImpl implements ShopService { return getUsersByRoleAndRegion(ORDER_GROUP, shopInfo.getRegionId()); case SHOP_SUB_STAGE_STATUS_281: return getUsersByRole(AI_STORE_TYPE_APPROVE); + case SHOP_SUB_STAGE_STATUS_281_2: + return getUsersByRole(DEVICE_SHIPMENT_CG); default: return Collections.emptyList(); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java index e1386dca0..82de2cb69 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/order/MiniStoreOrderService.java @@ -8,6 +8,7 @@ import com.cool.store.vo.order.MiniStoreOrderDetailVO; import com.cool.store.vo.order.MiniStoreOrderListVO; import com.cool.store.vo.order.MiniStoreWishlistDetailVO; import com.cool.store.vo.order.MiniStoreWishlistListVO; +import com.cool.store.vo.order.OrderDeviceDetailVO; import com.cool.store.vo.order.PCStoreOrderListVO; import com.cool.store.vo.order.WalletPayVO; import com.github.pagehelper.PageInfo; @@ -29,9 +30,9 @@ public interface MiniStoreOrderService { Long updateOrder(MiniStoreOrderUpdateRequest request,PartnerUserInfoVO user); - Boolean withdraw(Long orderId); - - Boolean cancel(Long orderId); +// Boolean withdraw(Long orderId); +// +// Boolean cancel(Long orderId); PageInfo queryPageByLineId(MiniStoreOrderLineQueryRequest request); @@ -68,4 +69,13 @@ public interface MiniStoreOrderService { Boolean changeWishlist(ChangeWishlistRequest request); + List queryOrderDeviceDetailByShopId(Long shopId); + /** + * 查询订单设备明细 + * @param orderId 订单ID + * @return 订单设备明细列表 + */ + List queryOrderDeviceDetailByOrderId(Long orderId); + + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java index 15cd7c57e..d341e06d6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/order/impl/MiniStoreOrderServiceImpl.java @@ -63,12 +63,7 @@ import com.cool.store.vo.PartnerUserInfoVO; import com.cool.store.vo.config.ConfigItemCategoryVO; import com.cool.store.vo.config.ConfigItemVO; import com.cool.store.vo.dict.DictColumnVO; -import com.cool.store.vo.order.MiniStoreOrderDetailVO; -import com.cool.store.vo.order.MiniStoreOrderListVO; -import com.cool.store.vo.order.MiniStoreWishlistDetailVO; -import com.cool.store.vo.order.MiniStoreWishlistListVO; -import com.cool.store.vo.order.PCStoreOrderListVO; -import com.cool.store.vo.order.WalletPayVO; +import com.cool.store.vo.order.*; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -590,6 +585,26 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { throw new ServiceException(ErrorCodeEnum.CURRENT_ORDER_NOT_SUPPORT); } if (WAIT_CONFIRM.getCode().equals(currentStatus)){ + //修改订单状态 + order.setStatus(DEVICE_CONFIRM.getCode()); + storeOrderDAO.updateSelective(order); + + //修改阶段数据 + shopStageInfoDAO.updateShopStageInfo(order.getShopId(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_2); + + //处理审批记录 通过 + handleAudit(order.getShopId(),user,0,request.getRemark(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281); + + //下一级审批记录 + SysRoleRequest sysRoleRequest = new SysRoleRequest(); + sysRoleRequest.setRoleName(AI_STORE_TYPE_APPROVE.getDesc()); + List userListByRole = userAuthMappingService.findUserListByRole(sysRoleRequest, false); + operationLogService.addOperationLog(order.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_2, + user.getUserId(), userListByRole, + OperationTypeEnum.OPERATION_TYPE_1, "待采购设备确认", OperationStatusEnum.NOT_PROCESSED, 1); + + } + if (DEVICE_CONFIRM.getCode().equals(currentStatus)){ //修改订单状态 order.setStatus(INVEST_MANAGER_CONFIRM.getCode()); storeOrderDAO.updateSelective(order); @@ -598,7 +613,7 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { shopStageInfoDAO.updateShopStageInfo(order.getShopId(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_5); //处理审批记录 通过 - handleAudit(order.getShopId(),user,0,request.getRemark(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281); + handleAudit(order.getShopId(),user,0,request.getRemark(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_281_2); } if (INVEST_MANAGER_CONFIRM.getCode().equals(currentStatus)){ @@ -878,65 +893,65 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { return order.getId(); } - @Override - @Transactional - public Boolean withdraw(Long orderId) { - if (orderId == null) { - throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); - } - - // 1. 查询订单 - StoreOrderDO order = storeOrderDAO.getById(orderId); - if (order == null) { - throw new ServiceException(ErrorCodeEnum.STORE_ORDER_NOT_FOUND); - } - - // 2. 校验状态:仅待确认(5)和待支付(15)状态允许撤回 - Integer status = order.getStatus(); - if (!StoreOrderStatusEnum.canWithdraw(status)) { - throw new ServiceException(ErrorCodeEnum.STORE_ORDER_WITHDRAW_FORBIDDEN); - } - - // 3. 更新订单状态为草稿(0) - StoreOrderDO updateOrder = StoreOrderDO.builder() - .id(orderId) - .status(StoreOrderStatusEnum.DRAFT.getCode()) - .updateTime(new Date()) - .build(); - - shopStageInfoDAO.updateShopStageInfo(order.getShopId(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_280); - - return storeOrderDAO.updateSelective(updateOrder); - } - - @Override - @Transactional - public Boolean cancel(Long orderId) { - if (orderId == null) { - throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); - } - - // 1. 查询订单 - StoreOrderDO order = storeOrderDAO.getById(orderId); - if (order == null) { - throw new ServiceException(ErrorCodeEnum.STORE_ORDER_NOT_FOUND); - } - - // 2. 校验状态:仅草稿(0)状态允许作废 - if (!StoreOrderStatusEnum.DRAFT.getCode().equals(order.getStatus())) { - throw new ServiceException(ErrorCodeEnum.STORE_ORDER_CANCEL_FORBIDDEN); - } - - // 3. 更新订单状态为已结束(25) - StoreOrderDO updateOrder = StoreOrderDO.builder() - .id(orderId) - .status(StoreOrderStatusEnum.CLOSED.getCode()) // 已结束状态 - .updateTime(new Date()) - .build(); - - - return storeOrderDAO.updateSelective(updateOrder); - } +// @Override +// @Transactional +// public Boolean withdraw(Long orderId) { +// if (orderId == null) { +// throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); +// } +// +// // 1. 查询订单 +// StoreOrderDO order = storeOrderDAO.getById(orderId); +// if (order == null) { +// throw new ServiceException(ErrorCodeEnum.STORE_ORDER_NOT_FOUND); +// } +// +// // 2. 校验状态:仅待确认(5)和待支付(15)状态允许撤回 +// Integer status = order.getStatus(); +// if (!StoreOrderStatusEnum.canWithdraw(status)) { +// throw new ServiceException(ErrorCodeEnum.STORE_ORDER_WITHDRAW_FORBIDDEN); +// } +// +// // 3. 更新订单状态为草稿(0) +// StoreOrderDO updateOrder = StoreOrderDO.builder() +// .id(orderId) +// .status(StoreOrderStatusEnum.DRAFT.getCode()) +// .updateTime(new Date()) +// .build(); +// +// shopStageInfoDAO.updateShopStageInfo(order.getShopId(),ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_280); +// +// return storeOrderDAO.updateSelective(updateOrder); +// } +// +// @Override +// @Transactional +// public Boolean cancel(Long orderId) { +// if (orderId == null) { +// throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); +// } +// +// // 1. 查询订单 +// StoreOrderDO order = storeOrderDAO.getById(orderId); +// if (order == null) { +// throw new ServiceException(ErrorCodeEnum.STORE_ORDER_NOT_FOUND); +// } +// +// // 2. 校验状态:仅草稿(0)状态允许作废 +// if (!StoreOrderStatusEnum.DRAFT.getCode().equals(order.getStatus())) { +// throw new ServiceException(ErrorCodeEnum.STORE_ORDER_CANCEL_FORBIDDEN); +// } +// +// // 3. 更新订单状态为已结束(25) +// StoreOrderDO updateOrder = StoreOrderDO.builder() +// .id(orderId) +// .status(StoreOrderStatusEnum.CLOSED.getCode()) // 已结束状态 +// .updateTime(new Date()) +// .build(); +// +// +// return storeOrderDAO.updateSelective(updateOrder); +// } @Override @Transactional @@ -2001,4 +2016,99 @@ public class MiniStoreOrderServiceImpl implements MiniStoreOrderService { .filter(v -> StringUtils.isNotBlank(v.getColumnCode())) .collect(Collectors.toMap(DictColumnVO::getColumnCode, DictColumnVO::getColumnName, (a, b) -> a)); } + + @Override + public List queryOrderDeviceDetailByShopId(Long shopId) { + StoreOrderDO order = storeOrderDAO.getLatestOrderByShopId(shopId); + return queryOrderDeviceDetailByOrderId(order.getId()); + } + + + @Override + public List queryOrderDeviceDetailByOrderId(Long orderId) { + if (orderId == null) { + return Collections.emptyList(); + } + + // 查询订单快照列表 + List snapshotList = snapshotDAO.listByOrderId(orderId); + if (CollectionUtils.isEmpty(snapshotList)) { + return Collections.emptyList(); + } + + // 查询订单信息获取店型ID + StoreOrderDO orderDO = storeOrderDAO.getById(orderId); + if (orderDO == null) { + return Collections.emptyList(); + } + + // 获取费用类型字典映射(费用名称) + Map expenseTypeNameMap = buildDictNameMap(32L); + + // 获取配置大类名称映射 + Set categoryCodeSet = snapshotList.stream() + .map(StoreOrderOptionSnapshotDO::getCategoryCode) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toSet()); + Map categoryNameMap = configItemCategoryDAO.nameMap(new ArrayList<>(categoryCodeSet)); + + // 获取配置项名称映射 + Set itemCodeSet = snapshotList.stream() + .map(StoreOrderOptionSnapshotDO::getItemCode) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toSet()); + Map itemNameMap = configItemDAO.nameMap(new ArrayList<>(itemCodeSet)); + + // 查询店型选项绑定(获取默认数量) + Set optionIdSet = snapshotList.stream() + .map(StoreOrderOptionSnapshotDO::getOptionId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + List storeTypeOptionList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(optionIdSet)) { + storeTypeOptionList = storeTypeOptionDAO.selectByIds(new ArrayList<>(optionIdSet), orderDO.getStoreTypeId()); + } + Map defaultQuantityMap = storeTypeOptionList.stream() + .collect(Collectors.toMap(StoreTypeOptionDO::getOptionId, StoreTypeOptionDO::getDefaultQuantity, (a, b) -> a)); + + // 按费用类型分组 + Map> expenseTypeGroupMap = snapshotList.stream() + .filter(v -> StringUtils.isNotBlank(v.getExpenseTypeCode())) + .collect(Collectors.groupingBy(StoreOrderOptionSnapshotDO::getExpenseTypeCode)); + + List resultList = new ArrayList<>(); + + for (Map.Entry> expenseEntry : expenseTypeGroupMap.entrySet()) { + String expenseTypeCode = expenseEntry.getKey(); + OrderDeviceDetailVO expenseVO = new OrderDeviceDetailVO(); + expenseVO.setExpenseTypeCode(expenseTypeCode); + expenseVO.setExpenseTypeName(expenseTypeNameMap.getOrDefault(expenseTypeCode, expenseTypeCode)); + + // 转换为配置项明细 + List configItemList = expenseEntry.getValue().stream() + .map(snapshot -> { + OrderDeviceConfigItemVO configItem = new OrderDeviceConfigItemVO(); + configItem.setExpenseTypeCode(snapshot.getExpenseTypeCode()); + configItem.setCategoryCode(snapshot.getCategoryCode()); + configItem.setCategoryName(categoryNameMap.getOrDefault(snapshot.getCategoryCode(), snapshot.getCategoryCode())); + configItem.setItemCode(snapshot.getItemCode()); + configItem.setItemName(itemNameMap.getOrDefault(snapshot.getItemCode(), snapshot.getItemCode())); + configItem.setOptionName(snapshot.getOptionName()); + configItem.setOriginalOptionPrice(snapshot.getOriginalOptionPrice()); + configItem.setOptionPrice(snapshot.getOptionPrice()); + configItem.setQuantity(snapshot.getQuantity()); + configItem.setAmount(snapshot.getAmount()); + configItem.setOptionUnit(snapshot.getOptionUnit()); + // 从店型选项绑定获取默认数量 + configItem.setDefaultQuantity(defaultQuantityMap.get(snapshot.getOptionId())); + return configItem; + }) + .collect(Collectors.toList()); + + expenseVO.setItems(configItemList); + resultList.add(expenseVO); + } + + return resultList; + } } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/plan/ShopDeliveryPlanService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/plan/ShopDeliveryPlanService.java new file mode 100644 index 000000000..c2442b523 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/plan/ShopDeliveryPlanService.java @@ -0,0 +1,42 @@ +package com.cool.store.service.plan; + +import com.cool.store.enums.DeliveryPlanStageEnum; +import com.cool.store.enums.DeliveryStatusEnum; +import com.cool.store.request.plan.NotifyDeliveryRequest; +import com.cool.store.request.plan.UpdateDeliveryItemRequest; +import com.cool.store.vo.plan.DeliveryDetailVO; +import com.cool.store.vo.plan.DeliveryInfoVO; + +/** + * 门店发货阶段服务接口 + */ +public interface ShopDeliveryPlanService { + + /** + * 通知发货 + * @param request 通知发货请求 + * @return 发货阶段枚举:待发货(1) + */ + Boolean notifyDelivery(NotifyDeliveryRequest request); + + /** + * 查询发货信息 + * @param shopId 门店ID + * @return 发货信息VO + */ + DeliveryInfoVO queryDeliveryInfo(Long shopId); + + /** + * 更新发货项信息 + * @param request 更新发货项请求 + * @return 发货阶段枚举:待发货(1)、部分发货(2)、已完成(3) + */ + Boolean updateDeliveryItem(UpdateDeliveryItemRequest request); + + /** + * 根据门店查询发货详细信息 + * @param shopId 门店ID + * @return 发货详细信息VO + */ + DeliveryDetailVO queryDeliveryDetail(Long shopId); +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/plan/impl/ShopDeliveryPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/plan/impl/ShopDeliveryPlanServiceImpl.java new file mode 100644 index 000000000..fd1a249a8 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/plan/impl/ShopDeliveryPlanServiceImpl.java @@ -0,0 +1,227 @@ +package com.cool.store.service.plan.impl; + +import cn.hutool.core.date.DateUtil; +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.dao.*; +import com.cool.store.dao.order.StoreOrderDAO; +import com.cool.store.entity.EnterpriseUserDO; +import com.cool.store.entity.LineInfoDO; +import com.cool.store.entity.ShopInfoDO; +import com.cool.store.entity.SysRoleDO; +import com.cool.store.entity.order.StoreOrderDO; +import com.cool.store.entity.plan.ShopDeliveryPlanDO; +import com.cool.store.entity.plan.ShopDeliveryPlanItemDO; +import com.cool.store.enums.*; +import com.cool.store.enums.point.ShopSubStageStatusEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.EnterpriseUserRoleMapper; +import com.cool.store.request.plan.NotifyDeliveryRequest; +import com.cool.store.request.plan.UpdateDeliveryItemRequest; +import com.cool.store.service.UserAuthMappingService; +import com.cool.store.service.impl.CommonService; +import com.cool.store.service.plan.ShopDeliveryPlanService; +import com.cool.store.utils.BeanUtil; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.vo.plan.DeliveryDetailVO; +import com.cool.store.vo.plan.DeliveryInfoVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 门店发货阶段服务实现类 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class ShopDeliveryPlanServiceImpl implements ShopDeliveryPlanService { + + private final ShopDeliveryPlanDAO shopDeliveryPlanDAO; + private final ShopDeliveryPlanItemDAO shopDeliveryPlanItemDAO; + private final ShopStageInfoDAO shopStageInfoDAO; + private final StoreOrderDAO storeOrderDAO; + private final CommonService commonService; + private final EnterpriseUserDAO enterpriseUserDAO; + private final EnterpriseUserRoleMapper enterpriseUserRoleMapper; + private final ShopInfoDAO shopInfoDAO; + private final LineInfoDAO lineInfoDAO; + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean notifyDelivery(NotifyDeliveryRequest request) { + // 校验门店是否已存在发货计划 + ShopDeliveryPlanDO existingPlan = shopDeliveryPlanDAO.getByShopId(request.getShopId()); + if (existingPlan != null) { + throw new ServiceException("该门店已存在发货计划,不能重复通知发货"); + } + + // 创建发货计划主表 + ShopDeliveryPlanDO planDO = new ShopDeliveryPlanDO(); + planDO.setShopId(request.getShopId()); + planDO.setExpectedDeliveryTime(request.getExpectedDeliveryDate()); + planDO.setRemark(request.getRemark()); + planDO.setCreateUser(CurrentUserHolder.getUser().getName()); + + int result = shopDeliveryPlanDAO.insert(planDO); + if (result <= 0) { + throw new ServiceException("创建发货计划失败"); + } + + // 创建默认的发货项明细(采购设备和火码设备,初始状态为未发货) + List list = new ArrayList<>(); + ShopDeliveryPlanItemDO purchaseItem = new ShopDeliveryPlanItemDO(); + purchaseItem.setPlanId(planDO.getId()); + purchaseItem.setItemType(DeliveryItemTypeEnum.PURCHASE_DEVICE.getCode()); + purchaseItem.setDeliveryStatus(DeliveryStatusEnum.NOT_DELIVERED.getCode()); + list.add(purchaseItem); + + ShopDeliveryPlanItemDO fireCodeItem = new ShopDeliveryPlanItemDO(); + fireCodeItem.setPlanId(planDO.getId()); + fireCodeItem.setItemType(DeliveryItemTypeEnum.FIRE_CODE_DEVICE.getCode()); + fireCodeItem.setDeliveryStatus(DeliveryStatusEnum.NOT_DELIVERED.getCode()); + list.add(fireCodeItem); + + shopDeliveryPlanItemDAO.batchInsert(list); + + log.info("通知发货成功,门店ID:{},发货计划ID:{}", request.getShopId(), planDO.getId()); + //阶段变为待发货 + shopStageInfoDAO.updateShopStageInfo(planDO.getShopId(), ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_291); + //发送短信通知 + List userIds = enterpriseUserRoleMapper.getUserIdsByRoleIdList(Arrays.asList(UserRoleEnum.DEVICE_SHIPMENT_HM.getCode(), UserRoleEnum.DEVICE_SHIPMENT_CG.getCode())); + List userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(userIds); + userInfoByUserIds = userInfoByUserIds.stream().filter(x->StringUtils.isNotBlank(x.getMobile())).collect(Collectors.toList()); + Map templateParam = new HashMap<>(); + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(request.getShopId()); + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(shopInfo.getLineId()); + templateParam.put("partnerName",lineInfo.getUsername()); + templateParam.put("shopName",shopInfo.getShopName()); + templateParam.put("shippingDate", DateUtil.format(request.getExpectedDeliveryDate(), CoolDateUtils.DATE_FORMAT_DAY)); + userInfoByUserIds.stream().forEach(x->{ + commonService.sendSms(x.getMobile(), SMSMsgEnum.DEVICE_NOTICE, templateParam); + }); + return Boolean.TRUE; + } + + @Override + public DeliveryInfoVO queryDeliveryInfo(Long shopId) { + if (shopId == null) { + return null; + } + + ShopDeliveryPlanDO planDO = shopDeliveryPlanDAO.getByShopId(shopId); + if (planDO == null) { + return null; + } + + return BeanUtil.toBean(planDO, DeliveryInfoVO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateDeliveryItem(UpdateDeliveryItemRequest request) { + // 查询发货计划 + ShopDeliveryPlanDO planDO = shopDeliveryPlanDAO.getByShopId(request.getShopId()); + if (planDO == null) { + throw new ServiceException("该门店不存在发货计划"); + } + + // 查询对应的发货项 + ShopDeliveryPlanItemDO itemDO = shopDeliveryPlanItemDAO.getByPlanIdAndItemType(planDO.getId(), request.getItemType()); + if (itemDO == null) { + throw new ServiceException("发货项不存在"); + } + + // 更新发货项信息 + itemDO.setDeliveryStatus(request.getDeliveryStatus()); + if (StringUtils.isNotBlank(request.getDeliveryRemark())) { + itemDO.setDeliveryRemark(request.getDeliveryRemark()); + } + int result = shopDeliveryPlanItemDAO.update(itemDO); + if (result <= 0) { + throw new ServiceException("更新发货项失败"); + } + + ShopSubStageStatusEnum shopSubStageStatusEnum = calculateDeliveryStage(planDO.getId()); + shopStageInfoDAO.updateShopStageInfo(planDO.getShopId(),shopSubStageStatusEnum ); + // 重新计算发货阶段 + return Boolean.TRUE; + } + + @Override + public DeliveryDetailVO queryDeliveryDetail(Long shopId) { + if (shopId == null) { + return null; + } + DeliveryDetailVO vo = new DeliveryDetailVO(); + + StoreOrderDO latestOrderByShopId = storeOrderDAO.getLatestOrderByShopId(shopId); + if (latestOrderByShopId!=null){ + vo.setOrderId(latestOrderByShopId.getId()); + } + + ShopDeliveryPlanDO planDO = shopDeliveryPlanDAO.getByShopId(shopId); + if (planDO == null) { + return vo; + } + + BeanUtils.copyProperties(planDO,vo,"orderId"); + + + // 查询发货项明细 + List items = shopDeliveryPlanItemDAO.listByPlanId(planDO.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (ShopDeliveryPlanItemDO item : items) { + if (DeliveryItemTypeEnum.PURCHASE_DEVICE.getCode().equals(item.getItemType())) { + vo.setPurchaseDeviceDeliveryStatus(item.getDeliveryStatus()); + vo.setPurchaseDeviceDeliveryRemark(item.getDeliveryRemark()); + } else if (DeliveryItemTypeEnum.FIRE_CODE_DEVICE.getCode().equals(item.getItemType())) { + vo.setFireCodeDeviceDeliveryStatus(item.getDeliveryStatus()); + vo.setFireCodeDeviceDeliveryRemark(item.getDeliveryRemark()); + } + } + } + + // 计算发货阶段 + return vo; + } + + /** + * 计算发货阶段 + * @param planId 发货计划ID + * @return 发货阶段枚举 + */ + private ShopSubStageStatusEnum calculateDeliveryStage(Long planId) { + List items = shopDeliveryPlanItemDAO.listByPlanId(planId); + if (CollectionUtils.isEmpty(items)) { + return ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_291; + } + + int deliveredCount = 0; + int totalCount = items.size(); + + for (ShopDeliveryPlanItemDO item : items) { + if (DeliveryStatusEnum.DELIVERED.getCode().equals(item.getDeliveryStatus())) { + deliveredCount++; + } + } + + + if (deliveredCount == 0) { + return ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_291; + } else if (deliveredCount == totalCount) { + return ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_294; + } else { + return ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_292; + } + } +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/store/impl/PreAllocationRecordServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/store/impl/PreAllocationRecordServiceImpl.java index be4a93cb8..a1145d9b8 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/store/impl/PreAllocationRecordServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/store/impl/PreAllocationRecordServiceImpl.java @@ -141,7 +141,7 @@ public class PreAllocationRecordServiceImpl implements PreAllocationRecordServic continue; } if (BigDecimal.ZERO.compareTo(item.getPayAmount())>=0){ - throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE); + throw new ServiceException(ErrorCodeEnum.AMOUNT_GEN_ZERO); } Long id = item.getId(); if (id == null) { @@ -276,6 +276,7 @@ public class PreAllocationRecordServiceImpl implements PreAllocationRecordServic throw new ServiceException(ErrorCodeEnum.NOT_ENOUGH_BALANCE); } //首次缴款 校验总金额 + log.info("batchTrans total:{},orderAmount",total,storeOrder.getTotalAmount()); if (req.getSubStage()==ShopSubStageEnum.SHOP_STAGE_28.getShopSubStage()){ if (total.compareTo(storeOrder.getTotalAmount())<0) { throw new ServiceException(ErrorCodeEnum.NOT_ENOUGH_BALANCE); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java index 59098c105..8b4e230ac 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/DeskController.java @@ -268,4 +268,11 @@ public class DeskController { LoginUserInfo userInfo = CurrentUserHolder.getUser(); return ResponseResult.success(deskService.assignPendingList(request, userInfo)); } + + @ApiOperation("待处理-设备通知") + @PostMapping("/deliveryPendingList") + public ResponseResult> deliveryPendingList(@RequestBody AssignPendingRequest request) { + LoginUserInfo userInfo = CurrentUserHolder.getUser(); + return ResponseResult.success(deskService.deliveryPendingList(request, userInfo)); + } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ShopDeliveryPlanController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ShopDeliveryPlanController.java new file mode 100644 index 000000000..c19f3acc1 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/ShopDeliveryPlanController.java @@ -0,0 +1,52 @@ +package com.cool.store.controller.webb; + +import com.cool.store.enums.DeliveryPlanStageEnum; +import com.cool.store.enums.DeliveryStatusEnum; +import com.cool.store.request.plan.NotifyDeliveryRequest; +import com.cool.store.request.plan.UpdateDeliveryItemRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.plan.ShopDeliveryPlanService; +import com.cool.store.vo.plan.DeliveryDetailVO; +import com.cool.store.vo.plan.DeliveryInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * 门店发货阶段控制器 + */ +@RequestMapping("/pc/shopDeliveryPlan") +@RestController +@Api("门店发货阶段") +public class ShopDeliveryPlanController { + + @Resource + private ShopDeliveryPlanService shopDeliveryPlanService; + + @PostMapping("/notifyDelivery") + @ApiOperation("通知发货") + public ResponseResult notifyDelivery(@RequestBody @Validated NotifyDeliveryRequest request) { + return ResponseResult.success(shopDeliveryPlanService.notifyDelivery(request)); + } + + @GetMapping("/queryDeliveryInfo") + @ApiOperation("查询发货信息") + public ResponseResult queryDeliveryInfo(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(shopDeliveryPlanService.queryDeliveryInfo(shopId)); + } + + @PostMapping("/updateDeliveryItem") + @ApiOperation("更新发货项信息") + public ResponseResult updateDeliveryItem(@RequestBody @Validated UpdateDeliveryItemRequest request) { + return ResponseResult.success(shopDeliveryPlanService.updateDeliveryItem(request)); + } + + @GetMapping("/queryDeliveryDetail") + @ApiOperation("根据门店查询发货详细信息") + public ResponseResult queryDeliveryDetail(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(shopDeliveryPlanService.queryDeliveryDetail(shopId)); + } +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java index 93355cb2e..263c4d0a2 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/StoreOrderController.java @@ -4,6 +4,7 @@ import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.PartnerUserHolder; import com.cool.store.request.order.*; import com.cool.store.response.ResponseResult; +import com.cool.store.service.ExportService; import com.cool.store.service.order.MiniStoreOrderService; import com.cool.store.vo.order.*; @@ -30,6 +31,7 @@ import java.util.List; public class StoreOrderController { private final MiniStoreOrderService miniStoreOrderService; + private final ExportService exportService; @ApiOperation("订单 立规确认 加盟商确认") @PostMapping("/passOrder") @@ -117,4 +119,16 @@ public class StoreOrderController { return ResponseResult.success(miniStoreOrderService.getCurrentShopBindWishlist(shopId)); } + @ApiOperation("查询订单设备明细") + @GetMapping("/queryOrderDeviceDetail") + public ResponseResult> queryOrderDeviceDetail(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(miniStoreOrderService.queryOrderDeviceDetailByShopId(shopId)); + } + + @ApiOperation("导出订单设备明细") + @PostMapping("/exportOrderDeviceDetail") + public ResponseResult exportOrderDeviceDetail(@RequestParam("orderId") Long orderId) { + return ResponseResult.success(exportService.exportOrderDeviceDetail(orderId, CurrentUserHolder.getUser())); + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopDeliveryPlanController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopDeliveryPlanController.java new file mode 100644 index 000000000..314320f1d --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniShopDeliveryPlanController.java @@ -0,0 +1,41 @@ +package com.cool.store.controller.webc; + +import com.cool.store.request.plan.NotifyDeliveryRequest; +import com.cool.store.request.plan.UpdateDeliveryItemRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.plan.ShopDeliveryPlanService; +import com.cool.store.vo.plan.DeliveryDetailVO; +import com.cool.store.vo.plan.DeliveryInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Auther zx_szh + * @Date 2026/4/2 10:38 + * @Version 1.0 + */ +@RequestMapping("/mini/shopDeliveryPlan") +@RestController +@Api("门店发货阶段-小程序") +public class MiniShopDeliveryPlanController { + + @Resource + private ShopDeliveryPlanService shopDeliveryPlanService; + + + @GetMapping("/queryDeliveryInfo") + @ApiOperation("查询发货信息") + public ResponseResult queryDeliveryInfo(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(shopDeliveryPlanService.queryDeliveryInfo(shopId)); + } + + @GetMapping("/queryDeliveryDetail") + @ApiOperation("根据门店查询发货详细信息") + public ResponseResult queryDeliveryDetail(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(shopDeliveryPlanService.queryDeliveryDetail(shopId)); + } +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java index d56d5b86a..b2740b5fa 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniStoreOrderController.java @@ -4,12 +4,15 @@ import com.cool.store.context.CurrentUserHolder; import com.cool.store.context.PartnerUserHolder; import com.cool.store.request.order.*; import com.cool.store.response.ResponseResult; +import com.cool.store.service.ExportService; import com.cool.store.service.order.MiniStoreOrderService; import com.cool.store.vo.PartnerUserInfoVO; import com.cool.store.vo.order.MiniStoreOrderDetailVO; import com.cool.store.vo.order.MiniStoreOrderListVO; import com.cool.store.vo.order.MiniStoreWishlistDetailVO; import com.cool.store.vo.order.MiniStoreWishlistListVO; +import com.cool.store.vo.order.OrderDeviceDetailVO; +import com.cool.store.vo.order.OrderDeviceConfigItemVO; import com.github.pagehelper.PageInfo; @@ -28,6 +31,7 @@ import javax.validation.Valid; public class MiniStoreOrderController { private final MiniStoreOrderService miniStoreOrderService; + private final ExportService exportService; @ApiOperation("创建订单") @PostMapping("/create") @@ -59,17 +63,17 @@ public class MiniStoreOrderController { return ResponseResult.success(miniStoreOrderService.updateOrder(request,PartnerUserHolder.getUser())); } - @ApiOperation("撤回订单到草稿") - @PostMapping("/withdraw") - public ResponseResult withdraw(@RequestBody MiniStoreOrderRequest request) { - return ResponseResult.success(miniStoreOrderService.withdraw(request.getOrderId())); - } - - @ApiOperation("作废订单") - @PostMapping("/cancel") - public ResponseResult cancel(@RequestBody MiniStoreOrderRequest request) { - return ResponseResult.success(miniStoreOrderService.cancel(request.getOrderId())); - } +// @ApiOperation("撤回订单到草稿") +// @PostMapping("/withdraw") +// public ResponseResult withdraw(@RequestBody MiniStoreOrderRequest request) { +// return ResponseResult.success(miniStoreOrderService.withdraw(request.getOrderId())); +// } +// +// @ApiOperation("作废订单") +// @PostMapping("/cancel") +// public ResponseResult cancel(@RequestBody MiniStoreOrderRequest request) { +// return ResponseResult.success(miniStoreOrderService.cancel(request.getOrderId())); +// } @ApiOperation("门店预定列表") @PostMapping("/queryPageByLineId") @@ -131,4 +135,10 @@ public class MiniStoreOrderController { return ResponseResult.success(miniStoreOrderService.passOrder(request, null)); } + @ApiOperation("查询订单设备明细") + @GetMapping("/queryOrderDeviceDetail") + public ResponseResult> queryOrderDeviceDetail(@RequestParam("shopId") Long shopId) { + return ResponseResult.success(miniStoreOrderService.queryOrderDeviceDetailByShopId(shopId)); + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java index 48a469b34..77527f29f 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java @@ -1,5 +1,6 @@ package com.cool.store.controller.webc; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.*; @@ -37,6 +38,7 @@ import com.cool.store.service.impl.CommonService; import com.cool.store.service.wallet.WalletService; import com.cool.store.service.close.CloseStoreAccountService; import com.cool.store.service.close.CloseStoreRefundService; +import com.cool.store.utils.CoolDateUtils; import com.cool.store.utils.poi.ExcelUtil; import com.cool.store.utils.poi.StringUtils; import com.cool.store.vo.RegionPathNameVO; @@ -108,11 +110,10 @@ public class TestController { private WalletPayInfoDAO walletPayInfoDAO; @Resource private ShopAllocationInfoDAO shopAllocationInfoDAO; - @Resource - UserAuthMappingService userAuthMappingService; - @Resource CommonService commonService; + @Resource + UserAuthMappingService userAuthMappingService; @Autowired private ShopInfoDAO shopInfoDAO; @Resource @@ -478,13 +479,26 @@ public class TestController { return ResponseResult.success(storeService.handleStoreLogLai(flag,storeCode)); } + + @Resource + LineInfoDAO lineInfoDAO; + @GetMapping("/testSendMsg") public ResponseResult testSendMsg(@RequestParam(value = "poneNumber", required = false) String poneNumber , + @RequestParam(value = "shopId", required = false) Long shopId , @RequestParam(value = "templateCode", required = false) SMSMsgEnum templateCode) { - commonService.sendSms(poneNumber, templateCode); + Map templateParam = new HashMap<>(); + ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId); + LineInfoDO lineInfo = lineInfoDAO.getLineInfo(shopInfo.getLineId()); + Date date = new Date(); + templateParam.put("partnerName",lineInfo.getUsername()); + templateParam.put("shopName",shopInfo.getShopName()); + templateParam.put("shippingDate", DateUtil.format(date, CoolDateUtils.DATE_FORMAT_DAY)); + commonService.sendSms(poneNumber, templateCode,templateParam); return ResponseResult.success(); } + @GetMapping("/pushReceiptToXGJ") public ResponseResult pushReceiptToXGJ(@RequestParam(value = "shopId", required = false) Long shopId, @RequestParam(value = "payId", required = false) Long payId) { diff --git a/coolstore-partner-web/src/main/resources/application-test.properties b/coolstore-partner-web/src/main/resources/application-test.properties index 1f275db4a..c03c114eb 100644 --- a/coolstore-partner-web/src/main/resources/application-test.properties +++ b/coolstore-partner-web/src/main/resources/application-test.properties @@ -55,7 +55,7 @@ oss.host=https://oss-cool.coolstore.cn/ #cdn地址 -cdn.url=https://oss-cool.coolstore.cn +cdn.url=https://oss-cool.coolstore.cn/ #TRTC trtc.sdkAppId=1600026212