feat:销售完成
This commit is contained in:
@@ -283,6 +283,9 @@ public enum ErrorCodeEnum {
|
|||||||
CURRENT_STAGE_NOT_OPERATION(1511030,"当前有更优选择,请确认!",null),
|
CURRENT_STAGE_NOT_OPERATION(1511030,"当前有更优选择,请确认!",null),
|
||||||
PRODUCTS_STATUS(1511031,"包含下架的产品,请重新选择后提交!",null),
|
PRODUCTS_STATUS(1511031,"包含下架的产品,请重新选择后提交!",null),
|
||||||
PRODUCTS_CODE_EXIST(1511032,"产品编码已存在!",null),
|
PRODUCTS_CODE_EXIST(1511032,"产品编码已存在!",null),
|
||||||
|
PRODUCTS_RECORD_NOT_EXIST(1511033,"预炸记录不存在!",null),
|
||||||
|
PRODUCTS_DISCARDED(1511034,"产品已报销,无法操作",null),
|
||||||
|
PRODUCTS_SALES_COMPLETED(1511034,"含有销售完成的产品,无法批量报销",null),
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ public enum PreFryStageEnum {
|
|||||||
STORED_IN_DISPLAY_CABINET(2, "存入展示柜"),
|
STORED_IN_DISPLAY_CABINET(2, "存入展示柜"),
|
||||||
STORED_IN_FRIDGE(3, "放入冰箱"),
|
STORED_IN_FRIDGE(3, "放入冰箱"),
|
||||||
TAKEN_OUT_NEXT_DAY(4, "次日拿出"),
|
TAKEN_OUT_NEXT_DAY(4, "次日拿出"),
|
||||||
DISCARDED(5, "报废");
|
DISCARDED(5, "报废"),
|
||||||
|
SALES_COMPLETED(6, "销售完成");
|
||||||
|
|
||||||
private final int code;
|
private final int code;
|
||||||
private final String description;
|
private final String description;
|
||||||
|
|||||||
@@ -53,6 +53,11 @@ public class PreFryRecordsDAO {
|
|||||||
return preFryRecordsMapper.selectByPrimaryKey(id);
|
return preFryRecordsMapper.selectByPrimaryKey(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int updateByPrimaryKeySelective(PreFryRecordsDO preFryRecordsDO) {
|
||||||
|
return preFryRecordsMapper.updateByPrimaryKeySelective(preFryRecordsDO);
|
||||||
|
}
|
||||||
|
|
||||||
public List<PreFryRecordsDO> queryByIds(List<Long> ids) {
|
public List<PreFryRecordsDO> queryByIds(List<Long> ids) {
|
||||||
if (CollectionUtils.isEmpty(ids)) {
|
if (CollectionUtils.isEmpty(ids)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ public interface PreFryRecordsService {
|
|||||||
|
|
||||||
PreFryRecordsDetailDTO getById(Long id);
|
PreFryRecordsDetailDTO getById(Long id);
|
||||||
|
|
||||||
|
Boolean salesCompleted(Long id);
|
||||||
|
|
||||||
List<DailyFryCountDTO> queryByStoreCode(String storeCode, Long time);
|
List<DailyFryCountDTO> queryByStoreCode(String storeCode, Long time);
|
||||||
|
|
||||||
PageInfo<PreFryRecordsDTO> queryByQueryDTO(PreFryRecordQueryDTO dto);
|
PageInfo<PreFryRecordsDTO> queryByQueryDTO(PreFryRecordQueryDTO dto);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import com.github.pagehelper.PageInfo;
|
|||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -48,6 +49,7 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean batchInsert(AddPreFryRecordsDTO addPreFryRecordsDTO, PartnerUserInfoVO user) {
|
public Boolean batchInsert(AddPreFryRecordsDTO addPreFryRecordsDTO, PartnerUserInfoVO user) {
|
||||||
if (CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())|| CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())){
|
if (CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())|| CollectionUtils.isEmpty(addPreFryRecordsDTO.getRecords())){
|
||||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||||
@@ -115,41 +117,47 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
|||||||
list.add(preFryStageChangesDO);
|
list.add(preFryStageChangesDO);
|
||||||
});
|
});
|
||||||
preFryRecordsDAO.batchUpdateStageByIds(recordList,addPreFryRecordsDTO.getCurrentStage());
|
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);
|
preFryStageChangesDAO.batchInsert(list);
|
||||||
return Boolean.TRUE;
|
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小时
|
//如果最高级优先级是冷藏展示柜 计算是否违规 冷却时间小于15分钟或者大于25分钟 违规 冰箱取出时间距离预炸完成时间超过24小时
|
||||||
if (PreFryApplyTypeEnum.HAS_REFRIGERATED_DISPLAY.getCode()==applyType&&
|
if (PreFryApplyTypeEnum.HAS_REFRIGERATED_DISPLAY.getCode()==applyType&&
|
||||||
(STORED_IN_DISPLAY_CABINET.getCode()==currentStage||STORED_IN_FRIDGE.getCode()==currentStage)){
|
(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));
|
Map<Long,PreFryRecordsDO> recordMap = records.stream().collect(Collectors.toMap(PreFryRecordsDO::getId, data->data));
|
||||||
//list 转为 map 记录id与创建时间
|
//list 转为 map 记录id与创建时间
|
||||||
Map<Long,Date> listMap = list.stream().collect(Collectors.toMap(PreFryStageChangesDO::getRecordId, PreFryStageChangesDO::getCreatedTime));
|
Map<Long,Date> listMap = list.stream().collect(Collectors.toMap(PreFryStageChangesDO::getRecordId, PreFryStageChangesDO::getCreatedTime));
|
||||||
List<ViolationDTO> violationList = new ArrayList<>();
|
List<ViolationDTO> violationList = new ArrayList<>();
|
||||||
if (STORED_IN_DISPLAY_CABINET.getCode()==currentStage){
|
if (STORED_IN_DISPLAY_CABINET.getCode()==currentStage){
|
||||||
recordList.forEach(x->{
|
records.forEach(x->{
|
||||||
PreFryRecordsDO preFryRecordsDO = recordMap.get(x);
|
PreFryRecordsDO preFryRecordsDO = recordMap.get(x.getId());
|
||||||
Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x));
|
Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x.getId()));
|
||||||
if (time!=null&&(time<15||time>25)){
|
if (time!=null&&(time<15||time>25)){
|
||||||
ViolationDTO violationDTO = new ViolationDTO();
|
ViolationDTO violationDTO = new ViolationDTO();
|
||||||
violationDTO.setId(x);
|
violationDTO.setId(x.getId());
|
||||||
violationDTO.setViolationFlag(ViolationEnum.COOLING_TIME_EXCEEDED.getCode());
|
violationDTO.setViolationFlag(ViolationEnum.COOLING_TIME_EXCEEDED.getCode());
|
||||||
violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.COOLING_TIME_EXCEEDED.getCode()));
|
violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.COOLING_TIME_EXCEEDED.getCode()));
|
||||||
violationList.add(violationDTO);
|
violationList.add(violationDTO);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else if (STORED_IN_FRIDGE.getCode()==currentStage){
|
}else if (STORED_IN_FRIDGE.getCode()==currentStage){
|
||||||
recordList.forEach(x->{
|
records.forEach(x->{
|
||||||
PreFryRecordsDO preFryRecordsDO = recordMap.get(x);
|
PreFryRecordsDO preFryRecordsDO = recordMap.get(x.getId());
|
||||||
Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x));
|
Long time = getTime(preFryRecordsDO.getFryCompleteTime(), listMap.get(x.getId()));
|
||||||
if (time!=null&&time>24*60){
|
if (time!=null&&time>24*60){
|
||||||
ViolationDTO violationDTO = new ViolationDTO();
|
ViolationDTO violationDTO = new ViolationDTO();
|
||||||
violationDTO.setId(x);
|
violationDTO.setId(x.getId());
|
||||||
violationDTO.setViolationFlag(ViolationEnum.STORAGE_TIME_EXCEEDED.getCode());
|
violationDTO.setViolationFlag(ViolationEnum.STORAGE_TIME_EXCEEDED.getCode());
|
||||||
if (StringUtils.isEmpty(preFryRecordsDO.getViolationReason())){
|
if (StringUtils.isEmpty(preFryRecordsDO.getViolationReason())){
|
||||||
violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.STORAGE_TIME_EXCEEDED.getCode()));
|
violationDTO.setViolationReason(String.format(",%d,", ViolationEnum.STORAGE_TIME_EXCEEDED.getCode()));
|
||||||
@@ -249,6 +257,21 @@ public class PreFryRecordsServiceImpl implements PreFryRecordsService {
|
|||||||
return preFryRecordsDetailDTO;
|
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
|
@Override
|
||||||
public List<DailyFryCountDTO> queryByStoreCode(String storeCode,Long time) {
|
public List<DailyFryCountDTO> queryByStoreCode(String storeCode,Long time) {
|
||||||
|
|||||||
@@ -44,7 +44,12 @@ public class PreFryRecordsController {
|
|||||||
log.info("预炸记录详情:{}", JSONObject.toJSONString(id));
|
log.info("预炸记录详情:{}", JSONObject.toJSONString(id));
|
||||||
return ResponseResult.success(preFryRecordsService.getById(id));
|
return ResponseResult.success(preFryRecordsService.getById(id));
|
||||||
}
|
}
|
||||||
|
@ApiOperation("销售完成")
|
||||||
|
@GetMapping("/salesCompleted")
|
||||||
|
public ResponseResult<Boolean> salesCompleted(@RequestParam(required = true, value = "id") Long id) {
|
||||||
|
log.info("预炸记录详情:{}", JSONObject.toJSONString(id));
|
||||||
|
return ResponseResult.success(preFryRecordsService.salesCompleted(id));
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("预炸批量新增")
|
@ApiOperation("预炸批量新增")
|
||||||
@PostMapping("/batchAdd")
|
@PostMapping("/batchAdd")
|
||||||
|
|||||||
Reference in New Issue
Block a user