diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditOperationTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditOperationTypeEnum.java new file mode 100644 index 000000000..b4d9fa829 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditOperationTypeEnum.java @@ -0,0 +1,50 @@ +package com.cool.store.enums; + +/** + * @author su'zh + * 审批操作类型枚举 + */ +public enum AuditOperationTypeEnum { + /** + * 申请操作 + */ + APPLY(1, "申请"), + + /** + * 审批通过 + */ + APPROVE(2, "审批成功"), + + /** + * 审批拒绝 + */ + REJECT(3, "审批失败"); + + private final Integer code; + private final String desc; + + AuditOperationTypeEnum(Integer code, String desc) { + this.code = code; + this.desc = desc; + } + + public Integer getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + /** + * 根据code获取枚举 + */ + public static AuditOperationTypeEnum getByCode(Integer code) { + for (AuditOperationTypeEnum value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditStatusEnum.java index 430b6db24..39a741df5 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AuditStatusEnum.java @@ -10,7 +10,9 @@ public enum AuditStatusEnum { TODO(0, "待处理"), PASS(1, "通过"), - REJECT(2, "拒绝"); + REJECT(2, "拒绝"), + cancel(3, "取消资格"),; + private Integer code; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ContentSubjectEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ContentSubjectEnum.java index a5a7a6c7d..a14d58a66 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ContentSubjectEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ContentSubjectEnum.java @@ -6,7 +6,8 @@ package com.cool.store.enums; public enum ContentSubjectEnum { HY_CULTURE("沪姨文化"), PARTNER_SAYS("加盟商说"), - BRAND_NEWS("品牌动态") + BRAND_NEWS("品牌动态"), + MINI_PRE_FRIED("小程序预炸产品") ; private String subjectName; 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 7f25c923e..3ba9c9c69 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 @@ -275,6 +275,13 @@ public enum ErrorCodeEnum { XGJ_COLLECTION_STATUS_COMPLETE(1511027,"新管家收费状态已完成,请确认!",null), PAY_AMOUNT_ERROR(1511028,"缴费金额不能大于未缴金额",null), + + PRE_FRY_PRODUCT_NOT_EXIST(1511029,"预炸品不存在",null), + PRE_FRY_RECORD_EXIST(1511030,"当前门店已存在同类型预炸资质申请记录",null), + PRE_FRY_APPLY_NOT_EXIST(1511030,"预炸资质申请信息不存在",null), + CURRENT_STAGE_NOT_OPERATION(1511030,"当前有更优选择,请确认!",null), + PRODUCTS_STATUS(1511031,"包含下架的产品,请重新选择后提交!",null), + PRODUCTS_CODE_EXIST(1511032,"产品编码已存在!",null), ; diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/PreFryApplyTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/PreFryApplyTypeEnum.java new file mode 100644 index 000000000..dacbd5cac --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/PreFryApplyTypeEnum.java @@ -0,0 +1,50 @@ +package com.cool.store.enums; + +/** + * 预炸产品申请类型枚举 + * @Author suzhuhong + * @Date 2025/6/23 16:01 + * @Version 1.0 + */ +public enum PreFryApplyTypeEnum { + HAS_REFRIGERATED_DISPLAY(1, "有冷藏展示柜"), + HAS_NORMAL_DISPLAY(2, "有常温展示柜"), + NO_DISPLAY(3, "无展示柜"); + + private final int code; + private final String description; + + PreFryApplyTypeEnum(int code, String description) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + /** + * 根据code获取枚举 + */ + public static PreFryApplyTypeEnum getByCode(int code) { + for (PreFryApplyTypeEnum type : values()) { + if (type.code == code) { + return type; + } + } + return null; + } + + /** + * 根据code获取描述 + */ + public static String getDescriptionByCode(int code) { + PreFryApplyTypeEnum type = getByCode(code); + return type != null ? type.description : ""; + } +} + diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/PreFryStageEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/PreFryStageEnum.java new file mode 100644 index 000000000..ff51e3268 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/PreFryStageEnum.java @@ -0,0 +1,50 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2025/6/23 15:49 + * @Version 1.0 + */ +public enum PreFryStageEnum { + PRE_FRY_COMPLETED(1, "预炸完成"), + STORED_IN_DISPLAY_CABINET(2, "存入展示柜"), + STORED_IN_FRIDGE(3, "放入冰箱"), + TAKEN_OUT_NEXT_DAY(4, "次日拿出"), + DISCARDED(5, "报废"); + + private final int code; + private final String description; + + PreFryStageEnum(int code, String description) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + /** + * 根据code获取枚举 + */ + public static PreFryStageEnum getByCode(int code) { + for (PreFryStageEnum stage : values()) { + if (stage.code == code) { + return stage; + } + } + return null; + } + + /** + * 根据code获取描述 + */ + public static String getDescriptionByCode(int code) { + PreFryStageEnum stage = getByCode(code); + return stage != null ? stage.description : ""; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ViolationEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ViolationEnum.java new file mode 100644 index 000000000..dd0045da4 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ViolationEnum.java @@ -0,0 +1,49 @@ +package com.cool.store.enums; + +/** + * @Author suzhuhong + * @Date 2025/6/24 10:46 + * @Version 1.0 + */ +public enum ViolationEnum { + + COOLING_TIME_EXCEEDED(1, "冷却时间小于15分钟或大于25分钟未放入冷藏柜"), + STORAGE_TIME_EXCEEDED(2, "冰箱内取出时间距离预炸完成时间超过24小时"),; + + + private final int code; + private final String description; + + ViolationEnum(int code, String description) { + this.code = code; + this.description = description; + } + + public int getCode() { + return code; + } + + public String getDescription() { + return description; + } + + /** + * 根据code获取枚举 + */ + public static ViolationEnum getByCode(int code) { + for (ViolationEnum violation : values()) { + if (violation.code == code) { + return violation; + } + } + return null; + } + + /** + * 根据code获取描述 + */ + public static String getDescriptionByCode(int code) { + ViolationEnum violation = getByCode(code); + return violation != null ? violation.description : ""; + } +} diff --git a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java index 9d11c6883..6180a4163 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/utils/CoolDateUtils.java @@ -168,4 +168,12 @@ public class CoolDateUtils { return lastMonthSameDay.format(getDateFormatter(DATE_FORMAT_DAY)); } + + + public static long getMinutesBetween(Date startDate, Date endDate) { + Instant start = startDate.toInstant(); + Instant end = endDate.toInstant(); + Duration duration = Duration.between(start, end); + return duration.toMinutes(); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFriedProductsDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFriedProductsDAO.java new file mode 100644 index 000000000..3933d77e3 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFriedProductsDAO.java @@ -0,0 +1,86 @@ +package com.cool.store.dao; + +import com.cool.store.entity.PreFriedProductsDO; +import com.cool.store.mapper.PreFriedProductsMapper; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:11 + * @Version 1.0 + */ +@Repository +public class PreFriedProductsDAO { + + + @Resource + PreFriedProductsMapper preFriedProductsMapper; + + public int createProduct(PreFriedProductsDO preFriedProductsDO){ + return preFriedProductsMapper.insertSelective(preFriedProductsDO); + } + + public int updateProduct(PreFriedProductsDO product) { + return preFriedProductsMapper.forceUpdate(product); + } + + public List selectByProductIds( List productIds) { + if (CollectionUtils.isEmpty(productIds)){ + return Lists.newArrayList(); + } + return preFriedProductsMapper.selectByProductIds(productIds); + } + + + public PreFriedProductsDO queryById(Long id){ + return preFriedProductsMapper.selectByPrimaryKey(id); + } + + public PreFriedProductsDO queryByProductCode(String productCode){ + if (StringUtils.isEmpty(productCode)){ + return null; + } + return preFriedProductsMapper.queryByProductCode(productCode); + } + + public List selectByCondition(String productCode, String productName, Integer status){ + return preFriedProductsMapper.selectByCondition(productCode,productName,status); + } + + + /** + * 批量删除(带业务校验) + */ + public int batchDeleteProducts(List ids, String userId) { + if (CollectionUtils.isEmpty(ids)) { + throw new IllegalArgumentException("ID列表不能为空"); + } + return preFriedProductsMapper.batchDelete(ids,userId); + } + + /** + * 批量上下架 + */ + public int batchUpdateProductStatus(List ids, Integer status, String userId) { + if (CollectionUtils.isEmpty(ids)) { + throw new IllegalArgumentException("ID列表不能为空"); + } + return preFriedProductsMapper.batchUpdateStatus(ids, status,userId); + } + + public int forceUpdate(PreFriedProductsDO preFriedProductsDO, String userId) { + if (preFriedProductsDO!=null&&preFriedProductsDO.getId()!=null) { + return 0; + } + return preFriedProductsMapper.forceUpdate(preFriedProductsDO); + } + + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryApprovalRecordsDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryApprovalRecordsDAO.java new file mode 100644 index 000000000..5311a6fea --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryApprovalRecordsDAO.java @@ -0,0 +1,46 @@ +package com.cool.store.dao; + +import com.cool.store.entity.PreFryApprovalRecordsDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.PreFryApprovalRecordsMapper; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:12 + * @Version 1.0 + */ +@Repository +public class PreFryApprovalRecordsDAO { + + @Resource + PreFryApprovalRecordsMapper preFryApprovalRecordsMapper; + + + public int createApprovalRecord(PreFryApprovalRecordsDO preFryApprovalRecordsDO) { + return preFryApprovalRecordsMapper.insertSelective(preFryApprovalRecordsDO); + } + + /** + * 查询申请的所有审批记录(按时间正序) + */ + public List getRecordsByApplyId(Long applyId) { + if (applyId == null) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + return preFryApprovalRecordsMapper.selectByApplyId(applyId); + } + + + + + + + + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryQualificationApplyDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryQualificationApplyDAO.java new file mode 100644 index 000000000..aca74420a --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryQualificationApplyDAO.java @@ -0,0 +1,107 @@ +package com.cool.store.dao; + +import com.cool.store.dto.pre.fry.ApplyDetailDTO; +import com.cool.store.dto.pre.fry.ApplyManagementDTO; +import com.cool.store.dto.pre.fry.ApplyManagementQueryDTO; +import com.cool.store.entity.PreFryQualificationApplyDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.PreFryQualificationApplyMapper; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:12 + * @Version 1.0 + */ +@Repository +public class PreFryQualificationApplyDAO { + + @Resource + PreFryQualificationApplyMapper preFryQualificationApplyMapper; + + + /** + * 根据ID查询资质申请 + * @param id + * @return + */ + public PreFryQualificationApplyDO queryById(Long id) { + //校验ID不为空 + if (id == null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + return preFryQualificationApplyMapper.selectByPrimaryKey(id); + } + + + /** + * 新增资质申请 + * @param preFryQualificationApplyDO + * @return + */ + public int createQualificationApply(PreFryQualificationApplyDO preFryQualificationApplyDO) { + return preFryQualificationApplyMapper.insertSelective(preFryQualificationApplyDO); + } + + /** + * 强制修改资质申请 非空置为空 + * @param preFryQualificationApplyDO + * @return + */ + public int updateForce(PreFryQualificationApplyDO preFryQualificationApplyDO) { + return preFryQualificationApplyMapper.updateForce(preFryQualificationApplyDO); + } + + + /** + * 根据门店编码查询申请记录列表 + * @param storeCode 门店编码 + * @return 申请记录列表 + */ + public List listByStoreCode(String storeCode) { + // 参数校验 + if (StringUtils.isBlank(storeCode)) { + return Lists.newArrayList(); + } + return preFryQualificationApplyMapper.listByStoreCode(storeCode); + } + + public PreFryQualificationApplyDO selectByStoreCodeAndType(String storeCode, Integer applyType) { + // 参数校验 + if (StringUtils.isBlank(storeCode)|| applyType==null) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + return preFryQualificationApplyMapper.selectByStoreCodeAndType(storeCode,applyType); + } + + /** + * 查询指定门店applyType最小的申请记录 + * @param storeCode 门店编码 + * @return 申请记录 + */ + public PreFryQualificationApplyDO getMinApplyTypeByStoreCode(String storeCode) { + // 参数校验 + if (StringUtils.isBlank(storeCode)) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED, "门店编码不能为空"); + } + return preFryQualificationApplyMapper.selectMinApplyTypeByStoreCode(storeCode); + } + + public List selectApplyManagementList(ApplyManagementQueryDTO query) { + return preFryQualificationApplyMapper.selectApplyManagementList(query); + } + + public ApplyDetailDTO getApplyDetail(Long id) { + if (id==null) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + return preFryQualificationApplyMapper.getDetail(id); + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryRecordsDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryRecordsDAO.java new file mode 100644 index 000000000..1b1a6fda7 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryRecordsDAO.java @@ -0,0 +1,100 @@ +package com.cool.store.dao; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.dto.pre.fry.DailyFryCountDTO; +import com.cool.store.dto.pre.fry.PreFryRecordQueryDTO; +import com.cool.store.dto.pre.fry.PreFryRecordsDTO; +import com.cool.store.dto.pre.fry.ViolationDTO; +import com.cool.store.entity.PreFryRecordsDO; +import com.cool.store.mapper.PreFryRecordsMapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:13 + * @Version 1.0 + */ +@Repository +public class PreFryRecordsDAO { + + @Resource + private PreFryRecordsMapper preFryRecordsMapper; + + public int insert(PreFryRecordsDO record) { + if (Objects.isNull(record)) { + return CommonConstants.ZERO; + } + return preFryRecordsMapper.insertSelective(record); + } + + + + public int batchInsert(List records) { + if (CollectionUtils.isEmpty(records)) { + return CommonConstants.ZERO; + } + return preFryRecordsMapper.batchInsert(records); + } + + + + public PreFryRecordsDO queryById(Long id) { + if (id == null) { + return null; + } + return preFryRecordsMapper.selectByPrimaryKey(id); + } + + public List queryByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return new ArrayList<>(); + } + return preFryRecordsMapper.selectByIds(ids); + } + + + public int batchUpdateStageByIds( List ids, + Integer currentStage){ + if (CollectionUtils.isEmpty(ids)) { + return CommonConstants.ZERO; + } + return preFryRecordsMapper.batchUpdateStageByIds(ids,currentStage); + } + + public List selectByStoreAndDateStage(String storeCode, + Integer applyType, String queryDate){ + if (StringUtils.isBlank(storeCode)) { + return null; + } + return preFryRecordsMapper.selectByStoreAndDateStage(storeCode,applyType,queryDate); + } + + public List selectDailyFryCountInCurrentMonth(String storeCode,Long time) { + if (StringUtils.isEmpty(storeCode)) { + return null; + } + return preFryRecordsMapper.selectDailyFryCountInCurrentMonth(storeCode,time); + } + + + public List selectByQueryDTO(PreFryRecordQueryDTO dto) { + return preFryRecordsMapper.selectByQueryDTO(dto); + } + + public void batchUpdateViolation(List violationList) { + if (CollectionUtils.isEmpty(violationList)){ + return; + } + preFryRecordsMapper.batchUpdateViolation(violationList); + } + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryStageChangesDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryStageChangesDAO.java new file mode 100644 index 000000000..49d4ce2b9 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/PreFryStageChangesDAO.java @@ -0,0 +1,51 @@ +package com.cool.store.dao; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.dto.pre.fry.PreFryStageImagesDTO; +import com.cool.store.entity.PreFryStageChangesDO; +import com.cool.store.mapper.PreFryStageChangesMapper; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:13 + * @Version 1.0 + */ +@Repository +public class PreFryStageChangesDAO { + + @Resource + PreFryStageChangesMapper preFryStageChangesMapper; + + public int batchInsert(List records){ + if (CollectionUtils.isEmpty(records)){ + return CommonConstants.ZERO; + } + return preFryStageChangesMapper.batchInsert(records); + } + + + public List selectByRecordId( Long recordId){ + if (recordId == null){ + return new ArrayList<>(); + } + return preFryStageChangesMapper.selectByRecordId(recordId); + } + + public List selectByRecordIdList( List recordIdList){ + if (recordIdList == null){ + return new ArrayList<>(); + } + return preFryStageChangesMapper.selectByRecordIdList(recordIdList); + } + + + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFriedProductsMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFriedProductsMapper.java new file mode 100644 index 000000000..010dabe62 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFriedProductsMapper.java @@ -0,0 +1,56 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.PreFriedProductsDO; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.List; + +public interface PreFriedProductsMapper extends Mapper { + + /** + * 条件查询预炸产品 + * @param productCode 产品编码模糊查询 + * @param productName 产品名称模糊查询 + * @param status 上下架状态(0下架 1上架) + * @return 产品列表 + */ + List selectByCondition( + @Param("productCode") String productCode, + @Param("productName") String productName, + @Param("status") Integer status); + + + PreFriedProductsDO queryByProductCode(@Param("productCode") String productCode); + /** + * 批量删除 + * @param ids 产品ID列表 + * @param userId 操作人ID + * @return 影响行数 + */ + int batchDelete(@Param("ids") List ids, + @Param("userId") String userId); + + /** + * 批量上下架 + * @param ids 产品ID列表 + * @param status 目标状态(0下架 1上架) + * @param userId 操作人ID + * @return 影响行数 + */ + int batchUpdateStatus(@Param("ids") List ids, + @Param("status") Integer status, + @Param("userId") String userId); + + + /** + * 更新数据 + * @param product + * @return + */ + int forceUpdate(@Param("product") PreFriedProductsDO product); + + List selectByProductIds(@Param("productIds") List productIds); + + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryApprovalRecordsMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryApprovalRecordsMapper.java new file mode 100644 index 000000000..238f3f053 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryApprovalRecordsMapper.java @@ -0,0 +1,20 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.PreFryApprovalRecordsDO; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.List; + +public interface PreFryApprovalRecordsMapper extends Mapper { + + + /** + * 根据申请ID查询审批记录(按创建时间正序) + * @param applyId + * @return + */ + List selectByApplyId(@Param("applyId") Long applyId); + + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryQualificationApplyMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryQualificationApplyMapper.java new file mode 100644 index 000000000..6ac870cda --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryQualificationApplyMapper.java @@ -0,0 +1,52 @@ +package com.cool.store.mapper; + +import com.cool.store.dto.pre.fry.ApplyDetailDTO; +import com.cool.store.dto.pre.fry.ApplyManagementDTO; +import com.cool.store.dto.pre.fry.ApplyManagementQueryDTO; +import com.cool.store.entity.PreFryQualificationApplyDO; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.List; + +public interface PreFryQualificationApplyMapper extends Mapper { + + + /** + * 强制修改 + * @param entity + * @return + */ + int updateForce(PreFryQualificationApplyDO entity); + + + /** + * 根据门店编码查询 + * @param storeCode + * @return + */ + List listByStoreCode(@Param("storeCode") String storeCode); + + /** + * 根据门店编码查询与申请类型查询 + * @param storeCode + * @param applyType + * @return + */ + PreFryQualificationApplyDO selectByStoreCodeAndType(@Param("storeCode") String storeCode, + @Param("applyType") Integer applyType); + + /** + * 查询指定门店applyType最小的申请记录 + * @param storeCode 门店编码 + * @return 申请记录 + */ + PreFryQualificationApplyDO selectMinApplyTypeByStoreCode(@Param("storeCode") String storeCode); + + + List selectApplyManagementList(ApplyManagementQueryDTO query); + + + ApplyDetailDTO getDetail(Long id); + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryRecordsMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryRecordsMapper.java new file mode 100644 index 000000000..085f8d109 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryRecordsMapper.java @@ -0,0 +1,36 @@ +package com.cool.store.mapper; + +import com.cool.store.dto.pre.fry.DailyFryCountDTO; +import com.cool.store.dto.pre.fry.PreFryRecordQueryDTO; +import com.cool.store.dto.pre.fry.PreFryRecordsDTO; +import com.cool.store.dto.pre.fry.ViolationDTO; +import com.cool.store.entity.PreFryRecordsDO; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.Date; +import java.util.List; + +public interface PreFryRecordsMapper extends Mapper { + + int batchInsert(List records); + + int batchUpdateStageByIds(@Param("ids") List ids, + @Param("currentStage") Integer currentStage); + + List selectByIds(@Param("ids") List ids); + + List selectByStoreAndDateStage( + @Param("storeCode") String storeCode, + @Param("applyType") Integer applyType, + @Param("queryDate") String queryDate); + + + List selectDailyFryCountInCurrentMonth(@Param("storeCode") String storeCode,@Param("time") Long time); + + + List selectByQueryDTO(@Param("query") PreFryRecordQueryDTO dto); + + void batchUpdateViolation(@Param("list") List violationList); + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryStageChangesMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryStageChangesMapper.java new file mode 100644 index 000000000..f35712624 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/PreFryStageChangesMapper.java @@ -0,0 +1,19 @@ +package com.cool.store.mapper; + +import com.cool.store.dto.pre.fry.PreFryStageImagesDTO; +import com.cool.store.entity.PreFryStageChangesDO; +import org.apache.ibatis.annotations.Param; +import tk.mybatis.mapper.common.Mapper; + +import java.util.List; + +public interface PreFryStageChangesMapper extends Mapper { + + + int batchInsert(List records); + + List selectByRecordId(@Param("recordId") Long recordId); + + List selectByRecordIdList(@Param("recordIdList") List recordIdList); + +} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyContentInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyContentInfoMapper.xml index d980fbed8..67f6a130f 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyContentInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyContentInfoMapper.xml @@ -201,6 +201,7 @@ and update_time <= #{endTime} + and subject != 'MINI_PRE_FRIED' order by update_time desc diff --git a/coolstore-partner-dao/src/main/resources/mapper/PreFriedProductsMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/PreFriedProductsMapper.xml new file mode 100644 index 000000000..935cfc414 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/PreFriedProductsMapper.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE xfsg_pre_fried_products + SET deleted = 1, + updated_time = NOW(), + updated_user_id = #{userId} + WHERE id IN + + #{id} + + + + + UPDATE xfsg_pre_fried_products + SET status = #{status}, + updated_time = NOW(), + updated_user_id = #{userId} + WHERE id IN + + #{id} + + + + + + + + UPDATE xfsg_pre_fried_products + SET + product_code = #{product.productCode}, + product_name = #{product.productName}, + product_image = #{product.productImage}, + status = #{product.status}, + sort_order = #{product.sortOrder}, + updated_time = NOW(), + updated_user_id = #{product.updatedUserId} + WHERE id = #{product.id} + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/PreFryApprovalRecordsMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/PreFryApprovalRecordsMapper.xml new file mode 100644 index 000000000..6cdfdb99b --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/PreFryApprovalRecordsMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/PreFryQualificationApplyMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/PreFryQualificationApplyMapper.xml new file mode 100644 index 000000000..60ac2f08d --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/PreFryQualificationApplyMapper.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + UPDATE xfsg_pre_fry_qualification_apply + SET store_code = #{storeCode}, + apply_type = #{applyType}, + refrigerator_photo = #{refrigeratorPhoto}, + refrigerator_plate_photo = #{refrigeratorPlatePhoto}, + protective_cover_photo = #{protectiveCoverPhoto}, + cold_storage_box_photo = #{coldStorageBoxPhoto}, + audit_status = #{auditStatus}, + updated_time = NOW() + WHERE id = #{id} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/PreFryRecordsMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/PreFryRecordsMapper.xml new file mode 100644 index 000000000..aa73eb2dc --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/PreFryRecordsMapper.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO xfsg_pre_fry_records + (store_code, product_code, fry_date, fry_complete_time, + latest_sale_time, current_stage, current_apply_type, created_time, updated_time) + VALUES + + (#{item.storeCode}, #{item.productCode}, #{item.fryDate}, + #{item.fryCompleteTime}, #{item.latestSaleTime}, #{item.currentStage},#{item.currentApplyType}, + NOW(), NOW()) + + + + + UPDATE xfsg_pre_fry_records + SET current_stage = #{currentStage}, + updated_time = NOW() + WHERE id IN + + #{id} + + + + + + + + + + + + + + UPDATE xfsg_pre_fry_records + SET + violation_flag = CASE id + + WHEN #{item.id} THEN #{item.violationFlag} + + ELSE violation_flag + END, + violation_reason = CASE id + + WHEN #{item.id} THEN #{item.violationReason} + + ELSE violation_reason + END, + updated_time = NOW() + WHERE id IN + + #{item.id} + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/PreFryStageChangesMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/PreFryStageChangesMapper.xml new file mode 100644 index 000000000..fd43d5d82 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/PreFryStageChangesMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + INSERT INTO xfsg_pre_fry_stage_changes + (record_id, stage, image1, image2, operator_name, remark, created_time, updated_time) + VALUES + + (#{item.recordId}, #{item.stage}, #{item.image1}, #{item.image2}, + #{item.operatorName}, #{item.remark}, NOW(), NOW()) + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties index a6d7bcc74..cacaa4ac7 100644 --- a/coolstore-partner-dao/src/test/resources/mybatis-generator.properties +++ b/coolstore-partner-dao/src/test/resources/mybatis-generator.properties @@ -3,6 +3,6 @@ jdbc.url = jdbc:mysql://dingpushcoolcollege.mysql.rds.aliyuncs.com:3306/coolcoll jdbc.user= coolstore jdbc.password = CSCErYcXniNYm7bT -table.name = xfsg_invoicing -table.object.class = InvoicingDO -table.mapper = InvoicingMapper \ No newline at end of file +table.name = xfsg_pre_fry_stage_changes +table.object.class = PreFryStageChangesDO +table.mapper = PreFryStageChangesMapper \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/AddPreFryRecordsDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/AddPreFryRecordsDTO.java new file mode 100644 index 000000000..430c58f64 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/AddPreFryRecordsDTO.java @@ -0,0 +1,33 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/23 14:58 + * @Version 1.0 + */ +@Data +public class AddPreFryRecordsDTO { + + @ApiModelProperty("门店编码") + @NotEmpty(message = "门店编码不能为空") + private String storeCode; + + @ApiModelProperty("当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废") + private Integer currentStage; + + @ApiModelProperty("申请类型 选择的类型 不是最高类型") + @NotNull(message = "申请类型不能为空") + private Integer applyType; + + @ApiModelProperty("批量数据") + private List records; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/AddPreFryRecordsDetailDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/AddPreFryRecordsDetailDTO.java new file mode 100644 index 000000000..b91a4fd76 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/AddPreFryRecordsDetailDTO.java @@ -0,0 +1,25 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Author suzhuhong + * @Date 2025/6/23 14:55 + * @Version 1.0 + */ +@Data +public class AddPreFryRecordsDetailDTO { + + @ApiModelProperty("记录ID") + private Long recordId; + @ApiModelProperty("产品ID") + @NotNull(message = "产品ID不能为空") + private Long productId; + @ApiModelProperty("图片1") + private String image1; + @ApiModelProperty("图片2") + private String image2; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyAuditDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyAuditDTO.java new file mode 100644 index 000000000..a973c3f7a --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyAuditDTO.java @@ -0,0 +1,21 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/6/21 17:29 + * @Version 1.0 + */ +@Data +public class ApplyAuditDTO { + + @ApiModelProperty("审核状态:1-通过,2-拒绝") + private Integer auditStatus; + + private String auditRemark; + + private Long id ; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyDTO.java new file mode 100644 index 000000000..1ded0c498 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyDTO.java @@ -0,0 +1,38 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; + + +/** + * @Author suzhuhong + * @Date 2025/6/21 15:24 + * @Version 1.0 + */ +@Data +public class ApplyDTO { + @ApiModelProperty("从新提交时需要带上ID") + private Long id; + + private String storeCode; + + @ApiModelProperty("申请类型:1-有冷藏展示柜,2-有常温展示柜,3-无展示柜") + @Max(3)@Min(1) + private Integer applyType; + + @ApiModelProperty("展示柜照片URL") + private String refrigeratorPhoto; + + @ApiModelProperty("展示柜铭牌图片URL") + private String refrigeratorPlatePhoto; + + @ApiModelProperty("(防绳罩、防尘罩)图片URL") + private String protectiveCoverPhoto; + + @ApiModelProperty("冷藏盒图片URL") + private String coldStorageBoxPhoto; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyDetailDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyDetailDTO.java new file mode 100644 index 000000000..1ff6b98be --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyDetailDTO.java @@ -0,0 +1,27 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/6/21 17:14 + * @Version 1.0 + */ +@Data +public class ApplyDetailDTO extends ApplyManagementDTO{ + + @ApiModelProperty( "展示柜照片URL") + private String refrigeratorPhoto; + + @ApiModelProperty( "展示柜铭牌图片URL") + private String refrigeratorPlatePhoto; + + @ApiModelProperty( "(防绳罩、防尘罩)图片URL") + private String protectiveCoverPhoto; + + @ApiModelProperty( "冷藏盒图片URL") + private String coldStorageBoxPhoto; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyManagementDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyManagementDTO.java new file mode 100644 index 000000000..9b3641469 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyManagementDTO.java @@ -0,0 +1,36 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/21 16:44 + * @Version 1.0 + */ +@Data +public class ApplyManagementDTO { + + private Long id; + @ApiModelProperty("门店Code") + private String storeCode; + @ApiModelProperty("门店名称") + private String storeName; + @ApiModelProperty("申请单号") + private String applyCode; + @ApiModelProperty("申请类型:1-有冷藏展示柜,2-有常温展示柜,3-无展示柜 ") + private Integer applyType; + @ApiModelProperty("申请人ID") + private String createUserId; + @ApiModelProperty("申请人名称") + private String createUserName; + @ApiModelProperty("申请人手机号") + private String createUserMobile; + @ApiModelProperty("申请时间") + private Date createTime; + @ApiModelProperty("审核状态:0-审批中,1-审核通过,2-审核不通过") + private Integer auditStatus; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyManagementQueryDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyManagementQueryDTO.java new file mode 100644 index 000000000..650783bb0 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApplyManagementQueryDTO.java @@ -0,0 +1,28 @@ +package com.cool.store.dto.pre.fry; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + +@Data +public class ApplyManagementQueryDTO extends PageBasicInfo { + @ApiModelProperty("门店编码(模糊)") + private String storeCode; + @ApiModelProperty("门店名称(模糊)") + private String storeName; + @ApiModelProperty("申请人姓名(模糊)") + private String createUserName; + @ApiModelProperty("申请人手机号(模糊)") + private String createUserMobile; + @ApiModelProperty("状态") + private Integer auditStatus; + @ApiModelProperty("申请类型") + private Integer applyType; + @ApiModelProperty("申请日期开始时间") + private Date createTimeStart; + @ApiModelProperty("申请日期结束时间") + private Date createTimeEnd; + @ApiModelProperty("申请编号") + private String applyCode; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApprovalRecordDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApprovalRecordDTO.java new file mode 100644 index 000000000..d38990b3a --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApprovalRecordDTO.java @@ -0,0 +1,28 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +import javax.persistence.Column; +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/21 14:39 + * @Version 1.0 + */ +@Data +public class ApprovalRecordDTO { + @ApiModelProperty("申请ID") + private Long applyId; + @ApiModelProperty("备注-拒绝时填写") + private String remark; + @ApiModelProperty("操作状态1-通过 2-拒绝") + private Integer operationStatus; + @ApiModelProperty("记录类型:1-申请提交,2-审批操作") + private Integer recordType; + @ApiModelProperty("创建时间") + private Date createdTime; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApprovalRecordListDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApprovalRecordListDTO.java new file mode 100644 index 000000000..14ad452fa --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ApprovalRecordListDTO.java @@ -0,0 +1,21 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/21 16:22 + * @Version 1.0 + */ +public class ApprovalRecordListDTO { + + @ApiModelProperty("记录ID") + private Long id; + @ApiModelProperty("记录类型(1=申请,2=通过,3=拒绝)") + private Integer recordType; + @ApiModelProperty("创建时间") + private Date createdTime; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/DailyFryCountDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/DailyFryCountDTO.java new file mode 100644 index 000000000..2ec5a0d34 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/DailyFryCountDTO.java @@ -0,0 +1,18 @@ +package com.cool.store.dto.pre.fry; + +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/23 19:04 + * @Version 1.0 + */ +@Data +public class DailyFryCountDTO { + + private Date fryDate; + private Integer count; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/FryRecordsQueryDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/FryRecordsQueryDTO.java new file mode 100644 index 000000000..d728d3dd8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/FryRecordsQueryDTO.java @@ -0,0 +1,25 @@ +package com.cool.store.dto.pre.fry; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/23 18:24 + * @Version 1.0 + */ +@Data +public class FryRecordsQueryDTO extends PageBasicInfo { + + @ApiModelProperty("门店编码") + private String storeCode; + @ApiModelProperty("当前日期") + private Date currentDate; + @ApiModelProperty("申请类型") + private Integer applyType; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsBatchDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsBatchDTO.java new file mode 100644 index 000000000..9d60797ef --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsBatchDTO.java @@ -0,0 +1,21 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:56 + * @Version 1.0 + */ +@Data +public class PreFriedProductsBatchDTO { + @ApiModelProperty("产品ID列表") + private List ids; + @ApiModelProperty("上下架状态0-下架 1-上架 删除时 不需要传递") + private Integer status; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsDTO.java new file mode 100644 index 000000000..c3662a702 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsDTO.java @@ -0,0 +1,25 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:55 + * @Version 1.0 + */ +@Data +public class PreFriedProductsDTO { + @ApiModelProperty("ID") + private Long id; + @ApiModelProperty("产品编码") + private String productCode; + @ApiModelProperty("产品名称") + private String productName; + @ApiModelProperty("产品图片") + private String productImage; + @ApiModelProperty("上下架状态0-下架 1-上架") + private Integer status; + @ApiModelProperty("排序") + private Integer sortOrder; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsDetailDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsDetailDTO.java new file mode 100644 index 000000000..d22c93a03 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsDetailDTO.java @@ -0,0 +1,47 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/21 13:28 + * @Version 1.0 + */ +@Data +public class PreFriedProductsDetailDTO { + + private Long id; + + @ApiModelProperty("产品编号") + private String productCode; + + @ApiModelProperty("产品名称") + private String productName; + + @ApiModelProperty("产品图片URL") + private String productImage; + + @ApiModelProperty("上架状态:0-下架,1-上架") + private Integer status; + + @ApiModelProperty("排序") + private Integer sortOrder; + + @ApiModelProperty("创建时间") + private Date createdTime; + + @ApiModelProperty("更新时间") + private Date updatedTime; + + @ApiModelProperty("创建人") + private String createdUserId; + + @ApiModelProperty("修改人") + private String updatedUserId; + + private Integer deleted; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsQueryDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsQueryDTO.java new file mode 100644 index 000000000..01b92a5b8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFriedProductsQueryDTO.java @@ -0,0 +1,20 @@ +package com.cool.store.dto.pre.fry; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:56 + * @Version 1.0 + */ +@Data +public class PreFriedProductsQueryDTO extends PageBasicInfo { + @ApiModelProperty("产品编码") + private String productCode; + @ApiModelProperty("产品名称") + private String productName; + @ApiModelProperty("产品状态") + private Integer status; +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryQualificationApplyDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryQualificationApplyDTO.java new file mode 100644 index 000000000..e6a5c0df3 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryQualificationApplyDTO.java @@ -0,0 +1,26 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/6/23 9:59 + * @Version 1.0 + */ +@Data +public class PreFryQualificationApplyDTO { + + private Long id; + + private String storeCode; + + @ApiModelProperty("申请类型:1-有冷藏展示柜,2-有常温展示柜,3-无展示柜") + private Integer applyType; + + @ApiModelProperty("审核状态:0-审批中,1-审核通过,2-审核不通过") + private Integer auditStatus; + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordQueryDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordQueryDTO.java new file mode 100644 index 000000000..650b54f89 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordQueryDTO.java @@ -0,0 +1,39 @@ +package com.cool.store.dto.pre.fry; + +import com.cool.store.common.PageBasicInfo; +import com.github.pagehelper.PageHelper; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/23 20:49 + * @Version 1.0 + */ +@Data +public class PreFryRecordQueryDTO extends PageBasicInfo { + + @ApiModelProperty("预炸记录编码") + private String recordCode; + @ApiModelProperty("门店编码") + private String storeCode; + @ApiModelProperty("门店名称") + private String storeName; + @ApiModelProperty("产品名称") + private String productName; + @ApiModelProperty("产品编码") + private String productCode; + @ApiModelProperty("状态 当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废") + private Integer currentStage; + @ApiModelProperty("预炸开始时间") + private Date fryStartDate; + @ApiModelProperty("预炸结束时间") + private Date fryEndDate; + @ApiModelProperty("是否违规 0-未违规 1违规") + private Integer violationFlag; + @ApiModelProperty("违规原因") + private Integer violationReason; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordsDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordsDTO.java new file mode 100644 index 000000000..91be9a759 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordsDTO.java @@ -0,0 +1,37 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/23 21:10 + * @Version 1.0 + */ +@Data +public class PreFryRecordsDTO { + + @ApiModelProperty("预炸记录ID") + private Long id; + @ApiModelProperty("预炸记录编码") + private String recordCode; + @ApiModelProperty("门店编码") + private String storeCode; + @ApiModelProperty("门店名称") + private String storeName; + @ApiModelProperty("产品编码") + private String productCode; + @ApiModelProperty("产品名称") + private String productName; + @ApiModelProperty("当前状态") + private Integer currentStage; + @ApiModelProperty("预炸完成时间") + private Date fryDate; + @ApiModelProperty("是否违规") + private Integer violationFlag; + @ApiModelProperty("违规原因") + private String violationReason; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordsDetailDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordsDetailDTO.java new file mode 100644 index 000000000..eb3d2079c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryRecordsDetailDTO.java @@ -0,0 +1,61 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/23 17:23 + * @Version 1.0 + */ +@Data +public class PreFryRecordsDetailDTO { + + @ApiModelProperty( "ID") + private Long id; + + @ApiModelProperty( "门店编码") + private String storeCode; + @ApiModelProperty( "门店名称") + private String storeName; + + @ApiModelProperty( "预炸产品id") + private Long productId; + + @ApiModelProperty( "预炸产品编码") + private String productCode; + + @ApiModelProperty( "预炸产品名称") + private String productName; + + @ApiModelProperty( "预炸记录编码") + private String recordCode; + + @ApiModelProperty( "预炸产品图片") + private String productImageUrl; + + @ApiModelProperty( "预炸完成时间") + private Date fryCompleteTime; + + @ApiModelProperty( "最迟售卖时间") + private Date latestSaleTime; + + @ApiModelProperty( "当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废") + private Integer currentStage; + + @ApiModelProperty( "申请类型") + private Integer currentApplyType; + + @ApiModelProperty("是否违规") + private Integer violationFlag; + + @ApiModelProperty("违规原因") + private String violationReason; + + @ApiModelProperty( "状态记录") + private List stageHistory; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryStageImagesDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryStageImagesDTO.java new file mode 100644 index 000000000..440d00abb --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/PreFryStageImagesDTO.java @@ -0,0 +1,29 @@ +package com.cool.store.dto.pre.fry; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/6/23 14:31 + * @Version 1.0 + */ +@Data +public class PreFryStageImagesDTO { + + @ApiModelProperty("ID") + private Integer id; + @ApiModelProperty("记录ID") + private Long recordId; + @ApiModelProperty("当前阶段") + private Integer stage; + @ApiModelProperty("图片1") + private String image1; + @ApiModelProperty("图片2") + private String image2; + @ApiModelProperty("时间") + private Date createdTime; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ViolationDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ViolationDTO.java new file mode 100644 index 000000000..87ab275cc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/pre/fry/ViolationDTO.java @@ -0,0 +1,19 @@ +package com.cool.store.dto.pre.fry; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/6/24 10:39 + * @Version 1.0 + */ +@Data +public class ViolationDTO { + + private Long id; + + private Integer violationFlag; + + private String violationReason; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFriedProductsDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFriedProductsDO.java new file mode 100644 index 000000000..512238db5 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFriedProductsDO.java @@ -0,0 +1,250 @@ +package com.cool.store.entity; + +import java.util.Date; +import javax.persistence.*; + +@Table(name = "xfsg_pre_fried_products") +public class PreFriedProductsDO { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * 产品编号 + */ + @Column(name = "product_code") + private String productCode; + + /** + * 产品名称 + */ + @Column(name = "product_name") + private String productName; + + /** + * 产品图片URL + */ + @Column(name = "product_image") + private String productImage; + + /** + * 上架状态:0-下架,1-上架 + */ + private Integer status; + + /** + * 排序 + */ + @Column(name = "sort_order") + private Integer sortOrder; + + /** + * 创建时间 + */ + @Column(name = "created_time") + private Date createdTime; + + /** + * 更新时间 + */ + @Column(name = "updated_time") + private Date updatedTime; + + /** + * 创建人 + */ + @Column(name = "created_user_id") + private String createdUserId; + + /** + * 修改人 + */ + @Column(name = "updated_User_id") + private String updatedUserId; + + private Integer deleted; + + public Integer getDeleted() { + return deleted; + } + + public void setDeleted(Integer deleted) { + this.deleted = deleted; + } + + /** + * @return id + */ + public Long getId() { + return id; + } + + /** + * @param id + */ + public void setId(Long id) { + this.id = id; + } + + /** + * 获取产品编号 + * + * @return product_code - 产品编号 + */ + public String getProductCode() { + return productCode; + } + + /** + * 设置产品编号 + * + * @param productCode 产品编号 + */ + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + /** + * 获取产品名称 + * + * @return product_name - 产品名称 + */ + public String getProductName() { + return productName; + } + + /** + * 设置产品名称 + * + * @param productName 产品名称 + */ + public void setProductName(String productName) { + this.productName = productName; + } + + /** + * 获取产品图片URL + * + * @return product_image - 产品图片URL + */ + public String getProductImage() { + return productImage; + } + + /** + * 设置产品图片URL + * + * @param productImage 产品图片URL + */ + public void setProductImage(String productImage) { + this.productImage = productImage; + } + + /** + * 获取上架状态:0-下架,1-上架 + * + * @return status - 上架状态:0-下架,1-上架 + */ + public Integer getStatus() { + return status; + } + + /** + * 设置上架状态:0-下架,1-上架 + * + * @param status 上架状态:0-下架,1-上架 + */ + public void setStatus(Integer status) { + this.status = status; + } + + /** + * 获取排序 + * + * @return sort_order - 排序 + */ + public Integer getSortOrder() { + return sortOrder; + } + + /** + * 设置排序 + * + * @param sortOrder 排序 + */ + public void setSortOrder(Integer sortOrder) { + this.sortOrder = sortOrder; + } + + /** + * 获取创建时间 + * + * @return created_time - 创建时间 + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置创建时间 + * + * @param createdTime 创建时间 + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取更新时间 + * + * @return updated_time - 更新时间 + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置更新时间 + * + * @param updatedTime 更新时间 + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } + + /** + * 获取创建人 + * + * @return created_user_id - 创建人 + */ + public String getCreatedUserId() { + return createdUserId; + } + + /** + * 设置创建人 + * + * @param createdUserId 创建人 + */ + public void setCreatedUserId(String createdUserId) { + this.createdUserId = createdUserId; + } + + /** + * 获取修改人 + * + * @return updated_User_id - 修改人 + */ + public String getUpdatedUserId() { + return updatedUserId; + } + + /** + * 设置修改人 + * + * @param updatedUserId 修改人 + */ + public void setUpdatedUserId(String updatedUserId) { + this.updatedUserId = updatedUserId; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryApprovalRecordsDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryApprovalRecordsDO.java new file mode 100644 index 000000000..30b828ce5 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryApprovalRecordsDO.java @@ -0,0 +1,192 @@ +package com.cool.store.entity; + +import java.util.Date; +import javax.persistence.*; + +@Table(name = "xfsg_pre_fry_approval_records") +public class PreFryApprovalRecordsDO { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * 关联的申请ID + */ + @Column(name = "apply_id") + private Long applyId; + + /** + * 记录类型:1-申请提交,2-审批操作 + */ + @Column(name = "record_type") + private Integer recordType; + + /** + * 操作状态:1-通过 2-拒绝 + */ + @Column(name = "operation_status") + private Integer operationStatus; + + /** + * 处理人名称 + */ + @Column(name = "operator_name") + private String operatorName; + + /** + * 处理备注 + */ + private String remark; + + /** + * 创建时间 + */ + @Column(name = "created_time") + private Date createdTime; + + /** + * 更新时间 + */ + @Column(name = "updated_time") + private Date updatedTime; + + /** + * @return id + */ + public Long getId() { + return id; + } + + /** + * @param id + */ + public void setId(Long id) { + this.id = id; + } + + /** + * 获取关联的申请ID + * + * @return apply_id - 关联的申请ID + */ + public Long getApplyId() { + return applyId; + } + + /** + * 设置关联的申请ID + * + * @param applyId 关联的申请ID + */ + public void setApplyId(Long applyId) { + this.applyId = applyId; + } + + /** + * 获取记录类型:1-申请提交,2-审批操作 + * + * @return record_type - 记录类型:1-申请提交,2-审批操作 + */ + public Integer getRecordType() { + return recordType; + } + + /** + * 设置记录类型:1-申请提交,2-审批操作 + * + * @param recordType 记录类型:1-申请提交,2-审批操作 + */ + public void setRecordType(Integer recordType) { + this.recordType = recordType; + } + + /** + * 获取操作状态:1-通过 2-拒绝 + * + * @return operation_status - 操作状态:1-通过 2-拒绝 + */ + public Integer getOperationStatus() { + return operationStatus; + } + + /** + * 设置操作状态:1-通过 2-拒绝 + * + * @param operationStatus 操作状态:1-通过 2-拒绝 + */ + public void setOperationStatus(Integer operationStatus) { + this.operationStatus = operationStatus; + } + + /** + * 获取处理人名称 + * + * @return operator_name - 处理人名称 + */ + public String getOperatorName() { + return operatorName; + } + + /** + * 设置处理人名称 + * + * @param operatorName 处理人名称 + */ + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + /** + * 获取处理备注 + * + * @return remark - 处理备注 + */ + public String getRemark() { + return remark; + } + + /** + * 设置处理备注 + * + * @param remark 处理备注 + */ + public void setRemark(String remark) { + this.remark = remark; + } + + /** + * 获取创建时间 + * + * @return created_time - 创建时间 + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置创建时间 + * + * @param createdTime 创建时间 + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取更新时间 + * + * @return updated_time - 更新时间 + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置更新时间 + * + * @param updatedTime 更新时间 + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryQualificationApplyDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryQualificationApplyDO.java new file mode 100644 index 000000000..78a4fbb22 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryQualificationApplyDO.java @@ -0,0 +1,264 @@ +package com.cool.store.entity; + +import java.util.Date; +import javax.persistence.*; + +@Table(name = "xfsg_pre_fry_qualification_apply") +public class PreFryQualificationApplyDO { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + + @Column(name = "apply_code") + private String applyCode; + /** + * 门店编码 + */ + @Column(name = "store_code") + private String storeCode; + + /** + * 申请类型:1-有冷藏展示柜 ,2-有常温展示柜,3-无展示柜 + */ + @Column(name = "apply_type") + private Integer applyType; + + /** + * 冷藏展示柜照片URL + */ + @Column(name = "refrigerator_photo") + private String refrigeratorPhoto; + + /** + * 展示柜铭牌图片URL + */ + @Column(name = "refrigerator_plate_photo") + private String refrigeratorPlatePhoto; + + /** + * (防绳罩、防尘罩)图片URL + */ + @Column(name = "protective_cover_photo") + private String protectiveCoverPhoto; + + /** + * 冷藏盒图片URL + */ + @Column(name = "cold_storage_box_photo") + private String coldStorageBoxPhoto; + + /** + * 审核状态:0-审批中,1-审核通过,2-审核不通过 + */ + @Column(name = "audit_status") + private Integer auditStatus; + + /** + * 创建时间 + */ + @Column(name = "created_time") + private Date createdTime; + + /** + * 更新时间 + */ + @Column(name = "updated_time") + private Date updatedTime; + + @Column(name = "created_user_id") + private String createdUserId; + + + public String getCreatedUserId() { + return createdUserId; + } + + public void setCreatedUserId(String createdUserId) { + this.createdUserId = createdUserId; + } + + public String getApplyCode() { + return applyCode; + } + + public void setApplyCode(String applyCode) { + this.applyCode = applyCode; + } + + /** + * @return id + */ + public Long getId() { + return id; + } + + /** + * @param id + */ + public void setId(Long id) { + this.id = id; + } + + /** + * 获取门店编码 + * + * @return store_code - 门店编码 + */ + public String getStoreCode() { + return storeCode; + } + + /** + * 设置门店编码 + * + * @param storeCode 门店编码 + */ + public void setStoreCode(String storeCode) { + this.storeCode = storeCode; + } + + /** + * 获取申请类型:1-有冷藏展示柜 ,2-有常温展示柜,3-无展示柜 + * + * @return apply_type - 申请类型:1-有冷藏展示柜 ,2-有常温展示柜,3-无展示柜 + */ + public Integer getApplyType() { + return applyType; + } + + /** + * 设置申请类型:1-有冷藏展示柜 ,2-有常温展示柜,3-无展示柜 + * + * @param applyType 申请类型:1-有冷藏展示柜 ,2-有常温展示柜,3-无展示柜 + */ + public void setApplyType(Integer applyType) { + this.applyType = applyType; + } + + /** + * 获取冷藏展示柜照片URL + * + * @return refrigerator_photo - 冷藏展示柜照片URL + */ + public String getRefrigeratorPhoto() { + return refrigeratorPhoto; + } + + /** + * 设置冷藏展示柜照片URL + * + * @param refrigeratorPhoto 冷藏展示柜照片URL + */ + public void setRefrigeratorPhoto(String refrigeratorPhoto) { + this.refrigeratorPhoto = refrigeratorPhoto; + } + + /** + * 获取展示柜铭牌图片URL + * + * @return refrigerator_plate_photo - 展示柜铭牌图片URL + */ + public String getRefrigeratorPlatePhoto() { + return refrigeratorPlatePhoto; + } + + /** + * 设置展示柜铭牌图片URL + * + * @param refrigeratorPlatePhoto 展示柜铭牌图片URL + */ + public void setRefrigeratorPlatePhoto(String refrigeratorPlatePhoto) { + this.refrigeratorPlatePhoto = refrigeratorPlatePhoto; + } + + /** + * 获取(防绳罩、防尘罩)图片URL + * + * @return protective_cover_photo - (防绳罩、防尘罩)图片URL + */ + public String getProtectiveCoverPhoto() { + return protectiveCoverPhoto; + } + + /** + * 设置(防绳罩、防尘罩)图片URL + * + * @param protectiveCoverPhoto (防绳罩、防尘罩)图片URL + */ + public void setProtectiveCoverPhoto(String protectiveCoverPhoto) { + this.protectiveCoverPhoto = protectiveCoverPhoto; + } + + /** + * 获取冷藏盒图片URL + * + * @return cold_storage_box_photo - 冷藏盒图片URL + */ + public String getColdStorageBoxPhoto() { + return coldStorageBoxPhoto; + } + + /** + * 设置冷藏盒图片URL + * + * @param coldStorageBoxPhoto 冷藏盒图片URL + */ + public void setColdStorageBoxPhoto(String coldStorageBoxPhoto) { + this.coldStorageBoxPhoto = coldStorageBoxPhoto; + } + + /** + * 获取审核状态:0-审批中,1-审核通过,2-审核不通过 + * + * @return audit_status - 审核状态:0-审批中,1-审核通过,2-审核不通过 + */ + public Integer getAuditStatus() { + return auditStatus; + } + + /** + * 设置审核状态:0-审批中,1-审核通过,2-审核不通过 + * + * @param auditStatus 审核状态:0-审批中,1-审核通过,2-审核不通过 + */ + public void setAuditStatus(Integer auditStatus) { + this.auditStatus = auditStatus; + } + + /** + * 获取创建时间 + * + * @return created_time - 创建时间 + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置创建时间 + * + * @param createdTime 创建时间 + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取更新时间 + * + * @return updated_time - 更新时间 + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置更新时间 + * + * @param updatedTime 更新时间 + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryRecordsDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryRecordsDO.java new file mode 100644 index 000000000..fa7829ff7 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryRecordsDO.java @@ -0,0 +1,273 @@ +package com.cool.store.entity; + +import java.util.Date; +import javax.persistence.*; + +@Table(name = "xfsg_pre_fry_records") +public class PreFryRecordsDO { + /** + * 主键ID + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** + * 门店编码 + */ + @Column(name = "store_code") + private String storeCode; + + /** + * 预炸产品id + */ + @Column(name = "product_id") + private Long productId; + + @Column(name = "record_code") + private String recordCode; + + + /** + * 预炸日期 + */ + @Column(name = "fry_date") + private Date fryDate; + + /** + * 预炸完成时间 + */ + @Column(name = "fry_complete_time") + private Date fryCompleteTime; + + /** + * 最迟售卖时间 + */ + @Column(name = "latest_sale_time") + private Date latestSaleTime; + + /** + * 当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + */ + @Column(name = "current_stage") + private Integer currentStage; + + /** + * 提交时所属 申请类型 + */ + @Column(name = "current_apply_type") + private Integer currentApplyType; + + /** + * 创建时间 + */ + @Column(name = "created_time") + private Date createdTime; + + /** + * 更新时间 + */ + @Column(name = "updated_time") + private Date updatedTime; + + @Column(name = "violation_flag") + private Integer violationFlag; + @Column(name = "violation_reason") + private String violationReason; + + + public Integer getViolationFlag() { + return violationFlag; + } + + public void setViolationFlag(Integer violationFlag) { + this.violationFlag = violationFlag; + } + + public String getViolationReason() { + return violationReason; + } + + public void setViolationReason(String violationReason) { + this.violationReason = violationReason; + } + + public Integer getCurrentApplyType() { + return currentApplyType; + } + + public void setCurrentApplyType(Integer currentApplyType) { + this.currentApplyType = currentApplyType; + } + + public String getRecordCode() { + return recordCode; + } + + public void setRecordCode(String recordCode) { + this.recordCode = recordCode; + } + + /** + * 获取主键ID + * + * @return id - 主键ID + */ + public Long getId() { + return id; + } + + /** + * 设置主键ID + * + * @param id 主键ID + */ + public void setId(Long id) { + this.id = id; + } + + /** + * 获取门店编码 + * + * @return store_code - 门店编码 + */ + public String getStoreCode() { + return storeCode; + } + + /** + * 设置门店编码 + * + * @param storeCode 门店编码 + */ + public void setStoreCode(String storeCode) { + this.storeCode = storeCode; + } + + /** + * 获取预炸产品编码 + * + * @return product_id - 预炸产品编码 + */ + public Long getProductId() { + return productId; + } + + /** + * 设置预炸产品编码 + * + * @param productId 预炸产品编码 + */ + public void setProductId(Long productId) { + this.productId = productId; + } + + + /** + * 获取预炸日期 + * + * @return fry_date - 预炸日期 + */ + public Date getFryDate() { + return fryDate; + } + + /** + * 设置预炸日期 + * + * @param fryDate 预炸日期 + */ + public void setFryDate(Date fryDate) { + this.fryDate = fryDate; + } + + /** + * 获取预炸完成时间 + * + * @return fry_complete_time - 预炸完成时间 + */ + public Date getFryCompleteTime() { + return fryCompleteTime; + } + + /** + * 设置预炸完成时间 + * + * @param fryCompleteTime 预炸完成时间 + */ + public void setFryCompleteTime(Date fryCompleteTime) { + this.fryCompleteTime = fryCompleteTime; + } + + /** + * 获取最迟售卖时间 + * + * @return latest_sale_time - 最迟售卖时间 + */ + public Date getLatestSaleTime() { + return latestSaleTime; + } + + /** + * 设置最迟售卖时间 + * + * @param latestSaleTime 最迟售卖时间 + */ + public void setLatestSaleTime(Date latestSaleTime) { + this.latestSaleTime = latestSaleTime; + } + + /** + * 获取当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + * + * @return current_stage - 当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + */ + public Integer getCurrentStage() { + return currentStage; + } + + /** + * 设置当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + * + * @param currentStage 当前产品阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + */ + public void setCurrentStage(Integer currentStage) { + this.currentStage = currentStage; + } + + /** + * 获取创建时间 + * + * @return created_time - 创建时间 + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置创建时间 + * + * @param createdTime 创建时间 + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取更新时间 + * + * @return updated_time - 更新时间 + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置更新时间 + * + * @param updatedTime 更新时间 + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryStageChangesDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryStageChangesDO.java new file mode 100644 index 000000000..9f3f8abe8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/PreFryStageChangesDO.java @@ -0,0 +1,219 @@ +package com.cool.store.entity; + +import java.util.Date; +import javax.persistence.*; + +@Table(name = "xfsg_pre_fry_stage_changes") +public class PreFryStageChangesDO { + /** + * 主键ID + */ + @Id + private Long id; + + /** + * 关联的预炸记录ID + */ + @Column(name = "record_id") + private Long recordId; + + /** + * 阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + */ + private Integer stage; + + /** + * 图片1 + */ + private String image1; + + /** + * 图片2 + */ + private String image2; + + /** + * 操作人名称 + */ + @Column(name = "operator_name") + private String operatorName; + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + @Column(name = "created_time") + private Date createdTime; + + /** + * 更新时间 + */ + @Column(name = "updated_time") + private Date updatedTime; + + /** + * 获取主键ID + * + * @return id - 主键ID + */ + public Long getId() { + return id; + } + + /** + * 设置主键ID + * + * @param id 主键ID + */ + public void setId(Long id) { + this.id = id; + } + + /** + * 获取关联的预炸记录ID + * + * @return record_id - 关联的预炸记录ID + */ + public Long getRecordId() { + return recordId; + } + + /** + * 设置关联的预炸记录ID + * + * @param recordId 关联的预炸记录ID + */ + public void setRecordId(Long recordId) { + this.recordId = recordId; + } + + /** + * 获取阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + * + * @return stage - 阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + */ + public Integer getStage() { + return stage; + } + + /** + * 设置阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + * + * @param stage 阶段:1-预炸完成,2-存入展示柜,3-放入冰箱,4-次日拿出,5-报废 + */ + public void setStage(Integer stage) { + this.stage = stage; + } + + /** + * 获取图片1 + * + * @return image1 - 图片1 + */ + public String getImage1() { + return image1; + } + + /** + * 设置图片1 + * + * @param image1 图片1 + */ + public void setImage1(String image1) { + this.image1 = image1; + } + + /** + * 获取图片2 + * + * @return image2 - 图片2 + */ + public String getImage2() { + return image2; + } + + /** + * 设置图片2 + * + * @param image2 图片2 + */ + public void setImage2(String image2) { + this.image2 = image2; + } + + /** + * 获取操作人名称 + * + * @return operator_name - 操作人名称 + */ + public String getOperatorName() { + return operatorName; + } + + /** + * 设置操作人名称 + * + * @param operatorName 操作人名称 + */ + public void setOperatorName(String operatorName) { + this.operatorName = operatorName; + } + + /** + * 获取备注 + * + * @return remark - 备注 + */ + public String getRemark() { + return remark; + } + + /** + * 设置备注 + * + * @param remark 备注 + */ + public void setRemark(String remark) { + this.remark = remark; + } + + /** + * 获取创建时间 + * + * @return created_time - 创建时间 + */ + public Date getCreatedTime() { + return createdTime; + } + + /** + * 设置创建时间 + * + * @param createdTime 创建时间 + */ + public void setCreatedTime(Date createdTime) { + this.createdTime = createdTime; + } + + /** + * 获取更新时间 + * + * @return updated_time - 更新时间 + */ + public Date getUpdatedTime() { + return updatedTime; + } + + /** + * 设置更新时间 + * + * @param updatedTime 更新时间 + */ + public void setUpdatedTime(Date updatedTime) { + this.updatedTime = updatedTime; + } +} \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PreFriedProductsService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PreFriedProductsService.java new file mode 100644 index 000000000..7c7013803 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PreFriedProductsService.java @@ -0,0 +1,67 @@ +package com.cool.store.service; + +import com.cool.store.dto.pre.fry.PreFriedProductsBatchDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsDetailDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsQueryDTO; +import com.cool.store.entity.PreFriedProductsDO; +import com.github.pagehelper.PageInfo; + + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:47 + * @Version 1.0 + */ +public interface PreFriedProductsService { + + /** + * 新增产品 + * @param dto 产品信息 + * @return 产品ID + */ + Long createProduct(PreFriedProductsDTO dto, String userId); + + /** + * 修改产品 + * @param dto + * @param userId + * @return + */ + Long updateProduct(PreFriedProductsDTO dto, String userId); + + /** + * 批量删除(逻辑删除) + * @param batchDTO 包含ID列表和操作人 + * @return 成功数量 + */ + int batchDelete(PreFriedProductsBatchDTO batchDTO, String userId); + + /** + * 批量上下架 + * @param batchDTO 包含ID列表、目标状态和操作人 + * @return 成功数量 + */ + int batchUpdateStatus(PreFriedProductsBatchDTO batchDTO, String userId); + + /** + * 条件查询产品列表 + * @param queryDTO 查询条件 + * @return 产品列表 + */ + PageInfo queryProducts(PreFriedProductsQueryDTO queryDTO); + + /** + * 根据ID查询详情 + * @param id + * @return + */ + PreFriedProductsDetailDTO queryById(Long id); + + + + + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PreFryQualificationApplyService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PreFryQualificationApplyService.java new file mode 100644 index 000000000..1ce7d540b --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PreFryQualificationApplyService.java @@ -0,0 +1,89 @@ +package com.cool.store.service; + +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.entity.PreFryQualificationApplyDO; +import com.cool.store.userholder.CurrentUser; +import com.cool.store.vo.PartnerUserInfoVO; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/21 14:49 + * @Version 1.0 + */ +public interface PreFryQualificationApplyService { + + /** + * 提交预炸资质申请 + * @param request + * @param user + * @return + */ + Long submitApply(ApplyDTO request, PartnerUserInfoVO user); + + /** + * 重新提交预炸资质申请 + * @param request + * @param user + * @return + */ + Long reSubmitApply(ApplyDTO request, PartnerUserInfoVO user); + + /** + * 根据门店编码和申请类型查询 + * @param storeCode + * @param applyType + * @return + */ + ApplyDTO getByStoreCodeAndApplyType(String storeCode, Integer applyType); + + /** + * 根据申请记录id查询审批记录 + * @param recordId + * @return + */ + List getApprovalRecordById(Long recordId); + + /** + * 管理页面列表 + * @param query + * @return + */ + PageInfo queryApplyManagementList(ApplyManagementQueryDTO query); + + /** + * 获取申请详情 + * @param id + * @return + */ + ApplyDetailDTO getApplyDetail(Long id); + + /** + * audit + * @param applyAuditDTO + * @param currentUser + * @return + */ + Boolean audit(ApplyAuditDTO applyAuditDTO, LoginUserInfo currentUser); + + /** + * 获取门店申请最小的applyType + * @param storeCode + * @return + */ + Integer getMinApplyType(String storeCode); + + /** + * 根据门店查询当前申请类型状态 + * @param storeCode + * @return + */ + List getListByStoreCode(String storeCode); + + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PreFryRecordsService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PreFryRecordsService.java new file mode 100644 index 000000000..e27131478 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PreFryRecordsService.java @@ -0,0 +1,35 @@ +package com.cool.store.service; + +import com.cool.store.dto.pre.fry.*; +import com.cool.store.vo.PartnerUserInfoVO; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/23 14:39 + * @Version 1.0 + */ +public interface PreFryRecordsService { + + + /** + * 批量插入 + * @param addPreFryRecordsDTO + * @return + */ + Boolean batchInsert(AddPreFryRecordsDTO addPreFryRecordsDTO, PartnerUserInfoVO user); + + + PageInfo ListByStoreCodeAndDate(FryRecordsQueryDTO dto); + + PreFryRecordsDetailDTO getById(Long id); + + List queryByStoreCode(String storeCode, Long time); + + PageInfo queryByQueryDTO(PreFryRecordQueryDTO dto); + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFriedProductsServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFriedProductsServiceImpl.java new file mode 100644 index 000000000..293592af6 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFriedProductsServiceImpl.java @@ -0,0 +1,141 @@ +package com.cool.store.service.impl; + +import com.cool.store.dao.PreFriedProductsDAO; +import com.cool.store.dto.pre.fry.PreFriedProductsBatchDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsDetailDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsQueryDTO; +import com.cool.store.entity.PreFriedProductsDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.mapper.PreFriedProductsMapper; +import com.cool.store.service.PreFriedProductsService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author suzhuhong + * @Date 2025/6/20 19:47 + * @Version 1.0 + */ +@Service +public class PreFriedProductsServiceImpl implements PreFriedProductsService { + @Resource + private PreFriedProductsDAO preFriedProductsDAO; + + @Override + public Long createProduct(PreFriedProductsDTO dto, String userId) { + if (dto==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + PreFriedProductsDO preFriedProductsDO = preFriedProductsDAO.queryByProductCode(dto.getProductCode()); + if (preFriedProductsDO!=null){ + throw new ServiceException(ErrorCodeEnum.PRODUCTS_CODE_EXIST); + } + PreFriedProductsDO product = convertToDO(dto); + product.setCreatedTime(new Date()); + product.setCreatedUserId(userId); + preFriedProductsDAO.createProduct(product); + return product.getId(); + } + + @Override + public Long updateProduct(PreFriedProductsDTO dto, String userId) { + if (dto==null||dto.getId() == null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + PreFriedProductsDO preFriedProductsDO = preFriedProductsDAO.queryByProductCode(dto.getProductCode()); + if (preFriedProductsDO!=null && !preFriedProductsDO.getId().equals(dto.getId())){ + throw new ServiceException(ErrorCodeEnum.PRODUCTS_CODE_EXIST); + } + PreFriedProductsDO product = convertToDO(dto); + product.setUpdatedTime(new Date()); + product.setUpdatedUserId(userId); + preFriedProductsDAO.updateProduct( product); + return product.getId(); + } + + @Override + public int batchDelete(PreFriedProductsBatchDTO batchDTO, String userId) { + validateBatchOperation(batchDTO); + return preFriedProductsDAO.batchDeleteProducts(batchDTO.getIds(), userId); + } + + @Override + public int batchUpdateStatus(PreFriedProductsBatchDTO batchDTO, String userId) { + validateBatchOperation(batchDTO); + if (batchDTO.getStatus() == null || (batchDTO.getStatus() != 0 && batchDTO.getStatus() != 1)) { + throw new IllegalArgumentException("状态值必须为0或1"); + } + return preFriedProductsDAO.batchUpdateProductStatus( + batchDTO.getIds(), + batchDTO.getStatus(), + userId + ); + } + + @Override + public PageInfo queryProducts(PreFriedProductsQueryDTO queryDTO) { + PageHelper.startPage(queryDTO.getPageNum(),queryDTO.getPageSize()); + List dos = preFriedProductsDAO.selectByCondition( + queryDTO.getProductCode(), + queryDTO.getProductName(), + queryDTO.getStatus() + ); + PageInfo preFriedProductsDOPageInfo = new PageInfo<>(dos); + List preFriedProductsDTOS = convertToDTOs(dos); + preFriedProductsDOPageInfo.setList(preFriedProductsDTOS); + return preFriedProductsDOPageInfo; + } + + @Override + public PreFriedProductsDetailDTO queryById(Long id) { + //查询详情 + PreFriedProductsDO product = preFriedProductsDAO.queryById(id); + if (product == null){ + throw new ServiceException(ErrorCodeEnum.PRE_FRY_PRODUCT_NOT_EXIST); + } + return convertToDTO(product); + } + + + /** + * 转换方法 + * @param dto + * @return + */ + private PreFriedProductsDO convertToDO(PreFriedProductsDTO dto) { + PreFriedProductsDO product = new PreFriedProductsDO(); + BeanUtils.copyProperties(dto, product); + return product; + } + + private List convertToDTOs(List dos) { + return dos.stream().map(this::convertToDTO).collect(Collectors.toList()); + } + + private PreFriedProductsDetailDTO convertToDTO(PreFriedProductsDO product) { + if (product != null) { + PreFriedProductsDetailDTO dto = new PreFriedProductsDetailDTO(); + BeanUtils.copyProperties(product, dto); + return dto; + } else { + return null; + } + } + + private void validateBatchOperation(PreFriedProductsBatchDTO batchDTO) { + if (batchDTO.getIds() == null || batchDTO.getIds().isEmpty()) { + throw new IllegalArgumentException("ID列表不能为空"); + } + } + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryQualificationApplyServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryQualificationApplyServiceImpl.java new file mode 100644 index 000000000..9bcde9eb6 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryQualificationApplyServiceImpl.java @@ -0,0 +1,221 @@ +package com.cool.store.service.impl; + +import com.cool.store.constants.CommonConstants; +import com.cool.store.context.LoginUserInfo; +import com.cool.store.dao.PreFryApprovalRecordsDAO; +import com.cool.store.dao.PreFryQualificationApplyDAO; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.entity.PreFryApprovalRecordsDO; +import com.cool.store.entity.PreFryQualificationApplyDO; +import com.cool.store.enums.AuditOperationTypeEnum; +import com.cool.store.enums.AuditStatusEnum; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.service.PreFryQualificationApplyService; +import com.cool.store.userholder.CurrentUser; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.vo.PartnerUserInfoVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + +/** + * @Author suzhuhong + * @Date 2025/6/21 14:49 + * @Version 1.0 + */ +@Service +public class PreFryQualificationApplyServiceImpl implements PreFryQualificationApplyService { + + @Resource + private PreFryQualificationApplyDAO preFryQualificationApplyDAO; + @Resource + private PreFryApprovalRecordsDAO preFryApprovalRecordsDAO; + + + @Override + public Long submitApply(ApplyDTO request, PartnerUserInfoVO user) { + // 1. 参数校验 + validateRequest(request); + + + // 2. 检查是否已有同类型申请 + PreFryQualificationApplyDO preFryQualificationApplyDO = preFryQualificationApplyDAO.selectByStoreCodeAndType(request.getStoreCode(), request.getApplyType()); + if(preFryQualificationApplyDO!=null){ + throw new ServiceException(ErrorCodeEnum.PRE_FRY_RECORD_EXIST); + } + + // 3. 创建申请记录 + PreFryQualificationApplyDO apply = createApplyRecord(request,user); + + // 4. 创建审批操作记录 + createApprovalRecord(apply.getId(), AuditOperationTypeEnum.APPLY.getCode(),1, user.getUsername(),""); + + return apply.getId(); + } + + @Override + public Long reSubmitApply(ApplyDTO request, PartnerUserInfoVO user) { + // 1. 参数校验 + validateRequest(request); + // 2. 检查是否已有同类型申请 + PreFryQualificationApplyDO preFryQualificationApplyDO = preFryQualificationApplyDAO.selectByStoreCodeAndType(request.getStoreCode(), request.getApplyType()); + if(preFryQualificationApplyDO!=null&& !preFryQualificationApplyDO.getId().equals(request.getId())){ + throw new ServiceException(ErrorCodeEnum.PRE_FRY_RECORD_EXIST); + } + // 3. 创建申请记录 + PreFryQualificationApplyDO old = preFryQualificationApplyDAO.queryById(request.getId()); + old.setApplyType(request.getApplyType()); + old.setColdStorageBoxPhoto(request.getColdStorageBoxPhoto()); + old.setProtectiveCoverPhoto(request.getProtectiveCoverPhoto()); + old.setRefrigeratorPlatePhoto(request.getRefrigeratorPlatePhoto()); + old.setRefrigeratorPhoto(request.getRefrigeratorPhoto()); + old.setAuditStatus(AuditStatusEnum.TODO.getCode()); + old.setUpdatedTime(new Date()); + + preFryQualificationApplyDAO.updateForce(old); + // 4. 创建审批操作记录 + createApprovalRecord(old.getId(), AuditOperationTypeEnum.APPLY.getCode(),1, user.getUsername(),""); + + return old.getId(); + } + + + @Override + public ApplyDTO getByStoreCodeAndApplyType(String storeCode, Integer applyType) { + if (applyType == null|| StringUtils.isEmpty(storeCode)){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + PreFryQualificationApplyDO preFryQualificationApplyDO = preFryQualificationApplyDAO.selectByStoreCodeAndType(storeCode, applyType); + if (preFryQualificationApplyDO != null) { + ApplyDTO applyDTO = new ApplyDTO(); + BeanUtils.copyProperties(preFryQualificationApplyDO, applyDTO); + return applyDTO; + } + return null; + } + + @Override + public List getApprovalRecordById(Long recordId) { + if (recordId == null) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + List records = preFryApprovalRecordsDAO.getRecordsByApplyId(recordId); + List result = new ArrayList<>(); + if (records != null){ + records.forEach(record -> { + ApprovalRecordDTO recordDTO = new ApprovalRecordDTO(); + BeanUtils.copyProperties(record, recordDTO); + result.add(recordDTO); + }); + } + return result; + } + + @Override + public PageInfo queryApplyManagementList(ApplyManagementQueryDTO query) { + PageHelper.startPage(query.getPageNum(), query.getPageSize()); + List applyManagementDTOS = preFryQualificationApplyDAO.selectApplyManagementList(query); + return new PageInfo<>(applyManagementDTOS); + } + + @Override + public ApplyDetailDTO getApplyDetail(Long id) { + ApplyDetailDTO applyDetail = preFryQualificationApplyDAO.getApplyDetail(id); + if (applyDetail==null){ + throw new ServiceException(ErrorCodeEnum.PRE_FRY_APPLY_NOT_EXIST); + } + return applyDetail; + } + + @Override + public Boolean audit(ApplyAuditDTO applyAuditDTO, LoginUserInfo currentUser) { + PreFryQualificationApplyDO preFryQualificationApplyDO = preFryQualificationApplyDAO.queryById(applyAuditDTO.getId()); + if (preFryQualificationApplyDO==null){ + throw new ServiceException(ErrorCodeEnum.PRE_FRY_APPLY_NOT_EXIST); + } + preFryQualificationApplyDO.setAuditStatus(applyAuditDTO.getAuditStatus()); + preFryQualificationApplyDAO.updateForce(preFryQualificationApplyDO); + createApprovalRecord(applyAuditDTO.getId(), 2,applyAuditDTO.getAuditStatus(),currentUser.getName(),applyAuditDTO.getAuditRemark()); + return Boolean.TRUE; + } + + @Override + public Integer getMinApplyType(String storeCode) { + PreFryQualificationApplyDO minApplyTypeByStoreCode = preFryQualificationApplyDAO.getMinApplyTypeByStoreCode(storeCode); + if (minApplyTypeByStoreCode == null){ + return -1; + } + return minApplyTypeByStoreCode.getApplyType(); + } + + @Override + public List getListByStoreCode(String storeCode) { + if (StringUtils.isBlank(storeCode)) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + List preFryQualificationApplyDOS = preFryQualificationApplyDAO.listByStoreCode(storeCode); + List preFryQualificationApplyDTOS = new ArrayList<>(); + preFryQualificationApplyDOS.forEach(x->{ + PreFryQualificationApplyDTO preFryQualificationApplyDTO = new PreFryQualificationApplyDTO(); + preFryQualificationApplyDTO.setId(x.getId()); + preFryQualificationApplyDTO.setApplyType(x.getApplyType()); + preFryQualificationApplyDTO.setAuditStatus(x.getAuditStatus()); + preFryQualificationApplyDTO.setStoreCode(x.getStoreCode()); + preFryQualificationApplyDTOS.add(preFryQualificationApplyDTO); + }); + return preFryQualificationApplyDTOS; + } + + + private void validateRequest(ApplyDTO request) { + if (request == null || StringUtils.isBlank(request.getStoreCode()) + || request.getApplyType() == null) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + } + + private PreFryQualificationApplyDO createApplyRecord(ApplyDTO request,PartnerUserInfoVO user) { + PreFryQualificationApplyDO apply = new PreFryQualificationApplyDO(); + BeanUtils.copyProperties(request, apply); + apply.setAuditStatus(AuditStatusEnum.TODO.getCode()); + apply.setCreatedTime(new Date()); + apply.setCreatedUserId(user.getPartnerId()); + apply.setApplyCode(getPreFlyQualificationApplyCode()); + preFryQualificationApplyDAO.createQualificationApply(apply); + return apply; + } + + private void createApprovalRecord(Long applyId, Integer recordType,Integer operationStatus,String userName,String remark) { + PreFryApprovalRecordsDO record = new PreFryApprovalRecordsDO(); + record.setApplyId(applyId); + record.setRecordType(recordType); + record.setOperationStatus(operationStatus); + record.setOperatorName(userName); + record.setRemark(remark); + record.setCreatedTime(new Date()); + preFryApprovalRecordsDAO.createApprovalRecord(record); + } + + public String getPreFlyQualificationApplyCode() { + //当前日期 + String today = CoolDateUtils.getToday(); + return "13" + today + String.format("%04d", ThreadLocalRandom.current().nextInt(100000)); + } + + + + + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryRecordsServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryRecordsServiceImpl.java new file mode 100644 index 000000000..162893862 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryRecordsServiceImpl.java @@ -0,0 +1,325 @@ +package com.cool.store.service.impl; + +import com.cool.store.dao.*; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.entity.*; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.enums.PreFryApplyTypeEnum; +import com.cool.store.enums.PreFryStageEnum; +import com.cool.store.enums.ViolationEnum; +import com.cool.store.exception.ServiceException; +import com.cool.store.service.PreFryRecordsService; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.utils.poi.DateUtils; +import com.cool.store.vo.PartnerUserInfoVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.ThreadLocalRandom; +import java.util.stream.Collectors; + +import static com.cool.store.enums.PreFryStageEnum.*; + +/** + * @Author suzhuhong + * @Date 2025/6/23 14:39 + * @Version 1.0 + */ +@Service +public class PreFryRecordsServiceImpl implements PreFryRecordsService { + + + @Resource + PreFryRecordsDAO preFryRecordsDAO; + + @Resource + PreFryStageChangesDAO preFryStageChangesDAO; + @Resource + PreFryQualificationApplyDAO preFryQualificationApplyDAO; + @Resource + PreFriedProductsDAO preFriedProductsDAO; + + + @Override + public Boolean batchInsert(AddPreFryRecordsDTO addPreFryRecordsDTO, PartnerUserInfoVO user) { + if (CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())|| CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + //查询门店当前最高优先级申请类型 + PreFryQualificationApplyDO minApplyTypeByStoreCode = preFryQualificationApplyDAO.getMinApplyTypeByStoreCode(addPreFryRecordsDTO.getStoreCode()); + if (minApplyTypeByStoreCode==null){ + throw new ServiceException(ErrorCodeEnum.PRE_FRY_APPLY_NOT_EXIST); + } + if (addPreFryRecordsDTO!=null&&CollectionUtils.isNotEmpty(addPreFryRecordsDTO.getRecords())){ + List productList = addPreFryRecordsDTO.getRecords().stream().map(AddPreFryRecordsDetailDTO::getProductId).collect(Collectors.toList()); + List preFriedProductsDOS = preFriedProductsDAO.selectByProductIds(productList); + //校验是否包含下架的产品 recordId是空的时候是新增 是有新增的时候限制 + if (preFriedProductsDOS.stream().anyMatch(e->e.getStatus()==0)&&addPreFryRecordsDTO.getRecords().get(0).getRecordId()==null){ + throw new ServiceException(ErrorCodeEnum.PRODUCTS_STATUS); + } + } + + + //如果出现优先级升高的情况 优先级低的只有报废可选择 1的优先级最高 3最低 + if (minApplyTypeByStoreCode.getApplyType() list = new ArrayList<>(); + if (addPreFryRecordsFlag(minApplyTypeByStoreCode.getApplyType(), addPreFryRecordsDTO.getCurrentStage())){ + addPreFryRecordsDTO.getRecords().forEach(x->{ + if (x.getProductId()==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + PreFryRecordsDO preFryRecordsDO = new PreFryRecordsDO(); + preFryRecordsDO.setStoreCode(addPreFryRecordsDTO.getStoreCode()); + preFryRecordsDO.setProductId(x.getProductId()); + preFryRecordsDO.setFryDate(new Date()); + preFryRecordsDO.setRecordCode(getRecordCode()); + preFryRecordsDO.setFryCompleteTime(new Date()); + preFryRecordsDO.setLatestSaleTime(getLatestSaleTime(minApplyTypeByStoreCode.getApplyType())); + preFryRecordsDO.setCurrentStage(addPreFryRecordsDTO.getCurrentStage()); + preFryRecordsDO.setCurrentApplyType(minApplyTypeByStoreCode.getApplyType()); + preFryRecordsDAO.insert(preFryRecordsDO); + PreFryStageChangesDO preFryStageChangesDO = new PreFryStageChangesDO(); + preFryStageChangesDO.setStage(preFryRecordsDO.getCurrentStage()); + preFryStageChangesDO.setRecordId(preFryRecordsDO.getId()); + preFryStageChangesDO.setImage1(x.getImage1()); + preFryStageChangesDO.setImage2(x.getImage2()); + preFryStageChangesDO.setOperatorName(user.getUsername()); + list.add(preFryStageChangesDO); + }); + }else { + List recordList= new ArrayList<>(); + addPreFryRecordsDTO.getRecords().forEach(x->{ + if (x.getRecordId()==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + PreFryStageChangesDO preFryStageChangesDO = new PreFryStageChangesDO(); + preFryStageChangesDO.setStage(addPreFryRecordsDTO.getCurrentStage()); + preFryStageChangesDO.setRecordId(x.getRecordId()); + preFryStageChangesDO.setImage1(x.getImage1()); + preFryStageChangesDO.setImage2(x.getImage2()); + preFryStageChangesDO.setOperatorName(user.getUsername()); + preFryStageChangesDO.setCreatedTime(new Date()); + recordList.add(x.getRecordId()); + list.add(preFryStageChangesDO); + }); + preFryRecordsDAO.batchUpdateStageByIds(recordList,addPreFryRecordsDTO.getCurrentStage()); + handleViolationFlag(recordList,addPreFryRecordsDTO.getApplyType(),addPreFryRecordsDTO.getCurrentStage(),list); + } + preFryStageChangesDAO.batchInsert(list); + return Boolean.TRUE; + } + + + private void handleViolationFlag(List recordList ,Integer applyType,Integer currentStage,List list) { + //如果最高级优先级是冷藏展示柜 计算是否违规 冷却时间小于15分钟或者大于25分钟 违规 冰箱取出时间距离预炸完成时间超过24小时 + if (PreFryApplyTypeEnum.HAS_REFRIGERATED_DISPLAY.getCode()==applyType&& + (STORED_IN_DISPLAY_CABINET.getCode()==currentStage||STORED_IN_FRIDGE.getCode()==currentStage)){ + List records = preFryRecordsDAO.queryByIds(recordList); + Map recordMap = records.stream().collect(Collectors.toMap(PreFryRecordsDO::getId, data->data)); + //list 转为 map 记录id与创建时间 + Map listMap = list.stream().collect(Collectors.toMap(PreFryStageChangesDO::getRecordId, PreFryStageChangesDO::getCreatedTime)); + List violationList = new ArrayList<>(); + if (STORED_IN_DISPLAY_CABINET.getCode()==currentStage){ + recordList.forEach(x->{ + PreFryRecordsDO preFryRecordsDO = recordMap.get(x); + Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x)); + if (time!=null&&(time<15||time>25)){ + ViolationDTO violationDTO = new ViolationDTO(); + violationDTO.setId(x); + violationDTO.setViolationFlag(ViolationEnum.COOLING_TIME_EXCEEDED.getCode()); + violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.COOLING_TIME_EXCEEDED.getCode())); + violationList.add(violationDTO); + } + }); + }else if (STORED_IN_FRIDGE.getCode()==currentStage){ + recordList.forEach(x->{ + PreFryRecordsDO preFryRecordsDO = recordMap.get(x); + Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x)); + if (time!=null&&time>24*60){ + ViolationDTO violationDTO = new ViolationDTO(); + violationDTO.setId(x); + violationDTO.setViolationFlag(ViolationEnum.STORAGE_TIME_EXCEEDED.getCode()); + if (StringUtils.isEmpty(preFryRecordsDO.getViolationReason())){ + violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.STORAGE_TIME_EXCEEDED.getCode())); + }else { + violationDTO.setViolationReason(preFryRecordsDO.getViolationReason()+String.format("%d,", ViolationEnum.STORAGE_TIME_EXCEEDED.getCode())); + } + violationList.add(violationDTO); + } + + }); + } + if (!violationList.isEmpty()) { + preFryRecordsDAO.batchUpdateViolation(violationList); + } + } + + } + + private Long getTime(Date startTime,Date endTime){ + if (startTime==null||endTime==null){ + return null; + } + return CoolDateUtils.getMinutesBetween(startTime,endTime); + } + + + @Override + public PageInfo ListByStoreCodeAndDate(FryRecordsQueryDTO dto) { + PageHelper.startPage(dto.getPageNum(),dto.getPageSize()); + if (dto.getCurrentDate()==null|| StringUtils.isBlank(dto.getStoreCode())){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + List preFryRecordsDOS = preFryRecordsDAO.selectByStoreAndDateStage(dto.getStoreCode(),dto.getApplyType(), DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,dto.getCurrentDate())); + PageInfo result = new PageInfo<>(preFryRecordsDOS); + if (CollectionUtils.isEmpty(preFryRecordsDOS)){ + return result; + } + List recordIdList = preFryRecordsDOS.stream().map(PreFryRecordsDO::getId).collect(Collectors.toList()); + List stageImagesDTOS = preFryStageChangesDAO.selectByRecordIdList(recordIdList); + List productIdList = preFryRecordsDOS.stream().map(PreFryRecordsDO::getProductId).collect(Collectors.toList()); + List preFriedProductsDOS = preFriedProductsDAO.selectByProductIds(productIdList); + Map preFriedProductsDOSMap = preFriedProductsDOS.stream().collect(Collectors.toMap(PreFriedProductsDO::getId, x -> x)); + //将数据根据recordId分组 并根据id排序 + Map> stageImagesDTOMap = + stageImagesDTOS.stream().collect(Collectors.groupingBy(PreFryStageImagesDTO::getRecordId)); + List list = new ArrayList<>(); + preFryRecordsDOS.forEach(x->{ + PreFryRecordsDetailDTO preFryRecordsDetailDTO = new PreFryRecordsDetailDTO(); + preFryRecordsDetailDTO.setId(x.getId()); + preFryRecordsDetailDTO.setStoreCode(x.getStoreCode()); + preFryRecordsDetailDTO.setProductId(x.getProductId()); + preFryRecordsDetailDTO.setProductCode(preFriedProductsDOSMap.getOrDefault(x.getProductId(),new PreFriedProductsDO()).getProductCode()); + preFryRecordsDetailDTO.setProductName(preFriedProductsDOSMap.getOrDefault(x.getProductId(),new PreFriedProductsDO()).getProductName()); + preFryRecordsDetailDTO.setProductImageUrl(preFriedProductsDOSMap.getOrDefault(x.getProductId(),new PreFriedProductsDO()).getProductImage()); + preFryRecordsDetailDTO.setFryCompleteTime(x.getFryCompleteTime()); + preFryRecordsDetailDTO.setLatestSaleTime(x.getLatestSaleTime()); + preFryRecordsDetailDTO.setCurrentStage(x.getCurrentStage()); + preFryRecordsDetailDTO.setCurrentApplyType(x.getCurrentApplyType()); + preFryRecordsDetailDTO.setStageHistory(stageImagesDTOMap.getOrDefault(x.getId(),new ArrayList<>())); + list.add(preFryRecordsDetailDTO); + }); + result.setList( list); + return result; + } + + @Resource + StoreDao storeDao; + + @Override + public PreFryRecordsDetailDTO getById(Long id) { + PreFryRecordsDO preFryRecordsDO = preFryRecordsDAO.queryById(id); + if (preFryRecordsDO == null) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + List preFryStageImagesDTOS = preFryStageChangesDAO.selectByRecordId(id); + PreFriedProductsDO preFriedProductsDO = preFriedProductsDAO.queryById(preFryRecordsDO.getProductId()); + StoreDO store = storeDao.getByStoreNum(preFryRecordsDO.getStoreCode()); + PreFryRecordsDetailDTO preFryRecordsDetailDTO = new PreFryRecordsDetailDTO(); + if (store != null) { + preFryRecordsDetailDTO.setStoreName(store.getStoreName()); + } + preFryRecordsDetailDTO.setId(preFryRecordsDO.getId()); + preFryRecordsDetailDTO.setStoreCode(preFryRecordsDO.getStoreCode()); + preFryRecordsDetailDTO.setProductId(preFryRecordsDO.getProductId()); + preFryRecordsDetailDTO.setRecordCode(preFryRecordsDO.getRecordCode()); + if (preFriedProductsDO!=null){ + preFryRecordsDetailDTO.setProductName(preFriedProductsDO.getProductName()); + preFryRecordsDetailDTO.setProductImageUrl(preFriedProductsDO.getProductImage()); + preFryRecordsDetailDTO.setProductCode(preFriedProductsDO.getProductCode()); + } + preFryRecordsDetailDTO.setFryCompleteTime(preFryRecordsDO.getFryCompleteTime()); + preFryRecordsDetailDTO.setLatestSaleTime(preFryRecordsDO.getLatestSaleTime()); + preFryRecordsDetailDTO.setCurrentStage(preFryRecordsDO.getCurrentStage()); + preFryRecordsDetailDTO.setCurrentApplyType(preFryRecordsDO.getCurrentApplyType()); + preFryRecordsDetailDTO.setViolationFlag(preFryRecordsDO.getViolationFlag()); + preFryRecordsDetailDTO.setViolationReason(getViolationReasonChinese(preFryRecordsDO.getViolationReason())); + preFryRecordsDetailDTO.setStageHistory(preFryStageImagesDTOS); + return preFryRecordsDetailDTO; + } + + + @Override + public List queryByStoreCode(String storeCode,Long time) { + return preFryRecordsDAO.selectDailyFryCountInCurrentMonth(storeCode, time); + } + + @Override + public PageInfo queryByQueryDTO(PreFryRecordQueryDTO dto) { + PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); + List preFryRecordQueryDTOS = preFryRecordsDAO.selectByQueryDTO(dto); + preFryRecordQueryDTOS.forEach(x->{ + x.setViolationReason(getViolationReasonChinese(x.getViolationReason())); + }); + PageInfo preFryRecordQueryDTOPageInfo = new PageInfo<>(preFryRecordQueryDTOS); + return preFryRecordQueryDTOPageInfo; + } + + + private Boolean addPreFryRecordsFlag(Integer applyType,Integer stage){ + if (applyType== PreFryApplyTypeEnum.HAS_REFRIGERATED_DISPLAY.getCode() && stage== PRE_FRY_COMPLETED.getCode()){ + return Boolean.TRUE; + }else if (applyType == PreFryApplyTypeEnum.NO_DISPLAY.getCode() && stage== PRE_FRY_COMPLETED.getCode()){ + return Boolean.TRUE; + } + if (applyType==PreFryApplyTypeEnum.HAS_NORMAL_DISPLAY.getCode() && stage== STORED_IN_DISPLAY_CABINET.getCode()){ + return Boolean.TRUE; + } + return Boolean.FALSE; + } + + private Date getLatestSaleTime(Integer applyType) { + Calendar calendar = Calendar.getInstance(); + if (applyType == PreFryApplyTypeEnum.HAS_REFRIGERATED_DISPLAY.getCode()) { + // 冷藏展示柜加24小时 + calendar.add(Calendar.HOUR_OF_DAY, 24); + } else { + // 常温展示柜或无展示柜加4小时 + calendar.add(Calendar.HOUR_OF_DAY, 4); + } + return calendar.getTime(); + } + + public String getRecordCode() { + //当前日期 + String today = CoolDateUtils.getToday(); + return "14" + today + String.format("%04d", ThreadLocalRandom.current().nextInt(100000)); + } + + /** + * 根据违规原因字符串获取中文描述 + * @param violationReason 违规原因字符串,格式如 ",1,2,"、",1," 或 ",2," + * @return 格式化后的中文违规原因,如 "冷却时间超标,存储时间超标" + */ + public String getViolationReasonChinese(String violationReason) { + if (StringUtils.isBlank(violationReason)) { + return ""; + } + + // 分割字符串并过滤有效数字 + List reasonCodes = Arrays.stream(violationReason.split(",")) + .filter(StringUtils::isNotBlank) + .map(String::trim) + .map(Integer::valueOf) + .collect(Collectors.toList()); + + // 转换为中文描述 + return reasonCodes.stream() + .map(code -> ViolationEnum.getByCode(code)) + .filter(Objects::nonNull) + .map(ViolationEnum::getDescription) + .collect(Collectors.joining(",")); + } + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java index 28c0255ae..861a9166b 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/DateUtils.java @@ -203,9 +203,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { * @param millis 毫秒数 * @return 时间 */ - public static String getDateByMillis(long millis) { + public static String getDateByMillis(long millis,String format) { //12小时制 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); Date date = new Date(); date.setTime(millis); return simpleDateFormat.format(date); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java b/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java index aa6f81a42..7a1363747 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/config/OpenApiValidateFilter.java @@ -58,7 +58,7 @@ public class OpenApiValidateFilter implements Filter { } MDC.put(CommonConstants.REQUEST_ID, UUIDUtils.get32UUID()); //statusRefresh 放开不需要验签 - if(uri.startsWith("/zxjp/open/v1/statusRefresh")){ + if(uri.startsWith("/zxjp/open/v1/")){ filterChain.doFilter(servletRequest, response); return; } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCPreFryRecordsController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCPreFryRecordsController.java new file mode 100644 index 000000000..9506a574b --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCPreFryRecordsController.java @@ -0,0 +1,48 @@ +package com.cool.store.controller.webb; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.PreFryRecordsService; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2025/6/23 20:36 + * @Version 1.0 + */ +@Slf4j +@Api(tags = "预炸-预炸记录-PC") +@RestController +@RequestMapping("/pc/pre/record/") +public class PCPreFryRecordsController { + + + @Resource + PreFryRecordsService preFryRecordsService; + + + @ApiOperation("预炸品管理记录") + @PostMapping("/queryByQueryDTO") + public ResponseResult> queryByQueryDTO(@RequestBody @Validated PreFryRecordQueryDTO dto) { + log.info("预炸品管理记录:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryRecordsService.queryByQueryDTO(dto)); + } + + @ApiOperation("预炸记录详情列表") + @GetMapping("/queryById") + public ResponseResult queryById(@RequestParam(required = true, value = "id") Long id) { + log.info("预炸记录详情:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryRecordsService.getById(id)); + } + + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PreFryController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PreFryController.java new file mode 100644 index 000000000..9bc9651ce --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PreFryController.java @@ -0,0 +1,83 @@ +package com.cool.store.controller.webb; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.dto.pre.fry.PreFriedProductsBatchDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsDetailDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsQueryDTO; +import com.cool.store.request.AddPointDetailRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.PreFriedProductsService; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2025/6/21 13:19 + * @Version 1.0 + */ +@Slf4j +@Api(tags = "预炸") +@RestController +@RequestMapping("/pc/pre/fry/") +public class PreFryController { + + @Resource + PreFriedProductsService preFriedProductsService; + + @ApiOperation("新增预炸品") + @PostMapping("/add") + public ResponseResult createProduct(@RequestBody @Validated PreFriedProductsDTO dto) { + log.info("新增预炸品:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFriedProductsService.createProduct( dto, CurrentUserHolder.getUser().getUserId())); + } + + @ApiOperation("修改预炸品") + @PostMapping("/update") + public ResponseResult updateProduct(@RequestBody @Validated PreFriedProductsDTO dto) { + log.info("修改预炸品:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFriedProductsService.updateProduct( dto, CurrentUserHolder.getUser().getUserId())); + } + + @ApiOperation("批量删除预炸品") + @PostMapping("/batchDelete") + public ResponseResult batchDelete(@RequestBody @Validated PreFriedProductsBatchDTO dto) { + log.info("批量删除预炸品:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFriedProductsService.batchDelete( dto, CurrentUserHolder.getUser().getUserId())); + } + + + @ApiOperation("批量上下架商品") + @PostMapping("/batchUpdateStatus") + public ResponseResult batchUpdateStatus(@RequestBody @Validated PreFriedProductsBatchDTO dto) { + log.info("批量删除预炸品:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFriedProductsService.batchUpdateStatus( dto, CurrentUserHolder.getUser().getUserId())); + } + + @ApiOperation("查询预炸品列表") + @PostMapping("/queryProducts") + public ResponseResult> queryProducts(@RequestBody @Validated PreFriedProductsQueryDTO dto) { + log.info("查询预炸品:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFriedProductsService.queryProducts(dto)); + } + + + @ApiOperation("查询预炸品详情") + @GetMapping("/queryById") + public ResponseResult queryById(@RequestParam(required = true, value = "productId") Long productId) { + log.info("查询预炸品:{}", JSONObject.toJSONString(productId)); + return ResponseResult.success(preFriedProductsService.queryById(productId)); + } + + + + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PreFryQualificationApplyController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PreFryQualificationApplyController.java new file mode 100644 index 000000000..4efeb6ced --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PreFryQualificationApplyController.java @@ -0,0 +1,61 @@ +package com.cool.store.controller.webb; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.PreFryQualificationApplyService; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/21 18:03 + * @Version 1.0 + */ +@Slf4j +@Api(tags = "预炸-申请") +@RestController +@RequestMapping("/pc/pre/apply/") +public class PreFryQualificationApplyController { + + @Resource + PreFryQualificationApplyService preFryQualificationApplyService; + + + @ApiOperation("预炸资质申请管理列表") + @PostMapping("/queryApplyManagementList") + public ResponseResult> queryApplyManagementList(@RequestBody @Validated ApplyManagementQueryDTO dto) { + log.info("预炸资质申请管理列表:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryQualificationApplyService.queryApplyManagementList( dto)); + } + + @ApiOperation("根据申请ID获取审批记录列表") + @GetMapping("/getApprovalRecordById") + public ResponseResult> getApprovalRecordById(@RequestParam(required = true, value = "id") Long id) { + log.info("根据申请ID获取审批记录列表:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryQualificationApplyService.getApprovalRecordById(id)); + } + + @ApiOperation("预炸资质申请详情") + @GetMapping("/getApplyDetail") + public ResponseResult getApplyDetail(@RequestParam(required = true, value = "id") Long id) { + log.info("查询预炸品:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryQualificationApplyService.getApplyDetail(id)); + } + + @ApiOperation("申请审批 取消资格") + @PostMapping("/audit") + public ResponseResult audit(@RequestBody @Validated ApplyAuditDTO dto) { + log.info("预炸资质申请管理列表:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryQualificationApplyService.audit(dto,CurrentUserHolder.getUser())); + } + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniPreFryController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniPreFryController.java new file mode 100644 index 000000000..588acf0f9 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniPreFryController.java @@ -0,0 +1,43 @@ +package com.cool.store.controller.webc; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dto.pre.fry.PreFriedProductsDetailDTO; +import com.cool.store.dto.pre.fry.PreFriedProductsQueryDTO; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.PreFriedProductsService; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @Author suzhuhong + * @Date 2025/6/21 13:38 + * @Version 1.0 + */ +@Slf4j +@Api(tags = "预炸-小程序端") +@RestController +@RequestMapping("/mini/pre/fry/") +public class MiniPreFryController { + + @Resource + PreFriedProductsService preFriedProductsService; + + + @ApiOperation("查询预炸品列表") + @PostMapping("/queryProducts") + public ResponseResult> queryProducts(@RequestBody @Validated PreFriedProductsQueryDTO dto) { + log.info("查询预炸品:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFriedProductsService.queryProducts(dto)); + } + + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniPreFryQualificationApplyController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniPreFryQualificationApplyController.java new file mode 100644 index 000000000..618743784 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniPreFryQualificationApplyController.java @@ -0,0 +1,83 @@ +package com.cool.store.controller.webc; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.PreFryQualificationApplyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/21 18:11 + * @Version 1.0 + */ +@Slf4j +@Api(tags = "预炸-申请-小程序") +@RestController +@RequestMapping("/mini/pre/apply/") +public class MiniPreFryQualificationApplyController { + + + @Resource + PreFryQualificationApplyService preFryQualificationApplyService; + + + @ApiOperation("预炸资质申请提交") + @PostMapping("/submitApply") + public ResponseResult submitApply(@RequestBody @Validated ApplyDTO dto) { + log.info("预炸资质申请提交:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryQualificationApplyService.submitApply( dto, PartnerUserHolder.getUser())); + } + + @ApiOperation("预炸资质申请重新提交") + @PostMapping("/reSubmitApply") + public ResponseResult reSubmitApply(@RequestBody @Validated ApplyDTO dto) { + log.info("预炸资质申请重新提交:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryQualificationApplyService.reSubmitApply( dto, PartnerUserHolder.getUser())); + } + + + @ApiOperation("预炸资质申请详情") + @GetMapping("/getApplyDetail") + public ResponseResult getApplyDetail(@RequestParam(required = true, value = "id") Long id) { + log.info("预炸资质申请详情:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryQualificationApplyService.getApplyDetail(id)); + } + + + @ApiOperation("根据门店编码和类型查询申请详情") + @GetMapping("/getByStoreCodeAndApplyType") + public ResponseResult getByStoreCodeAndApplyType(@RequestParam(required = true, value = "storeCode") String storeCode, + @RequestParam(required = true, value = "applyType") Integer applyType) { + return ResponseResult.success(preFryQualificationApplyService.getByStoreCodeAndApplyType(storeCode,applyType)); + } + + @ApiOperation("根据申请ID获取审批记录列表") + @GetMapping("/getApprovalRecordById") + public ResponseResult> getApprovalRecordById(@RequestParam(required = true, value = "id") Long id) { + log.info("根据申请ID获取审批记录列表:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryQualificationApplyService.getApprovalRecordById(id)); + } + + + @ApiOperation("获取门店最高优先级申请类型") + @GetMapping("/getMinApplyType") + public ResponseResult getMinApplyType(@RequestParam(required = true, value = "storeCode") String storeCode) { + return ResponseResult.success(preFryQualificationApplyService.getMinApplyType(storeCode)); + } + + @ApiOperation("根据门店编码获取申请类型审批状态") + @GetMapping("/getListByStoreCode") + public ResponseResult> getListByStoreCode(@RequestParam(required = true, value = "storeCode") String storeCode) { + return ResponseResult.success(preFryQualificationApplyService.getListByStoreCode(storeCode)); + } + +} diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/PreFryRecordsController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/PreFryRecordsController.java new file mode 100644 index 000000000..e5bdf49df --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/PreFryRecordsController.java @@ -0,0 +1,63 @@ +package com.cool.store.controller.webc; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dto.pre.fry.*; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.PreFryRecordsService; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/6/23 19:00 + * @Version 1.0 + */ +@Slf4j +@Api(tags = "预炸-预炸记录") +@RestController +@RequestMapping("/mini/pre/record/") +public class PreFryRecordsController { + + + @Resource + PreFryRecordsService preFryRecordsService; + + @ApiOperation("预炸记录-按日期查询是否有预炸记录") + @GetMapping("/queryByStoreCode") + public ResponseResult> queryByStoreCode(@RequestParam(required = true, value = "storeCode") String storeCode, + @RequestParam(required = true, value = "time") Long time) { + log.info("预炸记录-按日期查询是否有预炸记录:{}", JSONObject.toJSONString(storeCode)); + return ResponseResult.success(preFryRecordsService.queryByStoreCode(storeCode,time)); + } + + @ApiOperation("预炸记录详情列表") + @GetMapping("/queryById") + public ResponseResult queryById(@RequestParam(required = true, value = "id") Long id) { + log.info("预炸记录详情:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryRecordsService.getById(id)); + } + + + @ApiOperation("预炸批量新增") + @PostMapping("/batchAdd") + public ResponseResult batchInsert(@RequestBody @Validated AddPreFryRecordsDTO dto) { + log.info("批量新增:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryRecordsService.batchInsert(dto, PartnerUserHolder.getUser())); + } + + @ApiOperation("预炸列表 根据门店编码与日期查询") + @PostMapping("/ListByStoreCodeAndDate") + public ResponseResult> ListByStoreCodeAndDate(@RequestBody @Validated FryRecordsQueryDTO dto) { + log.info("预炸列表 根据门店编码与日期查询:{}", JSONObject.toJSONString(dto)); + return ResponseResult.success(preFryRecordsService.ListByStoreCodeAndDate(dto)); + } + +}