|
|
|
|
@ -1,52 +1,47 @@
|
|
|
|
|
package cn.iocoder.yudao.module.mes.controller.admin.feedingrecord;
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
|
|
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
|
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.*;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionDetailRespVO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.PlanStatusEnum;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkShopTypeEnum;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingplan.FeedingRecordPlanDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDetailDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.feedingrecord.FeedingRecordMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionMapper;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.feedingrecord.FeedingRecordService;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import javax.validation.Valid;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
|
|
|
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
|
|
|
|
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.FEEDING_RECORD_NOT_EXISTS;
|
|
|
|
|
|
|
|
|
|
import cn.iocoder.yudao.module.mes.controller.admin.feedingrecord.vo.*;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDetailDO;
|
|
|
|
|
import cn.iocoder.yudao.module.mes.service.feedingrecord.FeedingRecordService;
|
|
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import javax.validation.Valid;
|
|
|
|
|
|
|
|
|
|
@Tag(name = "管理后台 - 投料记录")
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/mes/feeding-record")
|
|
|
|
|
@ -102,12 +97,12 @@ public class FeedingRecordController {
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('mes:feeding-record:export')")
|
|
|
|
|
@ApiAccessLog(operateType = EXPORT)
|
|
|
|
|
public void exportFeedingRecordExcel(@Valid FeedingRecordPageReqVO pageReqVO,
|
|
|
|
|
HttpServletResponse response) throws IOException {
|
|
|
|
|
HttpServletResponse response) throws IOException {
|
|
|
|
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
|
|
|
|
List<FeedingRecordDO> list = feedingRecordService.getFeedingRecordPage(pageReqVO).getList();
|
|
|
|
|
// 导出 Excel
|
|
|
|
|
ExcelUtils.write(response, "投料记录.xls", "数据", FeedingRecordRespVO.class,
|
|
|
|
|
BeanUtils.toBean(list, FeedingRecordRespVO.class));
|
|
|
|
|
BeanUtils.toBean(list, FeedingRecordRespVO.class));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ==================== 子表(投料记录明细) ====================
|
|
|
|
|
@ -117,9 +112,10 @@ public class FeedingRecordController {
|
|
|
|
|
@Parameter(name = "recordId", description = "记录id")
|
|
|
|
|
@PreAuthorize("@ss.hasPermission('mes:feeding-record:query')")
|
|
|
|
|
public CommonResult<List<FeedingRecordDetailRespVO>> getFeedingRecordDetailListByRecordId(@RequestParam("recordId") Long recordId) {
|
|
|
|
|
List< FeedingRecordDetailDO> detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(recordId);
|
|
|
|
|
List<FeedingRecordDetailDO> detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(recordId);
|
|
|
|
|
return success(feedingRecordService.buildVOList(detailDOList));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private FeedingRecordMapper feedingRecordMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
@ -130,19 +126,19 @@ public class FeedingRecordController {
|
|
|
|
|
@PutMapping("/update-status")
|
|
|
|
|
@Operation(summary = "提交状态")
|
|
|
|
|
public CommonResult<Boolean> updateStatus(@RequestParam("id") Long id,
|
|
|
|
|
@RequestParam("status") String status) {
|
|
|
|
|
@RequestParam("status") String status) {
|
|
|
|
|
LoginUser user = SecurityFrameworkUtils.getLoginUser();
|
|
|
|
|
if(user!=null){
|
|
|
|
|
if (user != null) {
|
|
|
|
|
FeedingRecordDO recordDO = feedingRecordMapper.selectById(id);
|
|
|
|
|
if(recordDO==null) throw exception(FEEDING_RECORD_NOT_EXISTS);
|
|
|
|
|
if (recordDO == null) throw exception(FEEDING_RECORD_NOT_EXISTS);
|
|
|
|
|
//后续步骤只处理领料投料的投料单,湿废品和干废品投料暂不处理
|
|
|
|
|
//计划及计划物料需求
|
|
|
|
|
List<Integer> statusList = new ArrayList<>();
|
|
|
|
|
statusList.add(PlanStatusEnum.开工.getValue());
|
|
|
|
|
//获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。
|
|
|
|
|
List<PlanDO> planDOList = planService.getPlanByStatusAndPipeline(statusList,recordDO.getFeedingPipeline());
|
|
|
|
|
List<PlanDO> planDOList = planService.getPlanByStatusAndPipeline(statusList, recordDO.getFeedingPipeline());
|
|
|
|
|
|
|
|
|
|
if(recordDO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())) {
|
|
|
|
|
if (recordDO.getFeedingType().equals(FeedingTypeEnum.领料.getValue())) {
|
|
|
|
|
List<FeedingRecordDetailDO> detailDOList = feedingRecordService.getFeedingRecordDetailListByRecordId(id);
|
|
|
|
|
Map<Long, List<ItemRequisitionDetailRespVO>> planItemListMap = new HashMap<>();
|
|
|
|
|
Map<String, ItemRequisitionDetailRespVO> planItemMap = new HashMap<>();
|
|
|
|
|
@ -152,35 +148,34 @@ public class FeedingRecordController {
|
|
|
|
|
List<ItemRequisitionDetailRespVO> list = itemRequisitionService.getItemRequisitionList(planDOList.get(i).getId());
|
|
|
|
|
planItemListMap.put(planDOList.get(i).getId(), list);
|
|
|
|
|
|
|
|
|
|
for (ItemRequisitionDetailRespVO respVO: list ) {
|
|
|
|
|
for (ItemRequisitionDetailRespVO respVO : list) {
|
|
|
|
|
String key = getMapKey(planDOList.get(i).getId(), respVO.getProductId());
|
|
|
|
|
planItemMap.put(key, respVO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Map<String, FeedingRecordPlanDO> recordPlanDOMap = feedingRecordService.updateStatus(recordDO,detailDOList, status , user.getId(),planDOList,
|
|
|
|
|
Map<String, FeedingRecordPlanDO> recordPlanDOMap = feedingRecordService.updateStatus(recordDO, detailDOList, status, user.getId(), planDOList,
|
|
|
|
|
planItemListMap, planItemMap);
|
|
|
|
|
//更新计划对应的领料单投料时间
|
|
|
|
|
Map<Long,Long> map = new HashMap<>();
|
|
|
|
|
Map<Long, Long> map = new HashMap<>();
|
|
|
|
|
for (String key : recordPlanDOMap.keySet()) {
|
|
|
|
|
FeedingRecordPlanDO item = recordPlanDOMap.get(key);
|
|
|
|
|
if(!map.containsKey(item.getPlanId())){
|
|
|
|
|
FeedingRecordPlanDO item = recordPlanDOMap.get(key);
|
|
|
|
|
if (!map.containsKey(item.getPlanId())) {
|
|
|
|
|
ItemRequisitionDO itemRequisitionDO = itemRequisitionService.getItemRequisitionByPlanId(item.getPlanId());
|
|
|
|
|
if(itemRequisitionDO!=null && itemRequisitionDO.getDeliveryDate()==null){
|
|
|
|
|
if (itemRequisitionDO != null && itemRequisitionDO.getDeliveryDate() == null) {
|
|
|
|
|
itemRequisitionDO.setDeliveryDate(LocalDate.now());
|
|
|
|
|
map.put(item.getPlanId(),item.getPlanId());
|
|
|
|
|
map.put(item.getPlanId(), item.getPlanId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
} else {
|
|
|
|
|
recordDO.setRecordStatus(FeedingStatusEnum.提交.getValue());
|
|
|
|
|
feedingRecordMapper.updateById(recordDO);
|
|
|
|
|
}
|
|
|
|
|
return success(true);
|
|
|
|
|
}
|
|
|
|
|
else return CommonResult.error(500,"无法获取操作用户!请检查!");
|
|
|
|
|
} else return CommonResult.error(500, "无法获取操作用户!请检查!");
|
|
|
|
|
}
|
|
|
|
|
private String getMapKey(Long planId, Long itemId){
|
|
|
|
|
|
|
|
|
|
private String getMapKey(Long planId, Long itemId) {
|
|
|
|
|
return planId + "-" + itemId;
|
|
|
|
|
}
|
|
|
|
|
}
|