feat:销售完成

This commit is contained in:
苏竹红
2025-06-26 14:47:08 +08:00
parent 1e8129aabc
commit eeb9bdc3ad
6 changed files with 52 additions and 13 deletions

View File

@@ -26,6 +26,8 @@ public interface PreFryRecordsService {
PreFryRecordsDetailDTO getById(Long id);
Boolean salesCompleted(Long id);
List<DailyFryCountDTO> queryByStoreCode(String storeCode, Long time);
PageInfo<PreFryRecordsDTO> queryByQueryDTO(PreFryRecordQueryDTO dto);

View File

@@ -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<PreFryRecordsDO> 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<Long> recordList ,Integer applyType,Integer currentStage,List<PreFryStageChangesDO> list) {
private void handleViolationFlag(List<PreFryRecordsDO> records ,Integer applyType,Integer currentStage,List<PreFryStageChangesDO> list) {
//如果最高级优先级是冷藏展示柜 计算是否违规 冷却时间小于15分钟或者大于25分钟 违规 冰箱取出时间距离预炸完成时间超过24小时
if (PreFryApplyTypeEnum.HAS_REFRIGERATED_DISPLAY.getCode()==applyType&&
(STORED_IN_DISPLAY_CABINET.getCode()==currentStage||STORED_IN_FRIDGE.getCode()==currentStage)){
List<PreFryRecordsDO> records = preFryRecordsDAO.queryByIds(recordList);
Map<Long,PreFryRecordsDO> recordMap = records.stream().collect(Collectors.toMap(PreFryRecordsDO::getId, data->data));
//list 转为 map 记录id与创建时间
Map<Long,Date> listMap = list.stream().collect(Collectors.toMap(PreFryStageChangesDO::getRecordId, PreFryStageChangesDO::getCreatedTime));
List<ViolationDTO> 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<DailyFryCountDTO> queryByStoreCode(String storeCode,Long time) {