Commit 8a1625b2 authored by chicheng's avatar chicheng

添加ERP工序完工(转移单)

完工入库排除成品!=101
parent 9012c005
package com.ximai.mes.pro.dto.task;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class FeedbackDto {
ProWorkorder workorder;
ProTask currTask;
ProTask nextTask;
ProTaskWorkunit currTaskWorkunit;
ProTaskWorkunit nextTaskWorkunit;
}
......@@ -2,7 +2,6 @@ package com.ximai.mes.pro.service.impl.task;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.StopWatch;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.common.constant.UserConstants;
import com.ximai.common.utils.MessageUtils;
......@@ -11,6 +10,8 @@ import com.ximai.common.utils.data.DataUtil;
import com.ximai.common.utils.data.DateUtils;
import com.ximai.common.utils.data.ExceptionUtil;
import com.ximai.common.utils.data.StringUtils;
import com.ximai.mes.aspect.MethodExtendedProcess;
import com.ximai.mes.aspect.MethodExtendedProcesses;
import com.ximai.mes.cal.domain.CalPlanWorkunit;
import com.ximai.mes.cal.service.ICalPlanWorkunitService;
import com.ximai.mes.constant.*;
......@@ -31,7 +32,7 @@ import com.ximai.mes.pro.domain.productionSolution.ProProductionSolution;
import com.ximai.mes.pro.domain.task.*;
import com.ximai.mes.pro.domain.vo.*;
import com.ximai.mes.pro.domain.vo.task.FeedbackValidateSerialNoParams;
import com.ximai.mes.pro.dto.ProProductQrcodeRecordDto;
import com.ximai.mes.pro.dto.task.FeedbackDto;
import com.ximai.mes.pro.dto.task.ProTaskLinkFile;
import com.ximai.mes.pro.mapper.*;
import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkOrderProcessMapper;
......@@ -45,10 +46,7 @@ import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper;
import com.ximai.mes.pro.schedule.AlgorithmDataSource;
import com.ximai.mes.pro.schedule.AlgorithmExtendDataSource;
import com.ximai.mes.pro.schedule.AlgorithmResultProcess;
import com.ximai.mes.pro.schedule.impl.BaoshenScheduleAlgorithmAdapter;
import com.ximai.mes.pro.schedule.impl.IScheduleAlgorithmAdapter;
import com.ximai.mes.pro.schedule.impl.ThXMScheduleAlgorithmAdapter;
import com.ximai.mes.pro.schedule.strategy.EquipmentSelectionStrategyImpl;
import com.ximai.mes.pro.schedule.strategy.EquipmentSelectionStrategyThXMImpl;
import com.ximai.mes.pro.schedule.strategy.EvaluateEquipmentSerial;
import com.ximai.mes.pro.service.*;
......@@ -56,6 +54,7 @@ import com.ximai.mes.pro.service.proWorkOrder.IProWorkorderService;
import com.ximai.mes.pro.service.task.IProTaskService;
import com.ximai.mes.pro.service.task.IProTaskWorkunitService;
import com.ximai.mes.qc.service.IQcIpqcService;
import com.ximai.mes.remote.process.ProcessTransferCreateProcess;
import com.ximai.mes.tm.domain.vo.TmToolRequestItemVo;
import com.ximai.mes.tm.service.ITmToolMachinesService;
import com.ximai.mes.tm.service.ITmToolRequestService;
......@@ -68,8 +67,11 @@ import com.ximai.system.strategy.AutoCodeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -81,7 +83,6 @@ import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static com.ximai.mes.constant.TaskWorkunitStatusEnum.BEGINNING;
import static com.ximai.mes.constant.TaskWorkunitStatusEnum.FINISHED;
/**
......@@ -90,8 +91,9 @@ import static com.ximai.mes.constant.TaskWorkunitStatusEnum.FINISHED;
* @date 2022-05-14
*/
@Service
public class ProTaskServiceImpl implements IProTaskService {
public class ProTaskServiceImpl implements IProTaskService, ApplicationContextAware {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
private ApplicationContext applicationContext;
@Resource
ProTaskAssistProcessMapper proTaskAssistProcessMapper;
@Resource
......@@ -892,11 +894,13 @@ public class ProTaskServiceImpl implements IProTaskService {
LinkedHashMap<String, ProFeedbackSplitInfo> feedbackWorkorder = proFeedbackService.taskFeedback(task, feedback);
//查询关联下道工序
ProTask nextTask = this.getNextTaskByTaskId(feedback.getTaskId());
AtomicReference<ProTaskWorkunit> nextTaskWorkunit = new AtomicReference<>();
if (nextTask != null) {
// 下道任务待加工数累加合格数量
nextTask.setQuantityWait(DataUtil.getNormalData(nextTask.getQuantityWait()).add(feedbackQualifyConst));
List<ProTaskWorkunit> proTaskWorkunits = proTaskWorkunitMapper.selectListByQw(new QueryWrapper<ProTaskWorkunit>().eq("task_id", nextTask.getTaskId()));
proTaskWorkunits.stream().filter(x -> Objects.equals(x.getStatus(), FINISHED.getStatus())).forEach(x -> {
nextTaskWorkunit.set(x);
x.setStatus(TaskWorkunitStatusEnum.PREPARE.getStatus());
proTaskWorkunitMapper.updateProTaskWorkunit(x);
});
......@@ -914,9 +918,22 @@ public class ProTaskServiceImpl implements IProTaskService {
}
}
proTaskWorkunitService.updateProTaskWorkunit(taskWorkunit);
feedbackWorkorder.forEach((k, v) -> {
FeedbackDto feedbackDto = FeedbackDto.builder().workorder(v.getWorkorder()).currTask(task).currTaskWorkunit(taskWorkunit)
.nextTask(nextTask).nextTaskWorkunit(nextTaskWorkunit.get()).build();
applicationContext.getBean(ProTaskServiceImpl.class).feedbackToErp(feedbackDto, v.getQuantityQualify(), v.getQuantityUnqualify());
});
return response;
}
@MethodExtendedProcesses(config ={
@MethodExtendedProcess(sysSwitchParam = "erp.process.finish.create.enable", processClz = ProcessTransferCreateProcess.class,
newThread = true, errorCatch = true)
})
@Override
public void feedbackToErp(FeedbackDto feedbackDto, BigDecimal qualifyQuantity, BigDecimal unQualifyQuantity){
}
@Transactional
......@@ -1445,4 +1462,9 @@ public class ProTaskServiceImpl implements IProTaskService {
}
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext=applicationContext;
}
}
......@@ -3,6 +3,7 @@ package com.ximai.mes.pro.service.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.mes.pro.domain.GanttTask;
import com.ximai.mes.pro.domain.ProFeedback;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
import com.ximai.mes.pro.domain.task.WorkorderScheduleParams;
......@@ -15,10 +16,12 @@ import com.ximai.mes.pro.domain.vo.proWorkOrder.WorkorderPackagePrint;
import com.ximai.mes.pro.domain.vo.task.FeedbackPackageAddParams;
import com.ximai.mes.pro.domain.vo.task.FeedbackPackageInfo;
import com.ximai.mes.pro.domain.vo.task.FeedbackPackageQueryParams;
import com.ximai.mes.pro.dto.task.FeedbackDto;
import com.ximai.mes.pro.dto.task.ProTaskLinkFile;
import com.ximai.mes.tm.domain.vo.TmToolRequestItemVo;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
......@@ -138,7 +141,11 @@ public interface IProTaskService {
*/
List<ProPackagePrintResult> feedBack(ProFeedback feedback);
/**
* 报工推送ERP
* @param feedbackDto
*/
void feedbackToErp(FeedbackDto feedbackDto, BigDecimal qualifyQuantity, BigDecimal unQualifyQuantity);
/**
* 派工任务状态修改
*
......
......@@ -74,5 +74,9 @@ public interface ErpService {
@PostMapping(value = "/moctf/create")
ErpResponseResult<Object> finishStockInCreate(FinishStockInCreate create);
@ApiLog(businessType = BusinessType.UPDATE, inOutType = InOutType.OUT)
@ApiOperation(value = "ERP工序完工(转移单)")
@PostMapping(value = "/sfctb/processTransfer")
ErpResponseResult<Object> processTransfer(ProcessTransferCreate create);
}
......@@ -34,4 +34,8 @@ public class FinishStockInCreateDetail
@JsonProperty("tg013")
private BigDecimal checkQuantity;
@ApiModelProperty("批号")
@JsonProperty("tg017")
private String batchNo;
}
package com.ximai.mes.remote.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* 工序完工(转移单创建)
*
* @author generator
* @date 2025-10-12
*/
@Data
public class ProcessTransferCreate {
@ApiModelProperty("转移单别")
@JsonProperty("tb001")
private String transferType = "D20";
@ApiModelProperty("移出地")
@JsonProperty("tb005")
private String fromLocation;
@ApiModelProperty("移出地名称")
@JsonProperty("tb006")
private String fromLocationName;
@ApiModelProperty("移入地")
@JsonProperty("tb008")
private String toLocation;
@ApiModelProperty("移入地名称")
@JsonProperty("tb009")
private String toLocationName;
@ApiModelProperty("工单单别")
@JsonProperty("tc004")
private String workOrderType;
@ApiModelProperty("工单单号")
@JsonProperty("tc005")
private String workOrderNo;
@ApiModelProperty("移出加工顺序")
@JsonProperty("tc006")
private String fromProcessSeq;
@ApiModelProperty("移出加工顺序名称")
@JsonProperty("tc007")
private String fromProcessName;
@ApiModelProperty("移入加工顺序")
@JsonProperty("tc008")
private String toProcessSeq;
@ApiModelProperty("移入加工顺序名称")
@JsonProperty("tc009")
private String toProcessName;
@ApiModelProperty("类型")
@JsonProperty("tc013")
private String type;
@ApiModelProperty("使用人时")
@JsonProperty("tc020")
private Integer manHours;
@ApiModelProperty("使用机时")
@JsonProperty("tc021")
private Integer machineHours;
@ApiModelProperty("转移数量")
@JsonProperty("tc036")
private BigDecimal transferQty;
}
......@@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
......@@ -40,6 +42,7 @@ public class FinishStockInCreateProcess implements IExtendedProcess {
detail.setWorkorderCode(workorder.getWorkorderCode());
detail.setCheckQuantity(qualifyQuantity);
detail.setInQuantity(qualifyQuantity);
detail.setBatchNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
details.add(detail);
create.setDetails(details);
erpService.finishStockInCreate(create);
......
package com.ximai.mes.remote.process;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.mes.aspect.IExtendedProcess;
import com.ximai.mes.md.domain.MdItem;
import com.ximai.mes.md.mapper.MdItemMapper;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkOrderProcess;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.vo.ProWorkOrderProcessVo;
import com.ximai.mes.pro.dto.task.FeedbackDto;
import com.ximai.mes.pro.service.proWorkOrder.IProWorkOrderProcessService;
import com.ximai.mes.remote.ErpService;
import com.ximai.mes.remote.dto.FinishStockInCreate;
import com.ximai.mes.remote.dto.FinishStockInCreateDetail;
import com.ximai.mes.remote.dto.ProcessTransferCreate;
import com.ximai.system.strategy.AutoCodeUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@ApiOperation("工序完工转移")
@Component
public class ProcessTransferCreateProcess implements IExtendedProcess {
@Autowired
ErpService erpService;
@Autowired
IProWorkOrderProcessService workOrderProcessService;
@Autowired
MdItemMapper mdItemMapper;
@Autowired
private AutoCodeUtil autoCodeUtil;
@Override
public void process(Object[] args, Object returnResult) {
FeedbackDto feedbackDto = (FeedbackDto) args[0];
BigDecimal qualifyQuantity = (BigDecimal)args[1];
ProcessTransferCreate create = new ProcessTransferCreate();
create.setFromLocation(feedbackDto.getCurrTask().getWorkstationCode());
create.setFromLocationName(feedbackDto.getCurrTask().getWorkstationName());
create.setFromProcessSeq(feedbackDto.getCurrTask().getIdx());
create.setFromProcessName(feedbackDto.getCurrTask().getProcessName());
if(feedbackDto.getNextTask()!=null){
create.setToLocation(feedbackDto.getNextTask().getWorkstationCode());
create.setToLocationName(feedbackDto.getNextTask().getWorkstationName());
create.setToProcessSeq(feedbackDto.getNextTask().getIdx());
create.setToProcessName(feedbackDto.getNextTask().getProcessName());
}
List<ProWorkOrderProcess> workorderProcessLis = workOrderProcessService.selectListByQw(new QueryWrapper<ProWorkOrderProcess>().eq("t1.workorder_id", feedbackDto.getWorkorder().getWorkorderId()).eq("t1.process_id",feedbackDto.getCurrTask().getProcessId()));
if(!workorderProcessLis.isEmpty() && workorderProcessLis.get(0).getStdWorkingTime()!=null){
create.setMachineHours(workorderProcessLis.get(0).getStdWorkingTime().multiply(qualifyQuantity).intValue());
create.setManHours(workorderProcessLis.get(0).getStdWorkingTime().multiply(qualifyQuantity).intValue());
}
create.setTransferQty(qualifyQuantity);
create.setWorkOrderNo(feedbackDto.getWorkorder().getWorkorderCode());
create.setWorkOrderType(feedbackDto.getWorkorder().getWorkorderType());
create.setType("1");
erpService.processTransfer(create);
}
}
......@@ -149,7 +149,7 @@
t.arrange_code,
t.task_batch,
t.ordinal,
t.is_last_process
t.is_last_process,t.idx
from pro_task t
left join pro_process p on t.process_id = p.process_id
left join md_item i
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment