排产相关-sjx

master
sunjianxi 8 hours ago
parent b9ee4d31f6
commit ed69dfaf1b
  1. 168
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/TeamSetController.java
  2. 14
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java
  3. 5
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/entity/PersonAbilityEntity.java
  4. 171
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/SchedulingBoardExcel.java
  5. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/excel/WorkCenterExcel.java
  6. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/TeamSetMapper.java
  7. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/TeamSetMapper.xml
  8. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.java
  9. 44
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml
  10. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/YieldOrderMapper.xml
  11. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/ITeamSetService.java
  12. 3
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/IWorkOrderService.java
  13. 4
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/TeamSetServiceImpl.java
  14. 54
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java

@ -0,0 +1,168 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.scheduling.scheduling.entity.TeamSetEntity;
import org.springblade.scheduling.scheduling.excel.TeamSetExcel;
import org.springblade.scheduling.scheduling.service.ITeamSetService;
import org.springblade.scheduling.scheduling.vo.TeamSetVO;
import org.springblade.scheduling.scheduling.wrapper.TeamSetWrapper;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 班组设置表 控制器
*
* @author BladeX
* @since 2025-12-22
*/
@RestController
@AllArgsConstructor
@RequestMapping("/teamSet")
@Tag(name = "班组设置表", description = "班组设置表接口")
public class TeamSetController extends BladeController {
private final ITeamSetService teamSetService;
/**
* 班组设置表 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@Operation(summary = "详情", description = "传入TeamSet")
public R<TeamSetVO> detail(TeamSetEntity TeamSet) {
TeamSetEntity detail = teamSetService.getOne(Condition.getQueryWrapper(TeamSet));
return R.data(TeamSetWrapper.build().entityVO(detail));
}
/**
* 班组设置表 分页
*/
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@Operation(summary = "分页", description = "传入TeamSet")
public R<IPage<TeamSetVO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> TeamSet, Query query) {
IPage<TeamSetEntity> pages = teamSetService.page(Condition.getPage(query), Condition.getQueryWrapper(TeamSet, TeamSetEntity.class));
return R.data(TeamSetWrapper.build().pageVO(pages));
}
/**
* 班组设置表 自定义分页
*/
@GetMapping("/page")
@ApiOperationSupport(order = 3)
@Operation(summary = "分页", description = "传入TeamSet")
public R<IPage<TeamSetVO>> page(TeamSetVO TeamSet, Query query) {
IPage<TeamSetVO> pages = teamSetService.selectTeamSetPage(Condition.getPage(query), TeamSet);
return R.data(pages);
}
/**
* 班组设置表 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入TeamSet")
public R save(@Valid @RequestBody TeamSetEntity TeamSet) {
return R.status(teamSetService.save(TeamSet));
}
/**
* 班组设置表 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@Operation(summary = "修改", description = "传入TeamSet")
public R update(@Valid @RequestBody TeamSetEntity TeamSet) {
return R.status(teamSetService.updateById(TeamSet));
}
/**
* 班组设置表 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@Operation(summary = "新增或修改", description = "传入TeamSet")
public R submit(@Valid @RequestBody TeamSetEntity TeamSet) {
return R.status(teamSetService.saveOrUpdate(TeamSet));
}
/**
* 班组设置表 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 7)
@Operation(summary = "逻辑删除", description = "传入ids")
public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) {
return R.status(teamSetService.deleteLogic(Func.toLongList(ids)));
}
/**
* 导出数据
*/
@IsAdmin
@GetMapping("/export-TeamSet")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入TeamSet")
public void exportTeamSet(@Parameter(hidden = true) @RequestParam Map<String, Object> TeamSet, BladeUser bladeUser, HttpServletResponse response) {
QueryWrapper<TeamSetEntity> queryWrapper = Condition.getQueryWrapper(TeamSet, TeamSetEntity.class);
//if (!AuthUtil.isAdministrator()) {
// queryWrapper.lambda().eq(TeamSet::getTenantId, bladeUser.getTenantId());
//}
//queryWrapper.lambda().eq(TeamSetEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED);
List<TeamSetExcel> list = teamSetService.export(queryWrapper);
ExcelUtil.export(response, "班组设置表数据" + DateUtil.time(), "班组设置表数据表", list, TeamSetExcel.class);
}
@GetMapping("/findList")
@ApiOperationSupport(order = 2)
@Operation(summary = "列表", description = "传入Equipment")
public R<List<TeamSetEntity>> findList() {
List<TeamSetEntity> list = teamSetService.list();
return R.data(list);
}
}

@ -46,10 +46,12 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.scheduling.scheduling.dto.WorkOrderDto;
import org.springblade.scheduling.scheduling.entity.WorkOrderEntity;
import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel;
import org.springblade.scheduling.scheduling.vo.WorkOrderVO;
import org.springblade.scheduling.scheduling.excel.WorkOrderExcel;
import org.springblade.scheduling.scheduling.service.IWorkOrderService;
import org.springblade.scheduling.scheduling.wrapper.WorkOrderWrapper;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
@ -229,4 +231,16 @@ public class WorkOrderController extends BladeController {
return R.data(workOrderService.selectEquip());
}
/**
* 导出数据
*/
@PostMapping("/exportBoard")
@ApiOperationSupport(order = 9)
@Operation(summary = "导出数据", description = "传入WorkOrder")
public void exportSchedulingBoard(@RequestBody WorkOrderDto workOrder, HttpServletResponse response) {
List<SchedulingBoardExcel> list = workOrderService.exportSchedulingBoard(workOrder);
ExcelUtil.export(response, "车间订单表数据" + DateUtil.time(), "车间订单表数据表", list, SchedulingBoardExcel.class);
}
}

@ -97,5 +97,10 @@ public class PersonAbilityEntity extends BaseEntity {
@Schema(description = "准备工时(分钟)")
private BigDecimal prepareTime;
/**
* 0-按单个零件统计 1-按订单统计
*/
@Schema(description = "0-按单个零件统计 1-按订单统计")
private String type;
}

@ -0,0 +1,171 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.scheduling.scheduling.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 车间订单表 Excel实体类
*
* @author BladeX
* @since 2025-11-28
*/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class SchedulingBoardExcel implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 车间订单号
*/
@ColumnWidth(20)
@ExcelProperty("车间订单号")
private String woCode;
/**
* 流程卡号
*/
@ColumnWidth(20)
@ExcelProperty("流程卡号")
private String cardNo;
/**
* 零件号
*/
@ColumnWidth(20)
@ExcelProperty("零件号")
private String partCode;
/**
* 产品名称
*/
@ColumnWidth(20)
@ExcelProperty("产品名称")
private String partName;
/**
* 批次号
*/
@ColumnWidth(20)
@ExcelProperty("批次号")
private String batchNo;
/**
* 质量等级
*/
@ColumnWidth(20)
@ExcelProperty("质量等级")
private String productIdent;
/**
* 镀种信息
*/
@ColumnWidth(20)
@ExcelProperty("镀种信息")
private String plate;
/**
* 面积
*/
@ColumnWidth(20)
@ExcelProperty("面积(dm2)")
private String ypArea;
/**
* 生产数量
*/
@ColumnWidth(20)
@ExcelProperty("生产数量")
private String makeQty;
/**
* 下达时间
*/
@ColumnWidth(20)
@ExcelProperty("下达时间")
private String releaseDate;
/**
* 当前工序
*/
@ColumnWidth(20)
@ExcelProperty("当前工序")
private String currentProcess;
/**
* 加工班组
*/
@ColumnWidth(20)
@ExcelProperty("加工班组")
private String teamName;
/**
* 下一工序
*/
@ColumnWidth(20)
@ExcelProperty("下一工序")
private String nextProcess;
/**
* 计划开始时间
*/
@ColumnWidth(20)
@ExcelProperty("计划开始时间")
private String planStartDate;
/**
* 计划结束时间
*/
@ColumnWidth(20)
@ExcelProperty("计划结束时间")
private String planEndDate;
/**
* 需求交期
*/
@ColumnWidth(20)
@ExcelProperty("需求交期")
private String demandDate;
}

@ -177,7 +177,7 @@ public class WorkCenterExcel implements Serializable {
*
*/
@ColumnWidth(20)
@ExcelProperty("")
@ExcelProperty("备注")
private String remarks;
/**
*

@ -50,7 +50,7 @@ public interface TeamSetMapper extends BaseMapper<TeamSetEntity> {
* @param bsTeamSet 查询参数
* @return List<BsTeamSetVO>
*/
List<TeamSetVO> selectBsTeamSetPage(IPage page, TeamSetVO bsTeamSet);
List<TeamSetVO> selectTeamSetPage(IPage page, TeamSetVO bsTeamSet);
/**

@ -29,7 +29,7 @@
</resultMap>
<select id="selectBsTeamSetPage" resultMap="bsTeamSetResultMap">
<select id="selectTeamSetPage" resultMap="bsTeamSetResultMap">
select * from BS_TEAM_SET where is_deleted = 0
</select>

@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.scheduling.scheduling.dto.WorkOrderDto;
import org.springblade.scheduling.scheduling.entity.WorkOrderEntity;
import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel;
import org.springblade.scheduling.scheduling.excel.WorkOrderExcel;
import org.springblade.scheduling.scheduling.vo.WorkOrderVO;
@ -73,4 +74,6 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrderEntity> {
List<String> selectEquip();
List<SchedulingBoardExcel> exportSchedulingBoard(WorkOrderDto workOrderDto);
}

@ -178,4 +178,48 @@
FROM MES_EQUIPMENT
</select>
<select id="exportSchedulingBoard" resultType="org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel">
SELECT
a.WO_CODE as "woCode",
a.CARD_NO as "cardNo",
a.PART_CODE as "partCode",
b.PART_NAME as "partName",
a.BATCH_NO as "batchNo",
b.product_ident as "productIdent",
b.plate as "plate",
b.yp_area as "ypArea",
a.MAKE_QTY as "makeQty",
b.RELEASE_DATE as "releaseDate",
d.name as "currentProcess",
g.ts_name as "teamName",
f.name as "nextProcess",
a.PLAN_START_DATE as "planStartDate",
a.PLAN_END_DATE as "planEndDate",
b.DEMAND_DATE as "demandDate"
FROM
MES_WORK_ORDER a
LEFT JOIN MES_YIELD_ORDER b ON a.YO_ID = b.ID
LEFT JOIN MES_WORK_PLAN c ON a.WP_ID = c.ID
LEFT JOIN BS_PROCESS_SET d on c.PPS_ID = d.ID
LEFT JOIN MES_WORK_PLAN e ON c.NEXT_WP_ID = e.ID
LEFT JOIN BS_PROCESS_SET f ON e.PPS_ID = f.ID
LEFT JOIN BS_TEAM_SET g on c.MAKE_TEAM = g.ID
<where>
a.is_deleted = 0
<if test="startTime !=null and startTime != ''">
and (to_char(c.start_time,'YYYY-MM-DD') = #{startTime} or (c.start_time <![CDATA[ < ]]> to_date(CONCAT(#{startTime},' 00:00:00'),'YYYY-MM-DD HH24:MI:SS') and c.end_time <![CDATA[ > ]]> to_date(CONCAT(#{startTime},' 23:59:59'),'YYYY-MM-DD HH24:MI:SS')))
</if>
<if test="woCode !=null and woCode != ''">
and a.wo_code = #{woCode}
</if>
<if test="teamName !=null and teamName != ''">
and g.ts_name = #{teamName}
</if>
<if test="processName !=null and processName != ''">
and d.name = #{processName}
</if>
</where>
order by a.WO_CODE,c.start_time
</select>
</mapper>

@ -93,7 +93,7 @@
LEFT JOIN MES_YIELD_ORDER b ON a.YO_ID = b.ID
WHERE
a.WORK_CENTER_ID IN ( '122', '162', '184' )
AND b.STATUS = 3
AND b.STATUS = 10003
ORDER BY
b.WORK_CENTER_ID,
b.PRIORITY_APS

@ -48,7 +48,7 @@ public interface ITeamSetService extends BaseService<TeamSetEntity> {
* @param bsTeamSet 查询参数
* @return IPage<BsTeamSetVO>
*/
IPage<TeamSetVO> selectBsTeamSetPage(IPage<TeamSetVO> page, TeamSetVO bsTeamSet);
IPage<TeamSetVO> selectTeamSetPage(IPage<TeamSetVO> page, TeamSetVO bsTeamSet);
/**

@ -30,6 +30,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.scheduling.scheduling.dto.WorkOrderDto;
import org.springblade.scheduling.scheduling.entity.WorkOrderEntity;
import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel;
import org.springblade.scheduling.scheduling.excel.WorkOrderExcel;
import org.springblade.scheduling.scheduling.vo.WorkOrderVO;
@ -84,4 +85,6 @@ public interface IWorkOrderService extends BaseService<WorkOrderEntity> {
List<String> selectTeam();
List<String> selectEquip();
List<SchedulingBoardExcel> exportSchedulingBoard(WorkOrderDto workOrder);
}

@ -51,8 +51,8 @@ public class TeamSetServiceImpl extends BaseServiceImpl<TeamSetMapper, TeamSetEn
TeamSetMapper teamSetMapper;
@Override
public IPage<TeamSetVO> selectBsTeamSetPage(IPage<TeamSetVO> page, TeamSetVO bsTeamSet) {
return page.setRecords(baseMapper.selectBsTeamSetPage(page, bsTeamSet));
public IPage<TeamSetVO> selectTeamSetPage(IPage<TeamSetVO> page, TeamSetVO bsTeamSet) {
return page.setRecords(baseMapper.selectTeamSetPage(page, bsTeamSet));
}

@ -41,6 +41,7 @@ import org.springblade.core.tool.utils.DateUtil;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.scheduling.scheduling.dto.WorkOrderDto;
import org.springblade.scheduling.scheduling.entity.*;
import org.springblade.scheduling.scheduling.excel.SchedulingBoardExcel;
import org.springblade.scheduling.scheduling.excel.WorkOrderExcel;
import org.springblade.scheduling.scheduling.mapper.WorkOrderMapper;
import org.springblade.scheduling.scheduling.service.*;
@ -202,11 +203,14 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
mergedDto.setCurrentProcessName(dto.getCurrentProcessName());
mergedDto.setMakeQty(dto.getMakeQty());
mergedDto.setEquipName(dto.getEquipName());
mergedDto.setProductIdent(dto.getProductIdent());
if(dto.getPlanStartTime().equals(minStartTime)){
mergedDto.setStartTime(dto.getStartTime());
mergedDto.setFactStartTime(dto.getFactStartTime());
}
if(dto.getPlanEndTime().equals(maxEndTime)){
mergedDto.setEndTime(dto.getEndTime());
mergedDto.setFactEndTime(dto.getFactEndTime());
mergedDto.setPlanStatus(dto.getPlanStatus());
}
}
@ -281,6 +285,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return baseMapper.selectEquip();
}
@Override
public List<SchedulingBoardExcel> exportSchedulingBoard(WorkOrderDto workOrder) {
return baseMapper.exportSchedulingBoard(workOrder);
}
void calculateCr(List<YieldOrderEntity> list) {
//查询订单下的工序,计算cr值
for (YieldOrderEntity entity : list) {
@ -325,7 +334,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<Long> workCenterList = craftList.stream().filter(item -> item.getWorkCenterId() != null).map(YieldOrderCraftEntity::getWorkCenterId).collect(Collectors.toList());
if(workCenterList.size() != craftList.size()){
order.setErrorInfo("工序信息不完整,含有未匹配作业中心的工序");
order.setStatus(6);
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
yieldOrderService.updateById(order);
continue;
}
@ -344,7 +353,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<EquipAbilityEntity> equipAbilityList = equipAbilityService.list(Wrappers.<EquipAbilityEntity>lambdaQuery().in(EquipAbilityEntity::getWorkCenterId, craft.getWorkCenterId()).eq(EquipAbilityEntity::getCraftId,craft.getCaId()));
if(CollectionUtils.isEmpty(equipAbilityList)){
order.setErrorInfo("设备未匹配到对应的设备能力");
order.setStatus(6);
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
yieldOrderService.updateById(order);
isSchecuding = false;
break;
@ -358,7 +367,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
//根据时间点获取所有设备资源
List<EquipResourceEntity> equipResourceList = equipResourceService.list(Wrappers.<EquipResourceEntity>lambdaQuery().eq(EquipResourceEntity::getCraftId,craft.getCaId()).eq(EquipResourceEntity::getWorkCenterId,craft.getWorkCenterId()).ge(EquipResourceEntity::getStartTime, dateTime).eq(EquipResourceEntity::getIsUsed, 0).in(EquipResourceEntity::getEquipOrder, entry.getKey()));
if(CollectionUtils.isEmpty(equipResourceList)){
order.setStatus(6);
order.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
order.setErrorInfo("工序:"+craft.getPpsId()+"未匹配到对应的设备资源");
yieldOrderService.updateById(order);
isSchecuding = false;
@ -475,22 +484,25 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
WorkPlanEntity workPlan = new WorkPlanEntity();
BigDecimal totalTime = new BigDecimal(0);
PersonAbilityEntity ability = personAbilityMap.get(craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId());
List<Long> ppsIds = Arrays.asList(Long.valueOf(10),Long.valueOf(21));
//镀后检验和镀后接收先按半小时计算
if(ability != null){
if(ppsIds.contains(craft.getPpsId())){
if("镀后检验".equals(ability.getProcessName()) || "镀后接收".equals(ability.getProcessName())){
totalTime = BigDecimal.valueOf(30);
workPlan.setStartTime(prevProcessEnd.plusMinutes(30));
workPlan.setEndTime(prevProcessEnd.plusMinutes(60));
if(craft.getPpsId() == 10){
if("镀后接收".equals(ability.getProcessName())){
workPlan.setMakeTeam(Long.valueOf(64));
}
if(craft.getPpsId() == 21){
if("镀后检验".equals(ability.getProcessName())){
workPlan.setMakeTeam(Long.valueOf(65));
}
prevProcessEnd = workPlan.getEndTime();
}else{
totalTime = totalTime.add(BigDecimal.valueOf(order.getYpQty()).multiply(personAbilityMap.get(craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId()).getStandardTime()).add(personAbilityMap.get(craft.getWorkCenterId() + "-" + craft.getPpsId() + "-" + craft.getCaId()).getPrepareTime()));
if("0".equals(ability.getType())){
totalTime = totalTime.add(BigDecimal.valueOf(order.getYpQty()).multiply(ability.getStandardTime()).add(ability.getPrepareTime()));
}else{
totalTime = totalTime.add(ability.getStandardTime()).add(ability.getPrepareTime());
}
}
@ -561,6 +573,12 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
craftLock.unlock(); // 释放本地锁
}*/
}else{
//没有人员能力的先默认30分钟
totalTime = BigDecimal.valueOf(30);
workPlan.setStartTime(prevProcessEnd);
workPlan.setEndTime(prevProcessEnd.plusMinutes(30));
prevProcessEnd = workPlan.getEndTime();
}
workPlan.setWoId(order.getId());
@ -580,7 +598,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}else{
//未匹配到设备和人力资源,将工序状态改为6,标识为未排产
craft.setStatus(6);
craft.setStatus(YieldOrderEnum.STATUS_PROCESS_ERROR.getCategory());
yieldOrderCraftService.updateById(craft);
}
if(!isSchecuding){
@ -617,16 +635,27 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
workOrder.setQuotaExceptional("0");
workOrder.setReInStore("0");
workOrder.setPartCode(order.getPartCode());
workOrder.setDemandDate(order.getDemandDate());
this.save(workOrder);
workPlanList.forEach(workPlanEntity -> {
workPlanEntity.setWoId(workOrder.getId());
workPlanService.save(workPlanEntity);
});
for(int i=0;i<workPlanList.size();i++){
WorkPlanEntity workPlan = workPlanList.get(i);
if(i != 0){
workPlan.setFrontWpId(workPlanList.get(i-1).getId());
}
if(i != workPlanList.size() -1){
workPlan.setNextWpId(workPlanList.get(i+1).getId());
}
workPlanService.updateById(workPlan);
}
workOrder.setWpId(workPlanList.get(0).getId());
this.updateById(workOrder);
//更新订单状态为已排产
order.setStatus(4);
order.setStatus(YieldOrderEnum.STATUS_PROCESS_WAITING.getCategory());
order.setErrorInfo(null);
yieldOrderService.updateById(order);
workOrderList.add(workOrder);
@ -717,6 +746,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
current.setMakeTeam(prev.getMakeTeam());
}
}
for(int i=0;i<list.size();i++){
}
}
@ -863,7 +895,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
this.deleteLogic(Arrays.asList(workOrder.getId()));
}
yieldOrder.setStatus(3);
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCategory());
yieldOrderService.updateById(yieldOrder);
}

Loading…
Cancel
Save