From eeb9bdc3ad945c545bd7b972a1267a3b4370f573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 26 Jun 2025 14:47:08 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat=EF=BC=9A=E9=94=80=E5=94=AE=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/ErrorCodeEnum.java | 3 ++ .../com/cool/store/enums/PreFryStageEnum.java | 3 +- .../com/cool/store/dao/PreFryRecordsDAO.java | 5 +++ .../store/service/PreFryRecordsService.java | 2 + .../impl/PreFryRecordsServiceImpl.java | 45 ++++++++++++++----- .../webc/PreFryRecordsController.java | 7 ++- 6 files changed, 52 insertions(+), 13 deletions(-) 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 83d6764e6..94cd9cc7b 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 @@ -283,6 +283,9 @@ public enum ErrorCodeEnum { CURRENT_STAGE_NOT_OPERATION(1511030,"当前有更优选择,请确认!",null), PRODUCTS_STATUS(1511031,"包含下架的产品,请重新选择后提交!",null), PRODUCTS_CODE_EXIST(1511032,"产品编码已存在!",null), + PRODUCTS_RECORD_NOT_EXIST(1511033,"预炸记录不存在!",null), + PRODUCTS_DISCARDED(1511034,"产品已报销,无法操作",null), + PRODUCTS_SALES_COMPLETED(1511034,"含有销售完成的产品,无法批量报销",null), ; 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 index ff51e3268..7fe1a745c 100644 --- 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 @@ -10,7 +10,8 @@ public enum PreFryStageEnum { STORED_IN_DISPLAY_CABINET(2, "存入展示柜"), STORED_IN_FRIDGE(3, "放入冰箱"), TAKEN_OUT_NEXT_DAY(4, "次日拿出"), - DISCARDED(5, "报废"); + DISCARDED(5, "报废"), + SALES_COMPLETED(6, "销售完成"); private final int code; private final String description; 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 index 1b1a6fda7..3fc961423 100644 --- 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 @@ -53,6 +53,11 @@ public class PreFryRecordsDAO { return preFryRecordsMapper.selectByPrimaryKey(id); } + + public int updateByPrimaryKeySelective(PreFryRecordsDO preFryRecordsDO) { + return preFryRecordsMapper.updateByPrimaryKeySelective(preFryRecordsDO); + } + public List queryByIds(List ids) { if (CollectionUtils.isEmpty(ids)) { return new ArrayList<>(); 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 index e27131478..cd9b5eaea 100644 --- 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 @@ -26,6 +26,8 @@ public interface PreFryRecordsService { PreFryRecordsDetailDTO getById(Long id); + Boolean salesCompleted(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/PreFryRecordsServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PreFryRecordsServiceImpl.java index ee2c892fe..ef1d9b8dc 100644 --- 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 @@ -17,6 +17,7 @@ import com.github.pagehelper.PageInfo; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; @@ -48,6 +49,7 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService { @Override + @Transactional(rollbackFor = Exception.class) public Boolean batchInsert(AddPreFryRecordsDTO addPreFryRecordsDTO, PartnerUserInfoVO user) { if (CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())|| CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())){ throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); @@ -115,41 +117,47 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService { list.add(preFryStageChangesDO); }); preFryRecordsDAO.batchUpdateStageByIds(recordList,addPreFryRecordsDTO.getCurrentStage()); - handleViolationFlag(recordList,addPreFryRecordsDTO.getApplyType(),addPreFryRecordsDTO.getCurrentStage(),list); + List preFryRecordsDOS = preFryRecordsDAO.queryByIds(recordList); + handleViolationFlag(preFryRecordsDOS,addPreFryRecordsDTO.getApplyType(),addPreFryRecordsDTO.getCurrentStage(),list); + if (DISCARDED.getCode()==addPreFryRecordsDTO.getCurrentStage()){ + //只要有一条记录是销售完成的 不能报销 + if (preFryRecordsDOS.stream().anyMatch(x->x.getCurrentStage()==SALES_COMPLETED.getCode())){ + throw new ServiceException(ErrorCodeEnum.PRODUCTS_SALES_COMPLETED); + } + } } preFryStageChangesDAO.batchInsert(list); return Boolean.TRUE; } - private void handleViolationFlag(List recordList ,Integer applyType,Integer currentStage,List list) { + private void handleViolationFlag(List records ,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)); + records.forEach(x->{ + PreFryRecordsDO preFryRecordsDO = recordMap.get(x.getId()); + Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x.getId())); if (time!=null&&(time<15||time>25)){ ViolationDTO violationDTO = new ViolationDTO(); - violationDTO.setId(x); + violationDTO.setId(x.getId()); 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)); + records.forEach(x->{ + PreFryRecordsDO preFryRecordsDO = recordMap.get(x.getId()); + Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x.getId())); if (time!=null&&time>24*60){ ViolationDTO violationDTO = new ViolationDTO(); - violationDTO.setId(x); + violationDTO.setId(x.getId()); violationDTO.setViolationFlag(ViolationEnum.STORAGE_TIME_EXCEEDED.getCode()); if (StringUtils.isEmpty(preFryRecordsDO.getViolationReason())){ violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.STORAGE_TIME_EXCEEDED.getCode())); @@ -249,6 +257,21 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService { return preFryRecordsDetailDTO; } + @Override + public Boolean salesCompleted(Long id) { + PreFryRecordsDO preFryRecordsDO = preFryRecordsDAO.queryById(id); + if (preFryRecordsDO == null) { + throw new ServiceException(ErrorCodeEnum.PRODUCTS_RECORD_NOT_EXIST); + } + if (preFryRecordsDO.getCurrentStage() == PreFryStageEnum.DISCARDED.getCode()){ + throw new ServiceException(ErrorCodeEnum.PRODUCTS_DISCARDED); + } + preFryRecordsDO.setCurrentStage(SALES_COMPLETED.getCode()); + preFryRecordsDO.setUpdatedTime(new Date()); + preFryRecordsDAO.updateByPrimaryKeySelective(preFryRecordsDO); + return Boolean.TRUE; + } + @Override public List queryByStoreCode(String storeCode,Long time) { 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 index e5bdf49df..e84d6f4bf 100644 --- 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 @@ -44,7 +44,12 @@ public class PreFryRecordsController { log.info("预炸记录详情:{}", JSONObject.toJSONString(id)); return ResponseResult.success(preFryRecordsService.getById(id)); } - + @ApiOperation("销售完成") + @GetMapping("/salesCompleted") + public ResponseResult salesCompleted(@RequestParam(required = true, value = "id") Long id) { + log.info("预炸记录详情:{}", JSONObject.toJSONString(id)); + return ResponseResult.success(preFryRecordsService.salesCompleted(id)); + } @ApiOperation("预炸批量新增") @PostMapping("/batchAdd") From b70cdb049842c86b15922bbfccd4713cde75d33d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Thu, 26 Jun 2025 14:52:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat=EF=BC=9A=E9=94=80=E5=94=AE=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/cool/store/service/PreFryRecordsService.java | 2 +- .../cool/store/service/impl/PreFryRecordsServiceImpl.java | 8 +++++++- .../store/controller/webc/PreFryRecordsController.java | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) 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 index cd9b5eaea..da7e9cdeb 100644 --- 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 @@ -26,7 +26,7 @@ public interface PreFryRecordsService { PreFryRecordsDetailDTO getById(Long id); - Boolean salesCompleted(Long id); + Boolean salesCompleted(Long id, PartnerUserInfoVO user); List queryByStoreCode(String storeCode, Long time); 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 index ef1d9b8dc..ccec67e09 100644 --- 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 @@ -258,7 +258,7 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService { } @Override - public Boolean salesCompleted(Long id) { + public Boolean salesCompleted(Long id, PartnerUserInfoVO user) { PreFryRecordsDO preFryRecordsDO = preFryRecordsDAO.queryById(id); if (preFryRecordsDO == null) { throw new ServiceException(ErrorCodeEnum.PRODUCTS_RECORD_NOT_EXIST); @@ -269,6 +269,12 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService { preFryRecordsDO.setCurrentStage(SALES_COMPLETED.getCode()); preFryRecordsDO.setUpdatedTime(new Date()); preFryRecordsDAO.updateByPrimaryKeySelective(preFryRecordsDO); + //新增销售记录 + PreFryStageChangesDO preFryStageChangesDO = new PreFryStageChangesDO(); + preFryStageChangesDO.setStage(SALES_COMPLETED.getCode()); + preFryStageChangesDO.setRecordId(id); + preFryStageChangesDO.setOperatorName(user.getUsername()); + preFryStageChangesDO.setCreatedTime(new Date()); return Boolean.TRUE; } 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 index e84d6f4bf..ef8a7a5c3 100644 --- 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 @@ -48,7 +48,7 @@ public class PreFryRecordsController { @GetMapping("/salesCompleted") public ResponseResult salesCompleted(@RequestParam(required = true, value = "id") Long id) { log.info("预炸记录详情:{}", JSONObject.toJSONString(id)); - return ResponseResult.success(preFryRecordsService.salesCompleted(id)); + return ResponseResult.success(preFryRecordsService.salesCompleted(id, PartnerUserHolder.getUser())); } @ApiOperation("预炸批量新增") From ebd5b23c76cfe65333cb51304af67d612103756f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Tue, 1 Jul 2025 18:38:00 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat=EF=BC=9AbatchInsert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/service/impl/PreFryRecordsServiceImpl.java | 1 + 1 file changed, 1 insertion(+) 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 index ccec67e09..65a52771a 100644 --- 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 @@ -275,6 +275,7 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService { preFryStageChangesDO.setRecordId(id); preFryStageChangesDO.setOperatorName(user.getUsername()); preFryStageChangesDO.setCreatedTime(new Date()); + preFryStageChangesDAO.batchInsert(Arrays.asList(preFryStageChangesDO)); return Boolean.TRUE; }