feat:预炸
This commit is contained in:
@@ -1,17 +1,12 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.dao.PreFriedProductsDAO;
|
||||
import com.cool.store.dao.PreFryQualificationApplyDAO;
|
||||
import com.cool.store.dao.PreFryRecordsDAO;
|
||||
import com.cool.store.dao.PreFryStageChangesDAO;
|
||||
import com.cool.store.dao.*;
|
||||
import com.cool.store.dto.pre.fry.*;
|
||||
import com.cool.store.entity.PreFriedProductsDO;
|
||||
import com.cool.store.entity.PreFryQualificationApplyDO;
|
||||
import com.cool.store.entity.PreFryRecordsDO;
|
||||
import com.cool.store.entity.PreFryStageChangesDO;
|
||||
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;
|
||||
@@ -97,15 +92,72 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
||||
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<Long> recordList ,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));
|
||||
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<PreFryRecordsDetailDTO> ListByStoreCodeAndDate(FryRecordsQueryDTO dto) {
|
||||
PageHelper.startPage(dto.getPageNum(),dto.getPageSize());
|
||||
@@ -146,6 +198,9 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Resource
|
||||
StoreDao storeDao;
|
||||
|
||||
@Override
|
||||
public PreFryRecordsDetailDTO getById(Long id) {
|
||||
PreFryRecordsDO preFryRecordsDO = preFryRecordsDAO.queryById(id);
|
||||
@@ -154,21 +209,30 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
||||
}
|
||||
List<PreFryStageImagesDTO> 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());
|
||||
preFryRecordsDetailDTO.setProductName(preFriedProductsDO.getProductName());
|
||||
preFryRecordsDetailDTO.setProductImageUrl(preFriedProductsDO.getProductImage());
|
||||
if (preFriedProductsDO!=null){
|
||||
preFryRecordsDetailDTO.setProductName(preFriedProductsDO.getProductName());
|
||||
preFryRecordsDetailDTO.setProductImageUrl(preFriedProductsDO.getProductImage());
|
||||
}
|
||||
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<DailyFryCountDTO> queryByStoreCode(String storeCode,Long time) {
|
||||
return preFryRecordsDAO.selectDailyFryCountInCurrentMonth(storeCode, time);
|
||||
@@ -178,6 +242,9 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
||||
public PageInfo<PreFryRecordsDTO> queryByQueryDTO(PreFryRecordQueryDTO dto) {
|
||||
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
|
||||
List<PreFryRecordsDTO> preFryRecordQueryDTOS = preFryRecordsDAO.selectByQueryDTO(dto);
|
||||
preFryRecordQueryDTOS.forEach(x->{
|
||||
x.setViolationReason(getViolationReasonChinese(x.getViolationReason()));
|
||||
});
|
||||
PageInfo<PreFryRecordsDTO> preFryRecordQueryDTOPageInfo = new PageInfo<>(preFryRecordQueryDTOS);
|
||||
return preFryRecordQueryDTOPageInfo;
|
||||
}
|
||||
@@ -213,5 +280,30 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
||||
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<Integer> 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(","));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user