生产管理-申报

liweidong
sugy 2 months ago
parent bdcd1f5acc
commit 79f03ae78e
  1. 30
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IApsProduceClient.java
  2. 119
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/MesRbRedoRoutDTO.java
  3. 12
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/ShiftTransferDTO.java
  4. 24
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/dto/TaskCompleteOrderDTO.java
  5. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DisTaskingController.java
  6. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PlateAroundController.java
  7. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java
  8. 94
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/WorkProcessController.java
  9. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/ApsProduceClient.java
  10. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.java
  11. 38
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/MacToolUseMapper.xml
  12. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IDisTaskingService.java
  13. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IMacToolUseService.java
  14. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaLoadService.java
  15. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
  16. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java
  17. 57
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java
  18. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/MacToolUseServiceImpl.java
  19. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaLoadServiceImpl.java
  20. 256
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  21. 248
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java

@ -0,0 +1,30 @@
package org.springblade.desk.produce.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* 排产相关定时任务接口声明
*
* @author lqk
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface IApsProduceClient {
String API_PREFIX = "/feign/aps/produce";
String SYNC_ORDER_FROM_OLD_MES = API_PREFIX + "/syncOrderFromOldMes";
/**
* 从旧mes平台同步生产订单
*
* @return
*/
@GetMapping(SYNC_ORDER_FROM_OLD_MES)
Boolean syncOrderFromOldMes();
}

@ -0,0 +1,119 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
/**
* <p>Description: 返工订单 </p>
*
* @author lyj
* @date 2023-03-07 14:54
*/
@Data
public class MesRbRedoRoutDTO {
/**
* 返修单号
*/
private String redono;
/**
* 路线编号
*/
private Integer seqno;
/**
* 处理单位
*/
private String seqdept;
/**
* 物料号
*/
private String prtno;
/**
* 执行状态
*/
private Short excstatus;
/**
* 加工数量
*/
private Double amount;
/**
* 需求日期
*/
private String reqdate;
/**
* 需求数量
*/
private String reqqty;
/**
* 接收日期
*/
private String recdate;
/**
* 接收人
*/
private String recman;
/**
* 接收数量
*/
private String recqty;
/**
* 完成时间
*/
private String enddat;
/**
* 完成人
*/
private String endman;
/**
* 完成数量
*/
private String endqty;
/**
* 批次号
*/
private String splcode;
/**
* 备注
*/
private String remark;
/**
* 交接日期
*/
private String hrecdate;
/**
* 报废数量
*/
private Integer bfqty;
/**
* 发生单位
*/
private String usedept;
/**
* 处理意见
*/
private String detail;
/**
* 生产标识
*/
private String prtlotno;
/**
* 工艺路线
*/
private String deptcode;
/**
* 是否无工艺
*/
private String reworkgyFlag;
/**
* 开单车间订单号
*/
private String sono;
/**
* 镀种
*/
private String plate;
/**
* 工艺责任人
*/
private String gyname;
}

@ -0,0 +1,12 @@
package org.springblade.desk.produce.pojo.dto;
import lombok.Data;
@Data
public class ShiftTransferDTO {
private Long woId;
private Long oldTsId;
private Long newTsId;
}

@ -0,0 +1,24 @@
package org.springblade.desk.produce.pojo.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* 调度任务分派 数据传输对象实体类
* @author litao
*/
@Data
public class TaskCompleteOrderDTO {
@Schema(description = "id集合")
private List<Long> ddtIdList;
@Schema(description = "审理单号")
private String rsCode;
@Schema(description = "处理结果")
private String handleResult;
}

@ -15,6 +15,7 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.entity.DisTasking;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.WorkPlanLog;
@ -22,7 +23,6 @@ import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IWorkPlanLogService;
import org.springblade.job.pojo.entity.JobInfo;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@ -103,6 +103,13 @@ public class DisTaskingController extends BladeController {
public R<IPage<WorkPlanLog>> workPlanLogPage(WorkPlanLog workPlanLog, Query query) {
return R.data(workPlanLogService.page(Condition.getPage(query), Wrappers.lambdaQuery(workPlanLog)));
}
@PostMapping("/taskCompleteOrder")
@ApiOperationSupport(order = 6)
@Operation(summary = "质量任务处理", description = "传入TaskCompleteOrderDTO")
public R taskCompleteOrder(@RequestBody TaskCompleteOrderDTO taskCompleteDTO) {
disTaskingService.taskCompleteOrder(taskCompleteDTO);
return R.success();
}
}

@ -5,25 +5,17 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto;
import org.springblade.desk.produce.pojo.entity.PlateAround;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.AfterPlateInVO;
import org.springblade.desk.produce.pojo.vo.PlateAroundVO;
import org.springblade.desk.produce.service.IPlateAroundService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
@ -113,4 +105,17 @@ public class PlateAroundController extends BladeController {
public R queryDelLogRecord(PlateAroundDto plateAroundDto, Query query) {
return R.data(plateAroundService.queryDelLogRecord(Condition.getPage(query), plateAroundDto));
}
@PostMapping(value = "/savePlateFrontEnter")
@ApiOperationSupport(order = 7)
@Operation(summary = "保存镀前入库", description = "")
public R savePlateFrontEnter(@RequestBody List<PlateAround> plateArounds) {
plateAroundService.savePlateFrontEnter(plateArounds);
return R.success();
}
@PostMapping(value = "/getByPartCode")
@ApiOperationSupport(order = 8)
@Operation(summary = "获取零件信息", description = "")
public R getByPartCode(@RequestParam String partCode) {
return R.data(plateAroundService.getByPartCode(partCode));
}
}

@ -9,6 +9,7 @@ import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.desk.order.service.IYieldPlanService;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.GetMapping;
@ -29,6 +30,8 @@ public class PrWorkPlanController extends BladeController {
private final IWorkPlanService workPlanService;
private final IYieldPlanService yieldPlanService;
/**
* 车间作业计划
*/

@ -0,0 +1,94 @@
package org.springblade.desk.produce.controller;
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.validation.Valid;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
import org.springblade.desk.dashboard.pojo.vo.PrReworkProcessVO;
import org.springblade.desk.dashboard.service.IPrReworkProcessService;
import org.springblade.desk.dashboard.wrapper.PrReworkProcessWrapper;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IMacToolUseService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 返工任务表 控制器
*
* @author BladeX
* @since 2025-12-03
*/
@RestController
@AllArgsConstructor
@RequestMapping("/workProcess")
@Tag(name = "返工任务表", description = "返工任务表接口")
public class WorkProcessController extends BladeController {
private final IPdaSaveService pdaSaveService;
private final IMacToolUseService macToolUseService;
/**
*订单接收
*/
@PostMapping("/receiveOrder")
@ApiOperationSupport(order = 1)
@Operation(summary = "订单接收", description = "传入prReworkProcess")
public R receiveOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.receiveOrder(mesRbRedoRoutDTO);
return R.success();
}
/**
*订单接收
*/
@PostMapping("/completeOrder")
@ApiOperationSupport(order = 2)
@Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO")
public R completeOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.completeOrder(mesRbRedoRoutDTO,AuthUtil.getUser().getUserName());
return R.success();
}
/**
*订单接收
*/
@PostMapping("/uploadPlan")
@ApiOperationSupport(order = 3)
@Operation(summary = "更新车间作业计划", description = "传入workPlanList")
public R uploadPlan(@Valid @RequestBody List<WorkPlan> workPlanList) {
pdaSaveService.uploadPlan(workPlanList);
return R.success();
}
@PostMapping("/shiftTransfer")
@ApiOperationSupport(order = 4)
@Operation(summary = "转班", description = "传入shiftTransferDTO")
public R shiftTransfer(@Valid @RequestBody ShiftTransferDTO shiftTransferDTO) {
pdaSaveService.shiftTransfer(shiftTransferDTO);
return R.success();
}
@GetMapping("/queryData")
@ApiOperationSupport(order = 5)
@Operation(summary = "分页", description = "传入macToolUse")
public R<IPage<MacToolUse>> page(MacToolUse macToolUse, Query query) {
IPage<MacToolUse> pages = macToolUseService.queryMacToolUse(Condition.getPage(query), macToolUse);
return R.data(pages);
}
}

@ -0,0 +1,38 @@
package org.springblade.desk.produce.feign;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Feign 排产相关定时任务接口
*
* @author Chill
*/
@NonDS
@Hidden()
@RestController
@RequiredArgsConstructor
public class ApsProduceClient implements IApsProduceClient {
private final IYieldOrderService yieldOrderService;
@Override
@GetMapping(SYNC_ORDER_FROM_OLD_MES)
public Boolean syncOrderFromOldMes() {
// 同步生产订单
List<String> cardNoList = yieldOrderService.syncYieldOrderFromOldMes();
// 推送同步结果,避免重复同步
yieldOrderService.syncYieldOrderResultToOldMes(cardNoList);
return Boolean.TRUE;
}
}

@ -1,8 +1,11 @@
package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import java.util.List;
/**
* 设备工装使用记录 Mapper 接口
*
@ -10,4 +13,5 @@ import org.springblade.desk.produce.pojo.entity.MacToolUse;
*/
public interface MacToolUseMapper extends BaseMapper<MacToolUse> {
List<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse);
}

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.desk.produce.mapper.MacToolUseMapper">
<!-- 通用查询映射结果 -->
<resultMap id="mesMakeRecResultMap" type="org.springblade.desk.produce.pojo.entity.MacToolUse">
<result column="FLAG_COLOUR_TWO" property="flagColourTwo"/>
<result column="FLAG_INK" property="flagInk"/>
<result column="FLAG_MATTER" property="flagMatter"/>
<result column="BELT_QTY" property="beltQty"/>
<result column="BELT_COLOUR_ONE" property="beltColourOne"/>
<result column="BELT_COLOUR_TWO" property="beltColourTwo"/>
<result column="BELT_INK" property="beltInk"/>
<result column="BELT_MATTER" property="beltMatter"/>
<result column="MEMO" property="memo"/>
<result column="CREATE_USER" property="createUser"/>
<result column="CREATE_DEPT" property="createDept"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_USER" property="updateUser"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="STATUS" property="status"/>
<result column="IS_DELETED" property="isDeleted"/>
<result column="ID" property="id"/>
<result column="WP_ID" property="wpId"/>
<result column="WORKER" property="worker"/>
<result column="WORK_QTY" property="workQty"/>
<result column="SCRAP_QTY" property="scrapQty"/>
<result column="MAKE_TIME" property="makeTime"/>
<result column="FLAG_QTY" property="flagQty"/>
<result column="FLAG_COLOUR_ONE" property="flagColourOne"/>
</resultMap>
<select id="queryMacToolUse" resultMap="mesMakeRecResultMap">
select * from MES_MAKE_REC where is_deleted = 0
</select>
</mapper>

@ -3,6 +3,7 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.entity.DisTasking;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
@ -22,4 +23,6 @@ public interface IDisTaskingService extends BaseService<DisTasking> {
List<ByCardNoByPlanVO> getByCardNoByPlan(String cardNo);
List<MakeRec> queryByWpIdlLst(Long wpId);
void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO);
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
@ -26,4 +27,6 @@ public interface IMacToolUseService extends BaseService<MacToolUse> {
* @param mtuList
*/
void unMacToolUseBind(List<MacToolUse> mtuList);
IPage<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse);
}

@ -59,4 +59,6 @@ public interface IPdaLoadService extends BaseService<WorkPlan> {
List<String> loadPrMacToolUseByMtnCode(String mtnCode);
void deletedProduceRun(String mtnCode);
public WorkOrder checkPrWorkOrder(String cardNo);
}

@ -1,6 +1,8 @@
package org.springblade.desk.produce.service;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo;
@ -58,4 +60,12 @@ public interface IPdaSaveService extends BaseService<WorkPlan> {
* @param unBingDeviceVo 解绑数据
*/
void sjDeviceUnBind(UnBingDeviceVo unBingDeviceVo);
void receiveOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO);
void completeOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO, String user);
void uploadPlan(List<WorkPlan> workPlanList);
void shiftTransfer(ShiftTransferDTO shiftTransferDTO);
}

@ -2,6 +2,7 @@ package org.springblade.desk.produce.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto;
import org.springblade.desk.produce.pojo.entity.PlateAround;
@ -33,4 +34,8 @@ public interface IPlateAroundService extends BaseService<PlateAround> {
boolean deletePlateAround(Long id);
IPage<PlateAroundDelLog> queryDelLogRecord(IPage<PlateAroundDelLog> page, PlateAroundDto plateAroundDto);
void savePlateFrontEnter(List<PlateAround> plateArounds);
DsPartEntity getByPartCode(String partCode);
}

@ -1,28 +1,33 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.dashboard.pojo.entity.DsTaskingEntity;
import org.springblade.desk.dashboard.service.IDsTaskingService;
import org.springblade.desk.produce.mapper.DisTaskingMapper;
import org.springblade.desk.produce.pojo.dto.TaskCompleteDTO;
import org.springblade.desk.produce.pojo.entity.DisTasking;
import org.springblade.desk.produce.pojo.entity.MakeRec;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkOrderRun;
import org.springblade.desk.produce.pojo.dto.TaskCompleteOrderDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.ByCardNoByPlanVO;
import org.springblade.desk.produce.pojo.vo.TaskCompleteVO;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IWorkOrderRunService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.system.cache.UserCache;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -39,6 +44,12 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
private final IWorkOrderRunService workOrderRunService;
private final IDsTaskingService dsTaskingService;
private final IWorkPlanService workPlanService;
private final IWorkPlanItemService workPlanItemService;
private IUserClient userClient;
@Override
@ -75,4 +86,40 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
public List<MakeRec> queryByWpIdlLst(Long wpId) {
return baseMapper.queryByWpIdlLst(wpId);
}
@Override
public void taskCompleteOrder(TaskCompleteOrderDTO taskCompleteDTO) {
List<Long> ddtIds=taskCompleteDTO.getDdtIdList();
for (Long ddtId : ddtIds) {
DisTasking dsDisTasking = baseMapper.selectById(ddtId);
dsDisTasking.setDispatchTime(new Date());
dsDisTasking.setDispatchMan(AuthUtil.getUserId());
dsDisTasking.setRsCode(taskCompleteDTO.getRsCode());
dsDisTasking.setHandleResult(taskCompleteDTO.getHandleResult());
dsDisTasking.setDisTaskStatus(DisTasking.TASK_STATUS_COMPLETED);
DsTaskingEntity dsTaskingEntity = dsTaskingService.getById(dsDisTasking.getDtId());
// 通过零件号查询所有工艺变更的单子
if (dsDisTasking.getDtId() != null && dsTaskingEntity.getId() != null ) {
String partCode = dsTaskingEntity.getPartCode();
if (StringUtils.isNotBlank(partCode) && dsTaskingEntity.getTaskStatus().equals(DisTasking.TASK_STATUS_COMPLETED)) {
List<WorkOrder> prWorkOrderList=workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getPartCode, partCode).eq(WorkOrder::getRunStatus, WorkOrder.RUN_STATUS_CRAFT_CHANGE));
for (WorkOrder prWorkOrder : prWorkOrderList) {
if (prWorkOrder != null && prWorkOrder.getId() != null) {
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_RECEIVE);
//zxh 20250522 增加记录订单变更为加工中日志
// syDockingLogService.sendDockingLog("修改订单执行状态为加工中",prWorkOrder.getWoCode(),"taskCompleteOrder()");
//判定是否是检验项目,并且还有未检验
WorkPlan wp=workPlanService.getById(prWorkOrder.getWpId());
List<WorkPlanItem> list =workPlanItemService.list(Wrappers.lambdaQuery(WorkPlanItem.class)
.eq(WorkPlanItem::getWpId,wp.getId()).eq(WorkPlanItem::getCheckResult, -1));
if (list != null && list.size() > 0) {
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_CHECK);
}
workOrderService.updateById(prWorkOrder);
}
}
}
}
}
}
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -73,6 +74,11 @@ public class MacToolUseServiceImpl extends BaseServiceImpl<MacToolUseMapper, Mac
//this.haveHongXiaoTem(mtu);
}
@Override
public IPage<MacToolUse> queryMacToolUse(IPage<MacToolUse> page, MacToolUse macToolUse) {
return page.setRecords(baseMapper.queryMacToolUse(page, macToolUse));
}
public static final int time2Integer(Date d) {
Calendar cal = Calendar.getInstance();
cal.setTime(d);

@ -237,7 +237,7 @@ public class PdaLoadServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
private WorkOrder checkPrWorkOrder(String cardNo) {
public WorkOrder checkPrWorkOrder(String cardNo) {
WorkOrder prWorkOrder = this.checkWo(cardNo);
//车间订单状态小于已下达并且大于加工中的情况下,不允许下序接收
if (prWorkOrder.getRunStatus() < WorkOrder.RUN_STATUS_ISSUED || prWorkOrder.getRunStatus() > WorkOrder.RUN_STATUS_RECEIVE) {

@ -1,6 +1,8 @@
package org.springblade.desk.produce.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
@ -10,13 +12,20 @@ import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.basic.service.IRelTeamSetUserService;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
import org.springblade.desk.device.pojo.entity.RackSetEntity;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.PrMacTooUseSpec;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo;
import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
@ -25,8 +34,10 @@ import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.service.IInspectionTaskService;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.scheduling.pojo.entity.ProcessSetEntity;
import org.springframework.stereotype.Service;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -79,6 +90,10 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IMesQcProduceRunService mesQcProduceRunService;
private final IYieldOrderService yieldOrderService;
private final IWorkPlanLogService workPlanLogService;
@Override
public void bindingCard(Long rsId, Long fsId, Long ecId, String planListIds) {
RackSetEntity rackSet = rackSetService.getById(rsId);
@ -393,6 +408,247 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
@Override
public void receiveOrder(MesRbRedoRoutDTO rr) {
// 如果路线编号为 1 ,自动完成订单
if ("1".equals(rr.getSeqno().toString())) {
this.completeOrder(rr, AuthUtil.getUserName());
}
String memo = "";
List<PrReworkProcessEntity> rpList = listByReworkCode(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode());
if (rpList == null && rpList.size() == 0) {
//修改erp返工单工艺状态为无工艺
//prReworkProcessDao.receiveOrder(rr, user.getLdapName(), 0);
}else {
//查询原订单
// WorkOrder wo = prWorkOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono());
WorkOrder wo =workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
//syDockingLogService.sendDockingLog("查询原单", rr.getRedono(), rr.getPrtno()+","+rr.getSplcode()+","+rr.getSono());
if (wo == null) {
wo = workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
//syDockingLogService.sendDockingLog("查询原单", rr.getRedono(), rr.getPrtno()+","+rr.getSplcode());
}
memo = memo + "物料号:" + rr.getPrtno() + "批次号:" + rr.getSplcode() + " 订单号:" + rr.getSono() + " ---- ";
YieldOrder yieldOrder;
WorkOrder newWo = new WorkOrder();
//zxh 20250820 返修发现部门为3400的才进行原单覆盖
if (wo != null && rr.getUsedept().equals("3400")) {
memo = memo + "找到原单,woId:" + wo.getId() + " ---- ";
yieldOrder = yieldOrderService.getYoByCardNo(wo.getCardNo());
List<WorkPlan> wpList = null;
//返工路线是3400-3400内部返工的,需要COPY原订单且不更新上账时间和上账人,反之则走非车间内部返工处理
if (StringUtils.isNotBlank(rr.getDeptcode()) && rr.getDeptcode().trim().equals("3400-3400")) {
//顺延原WO号
//newWo.setWoCode(prWorkOrderCodeService.nextCode(yieldOrder.getPoCode()));
newWo.setWpId(wo.getWpId());
//zxh 20250520 返修路线为3400-3400的返修订单在车间订单级记录返修订单接收人
newWo.setMemo("返工路线是3400-3400,记录返修接收人为" + rr.getRecman());
//非3400返工
memo = memo + "返工路线是3400-3400 ---- ";
log.info("3400-3400新车间订单:woCode:{},oldYoCode:{}", newWo.getWoCode(), yieldOrder.getYoCode());
}else {
//copy原生产订单,更新单号和关键信息
YieldOrder newYieldOrder = yieldOrder;
newYieldOrder.setYoCode(null);
newYieldOrder.setDemandDate(new Date());
//如果接收人不为空,则默认此接收人和接收时间
if (StringUtils.isNotBlank(rr.getRecman())) {
//user = epDosingRecDao.getUserByLdapName(rr.getRecman().trim());
}
//zxh 20241128 接收人赋值为返修订单接收人
newYieldOrder.setReceiveUser(Long.valueOf(rr.getRecman()));
// newYieldOrder.setFailureTime(StringUtils.isNotBlank(rr.getRecdate()) ?
// DateTime.parse(rr.getRecdate()) : new Date());
newYieldOrder.setMemo(rr.getRemark());
newYieldOrder.setReworkMemo(rr.getDetail());
//newYieldOrder.setPoQty(Double.valueOf(rr.getAmount()));
newYieldOrder.setPrimaryCraft(rr.getDeptcode());
//newYieldOrder.setSyncTime(new Date());
newYieldOrder.setReworkCode(rr.getRedono());
newYieldOrder.setReworkNo(Long.valueOf(rr.getSeqno()));
newYieldOrder.setYoCode(rr.getRedono());
//zxh 20250522 找到原单,非3400-3400,复制pj后不再更改pocode
//newYieldOrder.setPoCode(rr.getRedono());
newYieldOrder.setProduceBool(Boolean.TRUE);
// newYieldOrder.setCurStatus(PjYieldOrder.CUR_STATUS_PROCESSING);
//周新昊 20240912 返修订单找到原单复制pj后为使用部门代码赋值
//newYieldOrder.setUseDeptcode(rr.getUsedept());
yieldOrderService.save(newYieldOrder);
log.info("不是厂内,保存新生产订单:yoId{},yoCode{}", newYieldOrder.getId(), newYieldOrder.getYoCode());
//原订单已经入库,则更新接收人、接收时间并且车间订单号不顺延原订单号,反之则需要顺延原订单号
if (wo.getPutStoreTime() != null) {
//newWo.setWoCode(prWorkOrderCodeService.nextCode(rr.getRedono()));
newWo.setReInStore("1");
//newYieldOrder.setPoCode(rr.getRedono());
} else {
// newWo.setWoCode(prWorkOrderCodeService.nextCode(yieldOrder.getPoCode()));
}
//绑定新车间订单的接收信息
//newWo.setPjYieldOrder(newYieldOrder);
//更新原生产订单状态为已关闭
YieldOrder oldYo = yieldOrderService.getById(wo.getYoId());
if (oldYo != null) {
// oldYo.setCurStatus(PjYieldOrder.CUR_STATUS_VOIDED);
oldYo.setCustodian(rr.getRecman());
yieldOrderService.updateById(oldYo);
}
memo = memo + "新生产订单,yoId:" + newYieldOrder.getId() + " ---- ";
}
//返工订单流程卡号重新生成
//newWo.setCardNo(prWorkOrderService.nextCardNo(wo.getPjYieldOrder().getPoCode(), wo.getCardNo()));
newWo.setBatchNo(rr.getSplcode());
newWo.setMakeQty(Double.valueOf(rr.getAmount()));
newWo.setRunStatus(WorkOrder.RUN_STATUS_NORMAL);
newWo.setPriority(wo.getPriority());
newWo.setReworkCode(rr.getRedono());
newWo.setReworkNo(rr.getSeqno().intValue());
newWo.setOem("0");
newWo.setOemOut("1");
//newWo.setOemType(FlowBusinessBean.STATUS_NEW);
newWo.setPlanner(wo.getPlanner());
newWo.setDispatcher(wo.getDispatcher());
newWo.setReworkMemo(rr.getDetail());
newWo.setDemandDate(new Date());
workOrderService.save(newWo);
log.info("保存新车间订单:woId{},woCode{}", newWo.getId(), newWo.getWoCode());
//组装生产工序
wpList = new ArrayList<>(rpList.size());
WorkPlan wp;
for (PrReworkProcessEntity rp : rpList) {
wp = new WorkPlan();
wp.setOrders(rp.getProcessNo());
wp.setHourQuota(rp.getHourQuota());
wp.setMakeMemo(rp.getMakeMemo());
wp.setStatus(WorkPlan.STATUS_NO_START);
wp.setStartTime(rp.getStartTime().toInstant()
.atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认)
.toLocalDateTime());
wp.setEndTime(rp.getEndTime().toInstant()
.atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认)
.toLocalDateTime());
wp.setRpId(rp.getId());
if (rp.getMakeTeam() != null) {
wp.setMakeTeam(rp.getMakeTeam());
wp.setOem("0");
} else {
wp.setOem(rp.getOcName());
wp.setOem("1");
}
wpList.add(wp);
}
}
}
}
private List<PrReworkProcessEntity> listByReworkCode(String redono, Integer seqno, String prtno, String splcode) {
List<PrReworkProcessEntity> prReworkProcessList = new ArrayList<>();
// 首先根据返工单号+零件号——批次号去查
prReworkProcessList = null; //prReworkProcessDao.listByReworkCode(reworkCode, reworkNo, partCode, batchNo);
if (prReworkProcessList != null && prReworkProcessList.size() > 0) {
return prReworkProcessList;
}
return prReworkProcessList;
}
public void completeOrder(MesRbRedoRoutDTO rr, String userName) {
WorkOrder wo =workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class)
.eq(WorkOrder::getBatchNo, rr.getSplcode()));
if (wo != null) {
//记录返工单号
wo.setQcReworkCode(rr.getRedono());
//如果原车间订单状态小于已交接,就更改原订单状态为返工,否则不更改
if (wo.getRunStatus() < WorkOrder.RUN_STATUS_HANDOVER) {
//修改旧订单状态
workOrderService.updateStatus(null,WorkOrder.RUN_STATUS_REWORK,wo.getId(), null);
}
// 如果有 FatherYoId 有值,则代表他是子件 修改部件状态为返工
YieldOrder pjYieldOrder = yieldOrderService.getById(wo.getYoId());
if (pjYieldOrder.getFatherYoId() != null) {
List<WorkOrder> fatherPrWorkOrderList = workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, pjYieldOrder.getFatherYoId()));
if (fatherPrWorkOrderList != null && fatherPrWorkOrderList.size() > 0) {
for (WorkOrder fatherPrWorkOrder : fatherPrWorkOrderList) {
// 记录原状态
fatherPrWorkOrder.setOldRunStatus(fatherPrWorkOrder.getRunStatus());
// 修改为返工
fatherPrWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_REWORK);
workOrderService.updateById(fatherPrWorkOrder);
}
}
}
}else {
}
this.completeOrder(rr, userName);
}
@Override
public void uploadPlan(List<WorkPlan> list) {
if (list.size() == 0) {
return;
}
WorkPlan prWorkPlan;
List<BsProcedureTeam> ptLst;
Long woId = null;
for (WorkPlan item : list) {
if (item.getMakeTeam() == null || item.getId() == null) {
continue;
}
//获取车间订单Id
woId = item.getWoId();
prWorkPlan = baseMapper.selectById(item.getWoId());
if (item.getReceiveMan() != null) {
prWorkPlan.setReceiveMan(item.getReceiveMan());
} else {
prWorkPlan.setReceiveMan(null);
}
//判定工序是否特殊工序,如果是,则附属班组存在值
if (prWorkPlan.getOcId() == null && prWorkPlan.getSubsidiaryTeam() == null && prWorkPlan.getOcId() == null) {
ptLst = bsProcedureTeamService.findBsProcedureTeamByPpsId(prWorkPlan.getPpsId());
if (ptLst != null && ptLst.size() > 0) {
prWorkPlan.setSubsidiaryTeam(ptLst.get(0).getPpsId());
}
}
if (prWorkPlan.getOem().equals("1")) {
prWorkPlan.setOem("0");
prWorkPlan.setOem(null);
}
prWorkPlan.setMakeTeam(item.getMakeTeam());
// 2025-07-23 线上迁移修改注释掉代码
if(item.getPapers() != null && (item.getMakeTeam() != null || item.getReceiveMan() != null)){
WorkPlanLog log = new WorkPlanLog();
log.setUpdateUser(AuthUtil.getUser().getUserId());
log.setUpdateTime(new Date());
log.setWoId(woId);
workPlanLogService.save(log);
}
}
}
@Override
public void shiftTransfer(ShiftTransferDTO shiftTransferDTO) {
List<WorkPlan> wpList = baseMapper.selectList(new QueryWrapper<WorkPlan>().eq("wo_id", shiftTransferDTO.getWoId()));
BsTeamSetEntity makeTeam = new BsTeamSetEntity();
makeTeam.setId(shiftTransferDTO.getNewTsId());
BsProcessSetEntity processSet = bsProcessSetService.getOne(Wrappers.lambdaQuery(BsProcessSetEntity.class).eq(BsProcessSetEntity::getId, shiftTransferDTO.getNewTsId()));
wpList.forEach(wp -> {
if (processSet.getIsSpecial() == null) {
return;
}
if (WorkPlan.STATUS_NO_START.equals(wp.getStatus())) {
wp.setMakeTeam(makeTeam.getId());
}
});
// prWorkOrderAdjustService.saveAdjust(woId, oldTsId, newTsId, userInfo);
//更新订单主加工单位
// prWorkOrderService.updateHostWorkUnit(woId);
}
private void unBindBsRackSet(RackSetEntity bsRackSet) {
if (bsRackSet != null) {
bsRackSet.setBindQty((short) 0);

@ -11,28 +11,33 @@ import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.service.IDsPartService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.PlateAroundMapper;
import org.springblade.desk.produce.pojo.dto.PlateAroundDto;
import org.springblade.desk.produce.pojo.dto.SavePlateAroundDto;
import org.springblade.desk.produce.pojo.entity.PlateAround;
import org.springblade.desk.produce.pojo.entity.PlateAroundDelLog;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.entity.*;
import org.springblade.desk.produce.pojo.vo.AfterPlateInVO;
import org.springblade.desk.produce.pojo.vo.PlateAroundVO;
import org.springblade.desk.produce.service.IPlateAroundDelLogService;
import org.springblade.desk.produce.service.IPlateAroundService;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.*;
import org.springblade.job.pojo.entity.JobInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static com.fasterxml.jackson.databind.type.LogicalType.DateTime;
/**
* 镀前镀后 服务实现类
*
@ -49,6 +54,15 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
private final IPlateAroundDelLogService plateAroundDelLogService;
private final IWorkPlanService workPlanService;
private final IPdaLoadService pdaLoadService;
private final IWorkOrderRunService workOrderRunService;
private final IDsPartService dsPartService;
@Override
public IPage<PlateAroundVO> queryByReadStatus(IPage<PlateAroundVO> page, PlateAroundDto plateAroundDto) {
return page.setRecords(baseMapper.queryByReadStatus(page, plateAroundDto));
@ -164,4 +178,224 @@ public class PlateAroundServiceImpl extends BaseServiceImpl<PlateAroundMapper, P
LambdaQueryWrapper<PlateAroundDelLog> wrapper = Wrappers.lambdaQuery(PlateAroundDelLog.class);
return plateAroundDelLogService.page(page, wrapper);
}
@Override
public void savePlateFrontEnter(List<PlateAround> list) {
if (list == null || list.size() == 0) {
return;
}
int next = 0;
List<WorkOrder> woList = new ArrayList<>(list.size());
WorkOrder wo;
Date date = new Date();
Short paType = PlateAround.CUR_STATUS_NEW;
for (PlateAround plateAround : list) {
this.savePlateAround(AuthUtil.getUser(), plateAround, paType, next, Boolean.FALSE);
if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
WorkPlan prWorkPlan = workPlanService.getById(plateAround.getWpId());
wo = workOrderService.getById(prWorkPlan.getWoId());
wo.setHandoverTime( date);
woList.add(wo);
// 计算主工序对应的金额
//bsTeamWagesLevelService.countTeamSalary(wo.getWoId());
}
if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
// prHandoverRecordService.saveHandoverRecord(woList, AuthUtil.getUser());
}
}
}
@Override
public DsPartEntity getByPartCode(String partCode) {
return dsPartService.getOne(Wrappers.<DsPartEntity>lambdaQuery().eq(DsPartEntity::getPartCode, partCode));
}
private void savePlateAround(BladeUser user, PlateAround plateAround, Short paType, int next, Boolean aTure) {
PlateAround newPa = null;
PlateAround oldPa=null;
Date date = new Date();
WorkPlan wp = workPlanService.getById(plateAround.getWpId());
if (paType.equals(PlateAround.BEFORE_PLAT_IN) || paType.equals(PlateAround.AFTER_PLAN_IN)) {
plateAround.setPaType(paType);
plateAround.setCreateUser(user.getUserId());
plateAround.setCreateTime(date);
if (aTure) {
plateAround.setPaCode(this.nextCode(paType, next));
plateAround.setMakeTime(new Date());
plateAround.setMakeMan(user.getUserId());
}
plateAround = this.updatePrPlateAround(plateAround);
baseMapper.insert(plateAround);
if (paType.equals(PlateAround.BEFORE_PLAT_IN)) {
WorkPlan nextWorkPlan = workPlanService.getById(wp.getNextWpId());
if (nextWorkPlan != null && nextWorkPlan.getNextWpId()== null) {
throw new ServiceException("pda.nextWorkPlan.noNext");
}
WorkOrder prWorkOrder = workOrderService.getById(wp.getWoId());
pdaLoadService.checkPrWorkOrder(prWorkOrder.getCardNo());
//下序不能为空,并且下序班组或者供应商都没有值的情况下再进行自动分派
if (nextWorkPlan != null && nextWorkPlan.getMakeTeam() == null && nextWorkPlan.getOcId() == null) {
//调用自动分派处理类
//pjAutomaticDispatchService.beforePlatingAutomatic(prWorkOrder.getCardNo(), pfUserInfo);
} else {
// 如果下序是外协,将订单发外协的标记标为未发送
if (nextWorkPlan != null && nextWorkPlan.getOcId() != null && nextWorkPlan.getMakeTeam() == null) {
prWorkOrder.setOem("1");
prWorkOrder.setOemOut("0");
if (prWorkOrder.getOcId()== null) {
prWorkOrder.setTsId(null);
prWorkOrder.setOcId(nextWorkPlan.getOcId());
}
prWorkOrder.setOemType(WorkOrder.OEM_TYPE_WHOLE);
nextWorkPlan.setEndTime(LocalDateTime.now());
workPlanService.updateById(nextWorkPlan);
//产生外协生产进度记录信息
WorkOrderRun wr = new WorkOrderRun();
wr.setWoId(prWorkOrder.getId());
wr.setWoCode(prWorkOrder.getWoCode());
wr.setRunType(WorkOrderRun.RUN_TYPE_1);
wr.setInTeam(wp.getMakeTeam());
wr.setInCustomer(nextWorkPlan.getOcId());
wr.setMemo("入库派外协");
wr.setCreateTime(date);
wr.setCreateUser(user.getUserId());
wr.setUpdateTime(date);
wr.setUpdateUser(user.getUserId());
wr.setStatus(Integer.valueOf(WorkOrderRun.RUN_STATUS_UNDER));
wr.setSystemData("1");
wr.setCollaborate("1");
wr.setRunStatus(WorkOrderRun.RUN_STATUS_UNDER);
workOrderRunService.save(wr);
prWorkOrder.setWorId(wr.getId());
workOrderService.updateById(prWorkOrder);
}
}
wp = workPlanService.getById(wp.getId());
//通知下序进行镀前出库
if (nextWorkPlan.getMakeTeam() != null) {
String str = "流程卡号:【" + prWorkOrder.getCardNo() + "】,零件号:【" + prWorkOrder
.getPartCode() + "】批次号:【" + prWorkOrder.getBatchNo() + "】,已入镀前库,请及时处理!";
// pfMessageService.sendMessage(str, nextWorkPlan.getMakeTeam().getTeamLeader().getUserId(),
// PfMessageType.MTCODE_0200, null, Boolean.FALSE, null);
}
//镀前入库后默认拉满当前工序完成进度
wp.setFactEndTime(date);
workPlanService.updateById(wp);
}
if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
WorkOrder prWorkOrder = workOrderService.getById(wp.getWoId());
pdaLoadService.checkPrWorkOrder(prWorkOrder.getCardNo());
}
}else {
WorkPlan nextWorkPlan = workPlanService.getById(plateAround.getWpId());
if (wp.getNextWpId() != null && nextWorkPlan.getNextWpId() == null) {
throw new ServiceException("pda.nextWorkPlan.noNext");
}
//如果是镀前出库,判定是否下序有班组或者供应商,若没有重新自动分派
if (nextWorkPlan.getNextWpId() != null) {
if (nextWorkPlan.getMakeTeam() == null && nextWorkPlan.getOcId() == null) {
//调用自动分派处理类
WorkOrderRun wor = workOrderRunService.getById(nextWorkPlan.getWoId());
// pjAutomaticDispatchService.beforePlatingAutomatic(wp.getPrWorkOrder().getCardNo(), pfUserInfo);
wp = workPlanService.getById(wp.getId());
//如果当前序是供应商,下序分派至班组(不是检验),或者其他供应商则调用erp关闭订单(待定)
if (nextWorkPlan.getOcId() != null && nextWorkPlan.getNextWpId() != null) {
if (nextWorkPlan.getPpsId()!= null) {
if (StringUtils.isNotBlank(wor.getDeliverKey())) {
//调用erp检验接口
// prWorkCheckService.checkCompleteErpBackFill(wor.getWoCode(), wor.getDeliverKey(), wp.getWorkQty(),
// 0, pfUserInfo);
}
}
}
//如果下序供应商不为空,则代表存在原有供应商,则根据此供应商获取最后一个该供应商未关闭的运行记录,并绑定
}else if (wp.getNextWpId() != null &&nextWorkPlan.getOcId() != null) {
WorkOrderRun prWorkOrderRun =workOrderRunService.getById(nextWorkPlan.getOcId());
if (prWorkOrderRun != null) {
WorkOrder workOrder = workOrderService.getById(prWorkOrderRun.getWoId());
workOrder.setWorId(prWorkOrderRun.getId());
workOrderService.updateById(workOrder);
//改回下达状态,让调度收回
prWorkOrderRun.setRunStatus(WorkOrderRun.RUN_STATUS_ISSUED);
workOrderRunService.updateById(prWorkOrderRun);
} else {
throw new ServiceException("pda.dataFormat.error");
}
}
}
BeanUtils.copyProperties(plateAround, newPa);
newPa.setPaCode(plateAround.getPaCode());
newPa.setPaType(paType);
newPa.setCreateUser(user.getUserId());
newPa.setCreateTime(date);
newPa.setPaCode(this.nextCode(paType, next));
if (aTure) {
newPa.setMakeTime(date);
newPa.setMakeMan(user.getUserId());
}
newPa.setWpId(wp.getNextWpId());
newPa = this.updatePrPlateAround(newPa);
baseMapper.insert(newPa);
oldPa = baseMapper.selectById(plateAround.getId());
oldPa.setCurStatus(PlateAround.CUR_STATUS_OK);
}
next++;
}
private PlateAround updatePrPlateAround(PlateAround plateAround) {
BsTeamSetEntity makeTeam;
// BsOemCustomer oemCustomer;
makeTeam = null;
// oemCustomer = plateAround.getOemCustomer();
if (makeTeam != null && makeTeam.getId() == null) {
plateAround.setMakeMan(null);
}
// if (oemCustomer != null && oemCustomer.getOcId() == null) {
// plateAround.setOemCustomer(null);
// }
return plateAround;
}
private String nextCode(Short paType, int next) {
String prefix = null;
if (paType.equals(PlateAround.BEFORE_PLAT_IN)) {
// 镀前入库
prefix = "FE-";
} else if (paType.equals(PlateAround.BEFORE_PLAN_OUT)) {
// 镀前出库
prefix = "FI-";
} else if (paType.equals(PlateAround.AFTER_PLAN_IN)) {
// 镀后入库
prefix = "AE-";
}
// 自增总长度
int len = 3;
// 自增值
int num = 0;
// 编码模式
String codePattern = prefix + new SimpleDateFormat("yyyyMMdd").format(new Date());
// 当前模式下最大编码
List<PlateAround> plateAroundList= baseMapper.selectList(Wrappers.<PlateAround>lambdaQuery().
likeLeft(PlateAround::getPaCode, codePattern).orderByAsc(PlateAround::getPaCode));
String maxCode = plateAroundList.size() > 0 ? plateAroundList.get(0).getPaCode() : null;
if (maxCode != null) {
num = Integer.parseInt(maxCode.substring(codePattern.length()));
}
num = num + 1 + next;
// 下个编码
String code = codePattern
+ prefix(String.valueOf(num), "0", len);
return code;
}
public static final String prefix(String StringToFix, String fixChar, int targetLen) {
int len = StringToFix.length();
for(int i = 0; i < targetLen - len; i += fixChar.length()) {
StringToFix = fixChar + StringToFix;
}
return StringToFix;
}
}

Loading…
Cancel
Save