生产监控接口修改

liweidong
李涛 1 month ago
parent 77fe02d798
commit 5593e77687
  1. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/WorkOrder.java
  2. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorOrderDataVO.java
  3. 3
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/ProduceMonitorWorkPlanVO.java
  4. 129
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/WorkPlanLoadVO.java
  5. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  6. 25
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  7. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MakeRecServiceImpl.java
  8. 43
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java

@ -290,7 +290,7 @@ public class WorkOrder extends BaseEntity {
* 已入库数量
*/
@Schema(description = "已入库数量")
private Integer inventoryQty;
private Double inventoryQty;
/**
* 运行状态;1.正常2.已下达3.加工中4.检验中13.审理中14.返工中15.已完工21已作废
*/

@ -85,6 +85,9 @@ public class ProduceMonitorOrderDataVO {
@Schema(description = "返工单号(仅状态为19的车间订单在生产监控展示)")
private String qcReworkCode;
@Schema(description = "主加工单位")
private String mainProcessingUnit;
@Schema(description = "零件信息")
private ProduceMonitorDsPartVO dsPart;

@ -32,6 +32,9 @@ public class ProduceMonitorWorkPlanVO {
@Schema(description = "加工班组")
private String makeTeam;
@Schema(description = "外协商")
private String oemCustomer;
@Schema(description = "接收人ID")
private Long receiveMan;

@ -1,17 +1,136 @@
package org.springblade.desk.produce.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import java.util.Date;
/**
* 分批准备数据 视图实体类
* 任务接收数据返回 视图实体类
*
* @author litao
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WorkPlanLoadVO extends WorkPlan {
public class WorkPlanLoadVO {
@Schema(description = "下级B号")
private String nextRoam;
@Schema(description = "生产单号")
private String yoCode;
@Schema(description = "计划单号")
private String ypCode;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "产品型号")
private String productType;
@Schema(description = "名称")
private String partName;
@Schema(description = "镀种")
private String plate;
@Schema(description = "生产标识")
private String prodIdent;
@Schema(description = "使用部门")
private String useDept;
@Schema(description = "面积(㎡)")
private Double poArea;
@Schema(description = "需求交期")
private Date demandDate;
@Schema(description = "计划员")
private String planUser;
@Schema(description = "计划下达时间")
private Date releaseDate;
@Schema(description = "一级工艺线路")
private String primaryCraft;
@Schema(description = "路线卡号")
private String cardNo;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "订单编号")
private String woCode;
@Schema(description = "加工数量")
private Double makeQty;
@Schema(description = "未报工数量")
private Double notWorkQty;
@Schema(description = "已报工数量")
private Double workQty;
@Schema(description = "报废数量")
private Double scrapQty;
@Schema(description = "计划开始日期")
private Date planStartTime;
@Schema(description = "计划完工日期")
private Date planEndTime;
@Schema(description = "已入库数量")
private Double inventoryQty;
@Schema(description = "已入库数量")
private Double notInQty;
public Integer runStatus;
@Schema(description = "运行状态")
public String runStatusTitle;
@Schema(description = "工序状态")
public Short status;
public Integer priority;
@Schema(description = "优先级")
public String priorityTitle;
public Integer pickingStatus;
@Schema(description = "领料状态")
public String pickingStatusTitle;
@Schema(description = "是否绑定挂次号")
public Integer isBing;
@Schema(description = "当前工序")
public Long currentWpId;
@Schema(description = "当前工序ID")
public Long wpId;
@Schema(description = "当前工序名称")
public String currentWpTitle;
@Schema(description = "当前工序加工班组")
public String currentMakeTeam;
@Schema(description = "上序名称")
public String frontWpTitle;
@Schema(description = "上序加工班组")
public String frontMakeTeam;
@Schema(description = "下序名称")
public String nextWpTitle;
@Schema(description = "下序加工班组")
public String nextMakeTeam;
}

@ -28,4 +28,6 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
List<String> loadPrMacToolUseByMtnCode(@Param("mtnCode") String mtnCode);
List<ProduceMonitorWorkPlanVO> getProduceMonitorWorkPlanList(Long woId);
List<WorkPlan> loadNotReceived(List<Long> tsIds, Long id);
}

@ -76,6 +76,7 @@
bpe.NAME AS ppsName,
bpe.IS_MAIN AS mainProcess,
bte.TS_NAME AS makeTeam,
bo.OC_NAME AS oemCustomer,
mwp.RECEIVE_MAN AS receiveMan,
mmr.WORKER AS workMan,
mwp.WORK_QTY AS workQty,
@ -88,8 +89,32 @@
LEFT JOIN BS_PROCESS_SET bpe ON mwp.PPS_ID = bpe.ID
LEFT JOIN BS_TEAM_SET bte ON mwp.MAKE_TEAM = bte.ID
LEFT JOIN MES_MAKE_REC mmr ON mwp.ID = mmr.WP_ID
LEFT JOIN BS_OEM bo ON mwp.OC_ID = bo.ID
WHERE mwp.WO_ID = #{woId}
ORDER BY mwp.ORDERS
</select>
<select id="loadNotReceived" resultType="org.springblade.desk.produce.pojo.entity.WorkPlan">
SELECT a.* FROM mes_work_plan a
INNER JOIN mes_WORK_ORDER c ON a.wo_id = c.ID
INNER JOIN mes_YIELD_ORDER d ON c.yo_id = d.ID
LEFT JOIN mes_work_plan b ON a.front_wp_id = b.ID
WHERE ((a.front_wp_id IS NULL AND a.status = 1) OR (b.status = 3))
AND a.make_team IN
<foreach collection = "tsIds" item = "tsId" open = "(" separator = "," close = ")">
#{tsId}
</foreach>
AND a.subsidiary_team IS NULL AND c.run_status >= 2 AND c.run_status &lt; 15 AND c.id = #{id}
UNION
SELECT a.* FROM mes_work_plan a
INNER JOIN mes_WORK_ORDER c ON a.wo_id = c.ID
INNER JOIN mes_YIELD_ORDER d ON c.yo_id = d.ID
LEFT JOIN mes_work_plan b ON a.front_wp_id = b.ID
WHERE ((a.front_wp_id IS NULL AND a.status = 1) OR (b.status = 3))
AND a.subsidiary_team IN
<foreach collection = "tsIds" item = "tsId" open = "(" separator = "," close = ")">
#{tsId}
</foreach>
AND c.run_status >= 2 AND c.run_status &lt; 15 AND c.id = #{id}
</select>
</mapper>

@ -2,6 +2,7 @@ package org.springblade.desk.produce.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jodd.bean.BeanUtil;
import lombok.RequiredArgsConstructor;
@ -38,8 +39,10 @@ import org.springblade.system.pojo.entity.DataScope;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@ -287,19 +290,23 @@ public class MakeRecServiceImpl extends BaseServiceImpl<MakeRecMapper, MakeRec>
@Override
public List<WorkPlanLoadVO> loadNotReceived(String cardNo) {
List<Long> tsIds = relTeamSetUserService.
list(Wrappers.lambdaQuery(RelTeamSetUser.class)
.eq(RelTeamSetUser::getUserId, AuthUtil.getUserId()))
.stream().map(RelTeamSetUser::getUserId).collect(Collectors.toList());
List<Long> tsIds = relTeamSetUserService.list(Wrappers.lambdaQuery(RelTeamSetUser.class).eq(RelTeamSetUser::getUserId, AuthUtil.getUserId())).stream().map(RelTeamSetUser::getTeamSetId).collect(Collectors.toList());
List<WorkPlanLoadVO> rtnList = new ArrayList<>();
if (CollectionUtils.isEmpty(tsIds)) {
return rtnList;
}
WorkOrder wo = workOrderMapper.getWorkOrderByCardNo(cardNo, (short) 0);
List<WorkPlan> wpList= workPlanMapper.selectList(Wrappers.<WorkPlan>lambdaQuery()
.eq(WorkPlan::getWoId, wo.getId()).in(WorkPlan::getMakeTeam, tsIds));
List<WorkPlanLoadVO> wpLoadList = wpList.stream().map(wp -> {
Optional.ofNullable(wo).orElseThrow(() -> new ServiceException("车间订单不存在!"));
// List<WorkPlan> wpList= workPlanMapper.selectList(Wrappers.<WorkPlan>lambdaQuery().eq(WorkPlan::getWoId, wo.getId()).in(WorkPlan::getMakeTeam, tsIds));
List<WorkPlan> wpList= workPlanMapper.loadNotReceived(tsIds,wo.getId());
if (CollectionUtils.isNotEmpty(wpList)) {
rtnList = wpList.stream().map(wp -> {
WorkPlanLoadVO wpLoad = new WorkPlanLoadVO();
BeanUtils.copyProperties(wp, wpLoad);
return wpLoad;
}).collect(Collectors.toList());
return wpLoadList;
}
return rtnList;
}
@Override

@ -19,6 +19,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.desk.basic.constant.FlowConst;
import org.springblade.desk.basic.service.IOemService;
import org.springblade.desk.basic.service.IProcessAbilityService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
@ -137,6 +138,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final IMesRbFilePreserveDetailService mesRbFilePreserveDetailService;
private final IOemService oemService;
@Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -734,7 +737,32 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private void updateStatusFun(WorkOrder workOrder, Integer runStatus, Long userId) {
workOrder.setRunStatus(runStatus);
if (WorkOrder.RUN_STATUS_VOIDED.equals(runStatus)) {
if (WorkOrder.RUN_STATUS_RECEIVE.equals(runStatus)) {
workOrder.setPickingStatus(WorkOrder.PICKING_STATUS_OK);
yieldOrderService.updateYieldStatus(workOrder.getYoId(), YieldOrder.CUR_STATUS_PROCESSING, 0d);
} else if (WorkOrder.RUN_STATUS_COMPLETED.equals(runStatus) || WorkOrder.RUN_STATUS_HANDOVER.equals(runStatus)) {
if (workOrder.getPutStoreTime() == null) {
workOrder.setPutStoreTime(new Date());
}
workOrder.setInventoryQty(workOrder.getMakeQty());
WorkOrderRun workOrderRun = workOrderRunService.getById(workOrder.getWorId());
if (workOrderRun != null) {
workOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_COMPLETED);
workOrderRunService.updateById(workOrderRun);
}
yieldOrderService.updateYieldStatus(workOrder.getYoId(), YieldOrder.CUR_STATUS_COMPLETED, workOrder.getInventoryQty());
} else if (WorkOrder.RUN_STATUS_ISSUED.equals(runStatus)) {
workOrder.setApprovalStatus(WorkOrder.APPROVAL_STATUS_NORMAL);
// if (workOrder.getPrWorkPlan().getMakeTeam() != null) {
// String msgContent = "车间订单:【" + workOrder.getWoCode() + "】,零件号:【" + workOrder.getPjYieldOrder()
// .getPartCode() + ",】批次号:【" + workOrder.getBatchNo() + "】,已下达,请班组长分配工作!!";
// pfMessageService.sendMessage(msgContent, workOrder.getPrWorkPlan().getMakeTeam().getDispatcher().getUserId(),
// PfMessageType.MTCODE_0200, userInfo, Boolean.FALSE, null);
// }
workOrder.setSendDownTime(new Date());
log.info("新车间订单状态修改:{},订单状态{}", workOrder.getWoCode(), workOrder.getRunStatus());
} else if (WorkOrder.RUN_STATUS_VOIDED.equals(runStatus)) {
//整单报废
yieldOrderService.updateYieldStatus(workOrder.getYoId(), YieldOrder.CUR_STATUS_VOIDED, 0d);
WorkOrderRun workOrderRun = workOrderRunService.getById(workOrder.getWorId());
@ -763,12 +791,19 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
}
}
}
this.updateById(workOrder);
} else if (WorkOrder.RUN_STATUS_SCRAP.equals(runStatus)) {
yieldOrderService.updateYieldStatus(workOrder.getYoId(), YieldOrder.CUR_STATUS_COMPLETED, 0d);
WorkOrderRun workOrderRun = workOrderRunService.getById(workOrder.getWorId());
if (workOrderRun != null) {
workOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_COMPLETED);
workOrderRunService.updateById(workOrderRun);
}
}
this.updateById(workOrder);
}
private void addWorkOrder(WorkOrder wo) {
wo.setInventoryQty(0);
wo.setInventoryQty(0d);
wo.setCreateTime(new Date());
wo.setApprovalStatus(WorkOrder.APPROVAL_STATUS_NORMAL);
wo.setPickingStatus(WorkOrder.PICKING_STATUS_NOT);
@ -1129,7 +1164,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
orderDataVO.setDispatcher(user != null ? user.getRealName() : "");
orderDataVO.setProdIdent(yieldOrder.getProductIdent());
orderDataVO.setYpMemo(yieldOrder.getYpMemo());
orderDataVO.setMainProcessingUnit(workOrder.getTsId() != null ? teamSetService.getById(workOrder.getTsId()).getTsName() : workOrder.getOcId() != null ? oemService.getById(workOrder.getOcId()).getOcName() : "");
// 组装零件信息
BeanUtils.copyProperties(dsPartEntity, dsPartVO);
// todo erp查询pdm零件图纸地址

Loading…
Cancel
Save