生产计划修改

plp
kkk-ops 1 month ago
parent c8d4c83e94
commit f9de5651a6

@ -102,7 +102,7 @@ public class AppOrgWorkerController {
@Operation(summary = "获得正在开工生产的产品")
public CommonResult<List<AppProductVo>> getProductList() {
List<Integer> status = new ArrayList<>();
status.add(PlanStatusEnum..getValue());
status.add(PlanStatusEnum..getValue());
List<ErpProductRespVO> proList = planService.getProductByPlanStatus(status);
return success(appService.getProductList(proList));
}

@ -91,7 +91,7 @@ public class AppServiceImpl implements AppService {
@Override
public List<AppProductVo> getPlanProductList(String orgType){
List<Integer> status = new ArrayList<>();
status.add(PlanStatusEnum..getValue());
status.add(PlanStatusEnum..getValue());
List<PlanDO> planList = planService.getPlanByStatus(status);
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(planList, PlanDO::getProductId));

@ -180,7 +180,7 @@ public class FeedingRecordController {
//后续步骤只处理领料投料的投料单,湿废品和干废品投料暂不处理
//计划及计划物料需求
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
//获取正在开工的计划,按照计划完工时间从小到大排序,优先分配给最近计划完工的计划。
List<PlanDO> planDOList = planService.getPlanByStatusAndPipeline(statusList, String.valueOf(recordDO.getFeedingPipeline()));/** todo 这里改了 以前固定2 5立方制浆线*/

@ -1,19 +1,25 @@
package cn.iocoder.yudao.module.mes.controller.admin.plan;
import cn.hutool.core.collection.CollUtil;
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.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.iot.framework.mqtt.utils.DateUtils;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.ItemRequisitionSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemAnalysisService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
import cn.iocoder.yudao.module.mes.service.organization.OrganizationService;
import cn.iocoder.yudao.module.mes.service.plan.PlanService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -26,11 +32,14 @@ import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@Tag(name = "管理后台 - 生产计划")
@RestController
@ -42,6 +51,8 @@ public class PlanController {
private PlanService planService;
@Resource
private PlanMapper planMapper;
@Resource
private OrganizationService organizationService;
@PostMapping("/create")
@ -82,7 +93,17 @@ public class PlanController {
//@PreAuthorize("@ss.hasPermission('mes:plan:query')")
public CommonResult<PageResult<PlanRespVO>> getPlanPage(@Valid PlanPageReqVO pageReqVO) {
PageResult<PlanRespVO> pageResult = planService.getPlanPage(pageReqVO);
return success(pageResult);
return success(new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal()));
}
private List<PlanRespVO> buildVOList(List<PlanRespVO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, OrganizationDO> organizationMap = organizationService.getOrganizationVOMap(
convertSet(list, PlanRespVO::getFeedingPipeline));
return BeanUtils.toBean(list, PlanRespVO.class, item -> {
MapUtils.findAndThen(organizationMap, item.getFeedingPipeline(), organization -> item.setFeedingPipelineName(organization.getName()));
});
}
@GetMapping("/export-excel")
@ -134,9 +155,13 @@ public class PlanController {
//@PreAuthorize("@ss.hasPermission('mes:plan:update')")
public CommonResult<Boolean> updatePlanStatus(@Valid @RequestBody PlanStatusUpdateVO statusUpdateVO) {
PlanDO planDO = planMapper.selectById(statusUpdateVO.getId());
// 试产
if ("pre".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
}
//开工
if ("start".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
planDO.setStatus(PlanStatusEnum..getValue());
}
//暂停
else if ("pause".equals(statusUpdateVO.getCode())) {
@ -146,6 +171,20 @@ public class PlanController {
else if ("end".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
}
// 入库
else if ("store".equals(statusUpdateVO.getCode())) {
planDO.setStatus(PlanStatusEnum..getValue());
}
planMapper.updateById(planDO);
return success(true);
}
@PutMapping("/updatePlanZjStatus")
@Operation(summary = "更新生产计划质检状态")
//@PreAuthorize("@ss.hasPermission('mes:plan:update')")
public CommonResult<Boolean> updatePlanZjStatus(@Valid @RequestBody PlanStatusUpdateVO statusUpdateVO) {
PlanDO planDO = planMapper.selectById(statusUpdateVO.getId());
planDO.setIsZj(true);
planMapper.updateById(planDO);
return success(true);
}
@ -156,7 +195,7 @@ public class PlanController {
//@PreAuthorize("@ss.hasPermission('mes:plan:query')")
public CommonResult<List<ErpProductRespVO>> getPlan() {
List<Integer> status = new ArrayList<>();
status.add(PlanStatusEnum..getValue());
status.add(PlanStatusEnum..getValue());
//status.add(PlanStatusEnum.完工.getValue());
List<ErpProductRespVO> proList = planService.getProductByPlanStatus(status);
return success(proList);

@ -70,8 +70,8 @@ public class PlanPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "制浆线")
private String feedingPipeline;
@Schema(description = "生产线")
private Long feedingPipeline;
@Schema(description = "组别", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer groupType;
@ -80,4 +80,7 @@ public class PlanPageReqVO extends PageParam {
@Schema(description = "领料人ID", example = "10640")
private Long workerId;
@Schema(description = "是否完成质检")
private BigDecimal isZj;
}

@ -98,9 +98,12 @@ public class PlanRespVO {
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "制浆线")
@ExcelProperty("制浆线")
private String feedingPipeline;
@Schema(description = "生产线")
private Long feedingPipeline;
@Schema(description = "生产线名称")
@ExcelProperty("生产线")
private String feedingPipelineName;
/**
* ID
@ -122,4 +125,8 @@ public class PlanRespVO {
@Schema(description = "是否试生产")
@ExcelProperty("是否试生产")
private BigDecimal isPreProduction;
@Schema(description = "是否完成质检")
@ExcelProperty("是否完成质检")
private BigDecimal isZj;
}

@ -63,8 +63,8 @@ public class PlanSaveReqVO {
@Schema(description = "是否启用")
private Boolean isEnable;
@Schema(description = "制浆线")
private String feedingPipeline;
@Schema(description = "生产线")
private Long feedingPipeline;
/**
*
@ -80,4 +80,7 @@ public class PlanSaveReqVO {
@Schema(description = "领料人ID", example = "10640")
private Long workerId;
@Schema(description = "是否完成质检")
private BigDecimal isZj;
}

@ -9,10 +9,12 @@ public enum PlanStatusEnum {
(0),
(1),
(2),
(2),
(3),
(4),
(5);
(5),
(6),
(7);
private final int value;

@ -16,11 +16,9 @@ public class PlanStatusUpdateVO {
private Long id;
@Schema(description = "更新类型")
@NotNull(message = "更新类型")
private String code;
@Schema(description = "更新状态", example = "21176")
@NotNull(message = "更新状态")
private int status;
}

@ -1,5 +1,9 @@
package cn.iocoder.yudao.module.mes.controller.admin.zjproduct;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.mes.controller.admin.paigongrecord.vo.PaigongRecordRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.organization.OrganizationDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -24,6 +28,7 @@ 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.framework.common.util.collection.CollectionUtils.convertSet;
import cn.iocoder.yudao.module.mes.controller.admin.zjproduct.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjproduct.ZjProductDO;
@ -91,4 +96,13 @@ public class ZjProductController {
ExcelUtils.write(response, "质量管理-质检参数.xls", "数据", ZjProductRespVO.class,
BeanUtils.toBean(list, ZjProductRespVO.class));
}
@GetMapping("/list-by-item-product-id")
@Operation(summary = "获得产品质检明细列表")
@Parameter(name = "productId", description = "产品ID")
@PreAuthorize("@ss.hasPermission('erp:product:query')")
public CommonResult<List<ZjProductRespVO>> getZjProductByPlanId(@RequestParam("productId") Long productId) {
List<ZjProductDO> pageResult = zjProductService.getZjProductByPlanId(productId);
return success(BeanUtils.toBean(pageResult, ZjProductRespVO.class));
}
}

@ -96,8 +96,11 @@ public class PlanDO extends BaseDO {
* {@link TODO infra_boolean_string }
*/
private Boolean isEnable;
//@Schema(description = "制浆线")
private String feedingPipeline;
/**
* 线ID
*/
private Long feedingPipeline;
/**
* ID
*/
@ -114,4 +117,8 @@ public class PlanDO extends BaseDO {
*
*/
private Boolean isPreProduction;
/**
*
*/
private Boolean isZj;
}

@ -72,7 +72,7 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
List<Integer> status = new ArrayList<>();
status.add(PlanStatusEnum..getValue());
status.add(PlanStatusEnum..getValue());
status.add(PlanStatusEnum..getValue());
status.add(PlanStatusEnum..getValue());
return selectOne(new QueryWrapper<PlanDO>()
.eq("is_enable", true)
.in("status", status)

@ -5,6 +5,7 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjproduct.ZjProductDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.zjproduct.vo.*;
@ -29,5 +30,8 @@ public interface ZjProductMapper extends BaseMapperX<ZjProductDO> {
.betweenIfPresent(ZjProductDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ZjProductDO::getId));
}
default List<ZjProductDO> selectListByProductId(Long productId) {
return selectList(ZjProductDO::getProductId, productId);
}
}

@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.paigongrecord.PaigongRecordMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.plan.PlanMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.stockindetail.StockInDetailMapper;
import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemAnalysisService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.ItemRequisitionService;
import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitionAndStock;
import cn.iocoder.yudao.module.mes.service.paigongrecord.PaigongRecordService;
@ -62,6 +63,8 @@ public class PlanServiceImpl implements PlanService {
private TaskService taskService;
@Resource
private PaigongRecordMapper paigongRecordMapper;
@Resource
private ItemAnalysisService analysisService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -90,31 +93,31 @@ public class PlanServiceImpl implements PlanService {
taskDO.setStatus(TaskStatusEnum..getValue());
taskService.updateTask(taskDO);
}
// List<ItemRequisitionDetailDO> itemRequisitionDetails = new ArrayList<>();
// for (ItemRequisitionAndStock item : list) {
// ItemRequisitionDetailDO detailDO = new ItemRequisitionDetailDO()
// .setProductId(item.getItemId())
// .setUnitId(item.getUnitId())
// .setNumber(item.getNumber())
// .setIsEnable(true);
// itemRequisitionDetails.add(detailDO);
// }
// saveReqVO.setItemRequisitionDetails(itemRequisitionDetails);
// saveReqVO.setStatus(ItemRequisitionStatusEnum.下达.getValue());
// if (saveReqVO.getRequisitionDate() == null)
// saveReqVO.setRequisitionDate(LocalDateTime.now());
List<ItemRequisitionAndStock> list = analysisService.getItemAnalysis(plan); // 产品 num
List<ItemRequisitionDetailDO> itemRequisitionDetails = new ArrayList<>();
for (ItemRequisitionAndStock item : list) {
ItemRequisitionDetailDO detailDO = new ItemRequisitionDetailDO()
.setProductId(item.getItemId())
.setUnitId(item.getUnitId())
.setNumber(item.getNumber())
.setIsEnable(true);
itemRequisitionDetails.add(detailDO);
}
ItemRequisitionSaveReqVO saveReqVO = new ItemRequisitionSaveReqVO();
saveReqVO.setItemRequisitionDetails(itemRequisitionDetails);
saveReqVO.setStatus(ItemRequisitionStatusEnum..getValue());
if (saveReqVO.getRequisitionDate() == null)
saveReqVO.setRequisitionDate(LocalDateTime.now());
// // 创建领料单
// Long id = itemRequisitionService.createItemRequisition(saveReqVO);
Long id = itemRequisitionService.createItemRequisition(saveReqVO);
//更新计划状态
plan.setStatus(PlanStatusEnum..getValue());
plan.setIsEnable(true);
plan.setProductionManagerId(createReqVO.getWorkerId());
plan.setFeedingPipeline(createReqVO.getFeedingPipeline());
plan.setStartTime(LocalDateTime.now());
//plan.setRequisitionId(id);
plan.setRequisitionId(id);
planMapper.insert(plan);
return plan.getId();
}
@ -245,7 +248,7 @@ public class PlanServiceImpl implements PlanService {
planDO.setStatus(PlanStatusEnum..getValue());
planDO.setIsEnable(true);
planDO.setProductionManagerId(saveReqVO.getWorkerId());
planDO.setFeedingPipeline(saveReqVO.getFeedingPipeline());
//planDO.setFeedingPipeline(saveReqVO.getFeedingPipeline());
planDO.setStartTime(LocalDateTime.now());
planDO.setRequisitionId(id);
planMapper.updateById(planDO);
@ -289,7 +292,7 @@ public class PlanServiceImpl implements PlanService {
}
@Override
public void updateStatus( Long id,Integer status){
if(status.equals(PlanStatusEnum..getValue())){
if(status.equals(PlanStatusEnum..getValue())){
PlanDO plan = planMapper.selectById(id);
TaskDO taskDO = taskService.getTask(plan.getTaskId());
if( taskDO.getStatus().equals(TaskStatusEnum..getValue())) {

@ -175,7 +175,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
, ChangeTypeEnum..getValue());
//分配给开工中的计划
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
List<PlanDO> planList = planService.getPlanByStatusAndProduct(statusList,reportDetailDO.getProductId());
if(planList!=null && planList.size()>0){
//该种产品只有一个计划在开工
@ -230,7 +230,7 @@ public class ProduceReportDetailServiceImpl implements ProduceReportDetailServic
produceReportDetailMapper.updateById(reportDetailDO);
//分配给开工中的计划
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
List<PlanDO> planList = planService.getPlanByStatusAndProduct(statusList,reportDetailDO.getProductId());
if(planList!=null && planList.size()>0){
//该种产品只有一个计划在开工

@ -141,7 +141,7 @@ public class StockInDetailServiceImpl implements StockInDetailService {
bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(),stockIn.getInTime()));
});
List<Integer> statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
List<StockInDetailDO> resultList = new ArrayList<>();
//入库产品分配给计划

@ -81,7 +81,7 @@ public class MesStockInServiceImpl implements MesStockInService {
//开工的计划列表
statusList = new ArrayList<>();
statusList.add(PlanStatusEnum..getValue());
statusList.add(PlanStatusEnum..getValue());
List<PlanDO> startPlans = planService.getPlanByStatus(statusList);
planService.buildProgress(startPlans);
//合并同产品
@ -128,7 +128,7 @@ public class MesStockInServiceImpl implements MesStockInService {
//将完成数大于计划数的完工计划状态改为 入库状态
for (PlanDO plan : finishedPlans) {
if(plan.getFinishNumber()>= plan.getPlanNumber()){
planService.updateStatus(plan.getId(), PlanStatusEnum..getValue());
planService.updateStatus(plan.getId(), PlanStatusEnum..getValue());
}
}
}

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.mes.service.zjproduct;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.mes.controller.admin.zjproduct.vo.*;
import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.zjproduct.ZjProductDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
@ -51,5 +52,11 @@ public interface ZjProductService {
* @return -
*/
PageResult<ZjProductDO> getZjProductPage(ZjProductPageReqVO pageReqVO);
/**
*
*
* @param productId ID
* @return
*/
List<ZjProductDO> getZjProductByPlanId(Long productId);
}

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.mes.service.zjproduct;
import cn.iocoder.yudao.module.mes.dal.dataobject.paigongrecord.PaigongRecordDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -71,4 +72,9 @@ public class ZjProductServiceImpl implements ZjProductService {
return zjProductMapper.selectPage(pageReqVO);
}
@Override
public List<ZjProductDO> getZjProductByPlanId(Long productId) {
return zjProductMapper.selectListByProductId(productId);
}
}
Loading…
Cancel
Save