Commit 6b07feb5 authored by 李驰骋's avatar 李驰骋

设备看板BUG修复

parent 1e599b00
...@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
...@@ -91,4 +92,16 @@ public interface CalPlanWorkunitMapper extends BaseMapper<CalPlanWorkunit> { ...@@ -91,4 +92,16 @@ public interface CalPlanWorkunitMapper extends BaseMapper<CalPlanWorkunit> {
"${ew.customSqlSegment}") "${ew.customSqlSegment}")
List<CalPlanWorkunit> selectListWithSchedule(@Param("ew") QueryWrapper<CalPlanWorkunit> query); List<CalPlanWorkunit> selectListWithSchedule(@Param("ew") QueryWrapper<CalPlanWorkunit> query);
/**
* 查询某天所有设备排班计划
*
* @param curr 时间
* @return 计划工作单元集合
*/
@Select(value = "select t1.* from cal_plan_workunit t1 where rest_flag = 0 and (start_date >= #{currDate} and start_date < date_add(#{currDate},INTERVAL 1 day))\n" +
"or (end_date >= #{currDate} and end_date < date_add(#{currDate},INTERVAL 1 day))")
List<CalPlanWorkunit> selectListByDate(@Param("currDate") LocalDateTime curr);
} }
...@@ -23,7 +23,7 @@ public class KanbanEquipmentController { ...@@ -23,7 +23,7 @@ public class KanbanEquipmentController {
@Autowired @Autowired
KanbanEquipmentService kanbanEquipmentService; KanbanEquipmentService kanbanEquipmentService;
@ApiOperation("当月设备分布数据") @ApiOperation("设备分布数据")
@PostMapping("/currentMonthStat") @PostMapping("/currentMonthStat")
public AjaxResult<EquipmentStatDto> currentMonthStat(@RequestBody EquipmentQuery equipmentQuery) { public AjaxResult<EquipmentStatDto> currentMonthStat(@RequestBody EquipmentQuery equipmentQuery) {
EquipmentStatDto rst = kanbanEquipmentService.currentMonthStat(equipmentQuery); EquipmentStatDto rst = kanbanEquipmentService.currentMonthStat(equipmentQuery);
......
...@@ -9,16 +9,31 @@ import java.util.Map; ...@@ -9,16 +9,31 @@ import java.util.Map;
@Data @Data
public class EquipmentStatDto { public class EquipmentStatDto {
/**
* 当日该产线所有工作单元的报工工时(分钟)/当日该产线所有工作单元的排班日历(分钟)
*/
@ApiModelProperty("利用率") @ApiModelProperty("利用率")
BigDecimal equipAvailability; BigDecimal equipAvailability;
/**
* 当前产线的所有工作单元当日报工总和
*/
@ApiModelProperty("总产量") @ApiModelProperty("总产量")
BigDecimal totalOutput; BigDecimal totalOutput=BigDecimal.ZERO;
@ApiModelProperty("设备数") @ApiModelProperty("设备数")
Integer equipNum=0; Integer equipNum=0;
/**
* 当前产线的所有工作单元当日报工合格率(合格数量/报工数量)
*/
@ApiModelProperty("合格率") @ApiModelProperty("合格率")
BigDecimal qualifiedRatio; BigDecimal qualifiedRatio=BigDecimal.ZERO;
/**
* 当前产线的所有工作单元当日为设备故障的异常单(当天)
*/
@ApiModelProperty("异常数") @ApiModelProperty("异常数")
Integer abnormalNum=0; Integer abnormalNum=0;
/**
* 当前产线的所有工作单元为设备故障的异常单数(状态不等于关闭和完成)
*/
@ApiModelProperty("待处理数") @ApiModelProperty("待处理数")
Integer unProcessNum=0; Integer unProcessNum=0;
@ApiModelProperty("设备列表") @ApiModelProperty("设备列表")
...@@ -34,10 +49,20 @@ public class EquipmentStatDto { ...@@ -34,10 +49,20 @@ public class EquipmentStatDto {
String equipmentNo; String equipmentNo;
@ApiModelProperty("设备名称") @ApiModelProperty("设备名称")
String equipmentName; String equipmentName;
/**
* 当日该工作单元的报工数量
*/
@ApiModelProperty("日产出") @ApiModelProperty("日产出")
BigDecimal output; BigDecimal output=BigDecimal.ZERO;
/**
* 当日该工作单元的报工工时(分钟)/当日该工作单元的排班日历(分钟)*100%
*/
@ApiModelProperty("产出率") @ApiModelProperty("产出率")
BigDecimal outputRatio; BigDecimal outputRatio=BigDecimal.ZERO;
/**
* 0:加工中、1:未加工,2:停工
* 工作单元的派工任务有为已开始则显示为绿色,如果异常停工则显示为红色,其他状态显示为灰色
*/
@ApiModelProperty("状态,0:加工中、1:未加工,2:停工") @ApiModelProperty("状态,0:加工中、1:未加工,2:停工")
int state; int state;
} }
......
package com.ximai.mes.kanban.service; package com.ximai.mes.kanban.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ximai.common.utils.data.StringUtils; import com.ximai.common.utils.data.StringUtils;
import com.ximai.mes.cal.domain.CalPlanWorkunit;
import com.ximai.mes.cal.mapper.CalPlanWorkunitMapper;
import com.ximai.mes.constant.QcAbnormalTypeEnum; import com.ximai.mes.constant.QcAbnormalTypeEnum;
import com.ximai.mes.constant.TaskWorkunitStatusEnum;
import com.ximai.mes.kanban.dto.abnormal.AbnormalMonthStatDto;
import com.ximai.mes.kanban.dto.equipment.EquipmentQuery; import com.ximai.mes.kanban.dto.equipment.EquipmentQuery;
import com.ximai.mes.kanban.dto.equipment.EquipmentStatDto; import com.ximai.mes.kanban.dto.equipment.EquipmentStatDto;
import com.ximai.mes.kanban.dto.task.TaskStatDto;
import com.ximai.mes.md.domain.MdWorkunit; import com.ximai.mes.md.domain.MdWorkunit;
import com.ximai.mes.md.service.IMdWorkunitService; import com.ximai.mes.md.service.IMdWorkunitService;
import com.ximai.mes.md.vo.MdWorkunitVo;
import com.ximai.mes.pro.domain.ProFeedback; import com.ximai.mes.pro.domain.ProFeedback;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit; import com.ximai.mes.pro.domain.vo.ProFeedbackVo;
import com.ximai.mes.pro.dto.ProFeedbackDto; import com.ximai.mes.pro.dto.task.WorkunitProcessingDto;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitDto;
import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper; import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper;
import com.ximai.mes.pro.service.IProFeedbackService; import com.ximai.mes.pro.service.IProFeedbackService;
import com.ximai.mes.pro.service.task.IProTaskWorkunitService; import com.ximai.mes.pro.service.task.IProTaskWorkunitService;
import com.ximai.mes.qc.domain.QcAbnormalReport; import com.ximai.mes.qc.domain.QcAbnormalReport;
import com.ximai.mes.qc.dto.QcAbnormalReportDto; import com.ximai.mes.qc.dto.QcAbnormalReportDto;
import com.ximai.mes.qc.dto.QcAbnormalReportStatusEnum; import com.ximai.mes.qc.dto.QcAbnormalReportStatusEnum;
import com.ximai.mes.qc.mapper.QcAbnormalReportMapper;
import com.ximai.mes.qc.service.IQcAbnormalReportService; import com.ximai.mes.qc.service.IQcAbnormalReportService;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Duration;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.*; import java.util.*;
...@@ -41,21 +38,24 @@ import java.util.stream.Collectors; ...@@ -41,21 +38,24 @@ import java.util.stream.Collectors;
@Service @Service
public class KanbanEquipmentService { public class KanbanEquipmentService {
@Autowired
private IProTaskWorkunitService taskWorkunitService;
@Autowired @Autowired
private IProFeedbackService feedbackService; private IProFeedbackService feedbackService;
@Autowired @Autowired
private ProTaskWorkunitMapper taskWorkunitMapper; private ProTaskWorkunitMapper taskWorkunitMapper;
@Autowired @Autowired
private CalPlanWorkunitMapper calPlanWorkunitMapper;
@Autowired
private IMdWorkunitService workunitService; private IMdWorkunitService workunitService;
@Autowired @Autowired
IQcAbnormalReportService abnormalReportService; IQcAbnormalReportService abnormalReportService;
@Autowired
QcAbnormalReportMapper abnormalReportMapper;
@ApiOperation("设备统计") @ApiOperation("设备统计")
@PostMapping("/currentMonthStat") @PostMapping("/currentMonthStat")
public EquipmentStatDto currentMonthStat(EquipmentQuery equipmentQuery) { public EquipmentStatDto currentMonthStat(EquipmentQuery equipmentQuery) {
EquipmentStatDto rst = new EquipmentStatDto(); EquipmentStatDto rst = new EquipmentStatDto();
LocalDateTime currDate = LocalDateTime.now().with(LocalTime.MIN);
//查询所有设备 //查询所有设备
List<MdWorkunit> list = workunitService.selectListByQw(new QueryWrapper<MdWorkunit>().eq("t1.enable_flag","Y") List<MdWorkunit> list = workunitService.selectListByQw(new QueryWrapper<MdWorkunit>().eq("t1.enable_flag","Y")
.orderByAsc("t1.serial","t1.create_time")); .orderByAsc("t1.serial","t1.create_time"));
...@@ -63,40 +63,73 @@ public class KanbanEquipmentService { ...@@ -63,40 +63,73 @@ public class KanbanEquipmentService {
s.setLineName(org.apache.commons.lang.StringUtils.defaultString(s.getLineName(),"未指定")); s.setLineName(org.apache.commons.lang.StringUtils.defaultString(s.getLineName(),"未指定"));
return s; return s;
}).collect(Collectors.groupingBy(s->s.getLineName())); }).collect(Collectors.groupingBy(s->s.getLineName()));
List<MdWorkunit> tempList = null; List<MdWorkunit> tempList = new ArrayList<>();
if(StringUtils.isNotEmpty(equipmentQuery.getLineName())){ if(StringUtils.isNotEmpty(equipmentQuery.getLineName())){
tempList = equipMap.get(equipmentQuery.getLineName()); tempList.addAll(equipMap.get(equipmentQuery.getLineName()));
}else{ }else{
tempList = list; tempList.addAll(list);
} }
Map<String,List<EquipmentStatDto.EquipmentInfo>> equipInfoMap = this.getEquipmentInfo(tempList); //查询当日报工
List<ProFeedbackVo> feedbackList = feedbackService.queryProFeedbackListJoinTaskWorkUnit(new QueryWrapper<ProFeedback>().gt("f.feedback_time", currDate));
//查询当日排班日历
List<CalPlanWorkunit> calPlanWorkunitList = calPlanWorkunitMapper.selectListByDate(currDate);
//派工任务
//加工中设备
List<WorkunitProcessingDto> workunitProcessingList = taskWorkunitMapper.selectWorkunitProcessing();
Map<String,List<EquipmentStatDto.EquipmentInfo>> equipInfoMap = this.getEquipmentInfo(tempList, calPlanWorkunitList,
feedbackList, workunitProcessingList);
rst.setEquipMap(MapUtil.sort(equipInfoMap)); rst.setEquipMap(MapUtil.sort(equipInfoMap));
//查询当日设备报异常 //查询当日设备报异常
LocalDateTime currDate = LocalDateTime.now().with(LocalTime.MIN);
QueryWrapper<QcAbnormalReport> query = new QueryWrapper<>(); QueryWrapper<QcAbnormalReport> query = new QueryWrapper<>();
query.ge("t1.create_time", currDate); query.ge("t1.create_time", currDate);
query.eq("t1.abnormal_type", QcAbnormalTypeEnum.DEVI.getType()); query.eq("t1.abnormal_type", QcAbnormalTypeEnum.DEVI.getType());
List<QcAbnormalReportDto> abnormalList = abnormalReportService.selectQcAbnormalReportJoinTaskWorkunitDtoList(query); List<QcAbnormalReportDto> abnormalList = abnormalReportService.selectQcAbnormalReportDtoList(query);
List<EquipmentStatDto.AbnormalInfo> abnormalInfoList = this.getAbnormalInfo(tempList, abnormalList); List<EquipmentStatDto.AbnormalInfo> abnormalInfoList = this.getAbnormalInfo(tempList, abnormalList);
rst.setAbnormalInfoList(abnormalInfoList); rst.setAbnormalInfoList(abnormalInfoList);
rst.setEquipNum(tempList.size());//总设备 rst.setEquipNum(tempList.size());//总设备
rst.setQualifiedRatio(new BigDecimal("55")); long ct = abnormalList.stream().filter(s->StringUtils.isNotEmpty(s.getWorkunitId())&&tempList.stream().anyMatch(s2->s.getWorkunitId().equals(s2.getWorkunitId()))).count();
rst.setEquipAvailability(new BigDecimal("65"));//利用率 rst.setAbnormalNum((int)ct);//异常数
rst.setTotalOutput(new BigDecimal("2000"));//总产量 QueryWrapper<QcAbnormalReport> abnormalQuery = new QueryWrapper<QcAbnormalReport>()
rst.setAbnormalNum(abnormalList.size());//异常数 .in("abnormal_status", new Object[]{QcAbnormalReportStatusEnum.SUBMIT.getStatus(),QcAbnormalReportStatusEnum.NOT.getStatus()})
rst.setUnProcessNum(5);//历史待处理数 .eq("abnormal_type", com.ximai.mes.qc.dto.QcAbnormalTypeEnum.DEVI.getType());
if(StringUtils.isNotEmpty(equipmentQuery.getLineName())){
abnormalQuery.in("workunit_id", tempList.stream().map(s->s.getWorkunitId()).toArray());
}
Integer unprocessNum = abnormalReportMapper.selectCount(abnormalQuery);
rst.setUnProcessNum(unprocessNum);//历史待处理数
this.statIndexes(rst, tempList, feedbackList, calPlanWorkunitList);
return rst; return rst;
} }
private Map<String,List<EquipmentStatDto.EquipmentInfo>> getEquipmentInfo(List<MdWorkunit> list){ private Map<String,List<EquipmentStatDto.EquipmentInfo>> getEquipmentInfo(List<MdWorkunit> list, List<CalPlanWorkunit> calPlanWorkunitList,
List<ProFeedbackVo> feedbackList, List<WorkunitProcessingDto> workunitProcessingList){
Map<Long,WorkunitProcessingDto> workunitProcessingMap = workunitProcessingList.stream().collect(Collectors.toMap(s->s.getWorkunitId(),s->s));
List<EquipmentStatDto.EquipmentInfo> rst = new ArrayList<>(); List<EquipmentStatDto.EquipmentInfo> rst = new ArrayList<>();
list.forEach(s->{ list.forEach(s->{
EquipmentStatDto.EquipmentInfo info = new EquipmentStatDto.EquipmentInfo(); EquipmentStatDto.EquipmentInfo info = new EquipmentStatDto.EquipmentInfo();
info.setEquipmentNo(s.getWorkunitCode()); info.setEquipmentNo(s.getWorkunitCode());
info.setEquipmentName(s.getWorkunitName()); info.setEquipmentName(s.getWorkunitName());
info.setOutputRatio(new BigDecimal("15")); BigDecimal calTime = this.getCalTime(calPlanWorkunitList, s);
info.setOutput(new BigDecimal(new Random().nextInt(100))); AtomicReference<BigDecimal> machineTime = new AtomicReference<BigDecimal>(BigDecimal.ZERO);
info.setState(new Random().nextInt(3)); AtomicReference<BigDecimal> output = new AtomicReference<BigDecimal>(BigDecimal.ZERO);
feedbackList.stream().filter(s2->s2.getWorkunitId().equals(s.getWorkunitId())).forEach(s2->{
if(StringUtils.isNotEmpty(s2.getMachineTime())){
machineTime.set(machineTime.get().add(new BigDecimal(s2.getMachineTime())));
}
output.set(output.get().add(s2.getQuantityQualify().add(s2.getQuantityUnqualify())));
});
if(calTime.compareTo(BigDecimal.ZERO)>0){
info.setOutputRatio(machineTime.get().divide(calTime, 3, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//利用率
}
info.setOutput(output.get());//日产出
if("Y".equals(s.getFaultFlag())){
info.setState(2);//状态
}else if(workunitProcessingMap.containsKey(s.getWorkunitId())){
info.setState(0);
}else{
info.setState(1);
}
info.setLineName(s.getLineName()); info.setLineName(s.getLineName());
rst.add(info); rst.add(info);
}); });
...@@ -118,10 +151,56 @@ public class KanbanEquipmentService { ...@@ -118,10 +151,56 @@ public class KanbanEquipmentService {
temp.setCause(s.getAbnormalReason()); temp.setCause(s.getAbnormalReason());
rst.add(temp); rst.add(temp);
}); });
} }
}); });
return rst; return rst;
} }
private void statIndexes(EquipmentStatDto rst, List<MdWorkunit> equipList,
List<ProFeedbackVo> feedbackList, List<CalPlanWorkunit> calPlanWorkunitList){
AtomicReference<BigDecimal> qualifiedRatioNumerator = new AtomicReference<>(BigDecimal.ZERO);//合格数
AtomicReference<BigDecimal> machineTime = new AtomicReference<>(BigDecimal.ZERO);//报工工时
for (MdWorkunit mdWorkunit : equipList) {
feedbackList.stream().filter(s->s.getWorkunitId().equals(mdWorkunit.getWorkunitId())).forEach(s->{
rst.setTotalOutput(rst.getTotalOutput().add(s.getQuantityQualify().add(s.getQuantityUnqualify())));
qualifiedRatioNumerator.set(qualifiedRatioNumerator.get().add(s.getQuantityQualify()));
if(StringUtils.isNotEmpty(s.getMachineTime())){
machineTime.set(machineTime.get().add(new BigDecimal(s.getMachineTime())));
}
});
}
AtomicReference<BigDecimal> calTime = new AtomicReference<>(BigDecimal.ZERO);//排班工时
for (MdWorkunit mdWorkunit : equipList) {
calTime.set(calTime.get().add(this.getCalTime(calPlanWorkunitList, mdWorkunit)));
}
if(rst.getTotalOutput().compareTo(BigDecimal.ZERO)>0){
rst.setQualifiedRatio(qualifiedRatioNumerator.get().divide(rst.getTotalOutput(), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//合格率
}
if(calTime.get().compareTo(BigDecimal.ZERO)>0){
rst.setEquipAvailability(machineTime.get().divide(calTime.get(), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal("100")));//利用率
}
}
private BigDecimal getCalTime(List<CalPlanWorkunit> calPlanWorkunitList, MdWorkunit mdWorkunit){
AtomicReference<BigDecimal> calTime = new AtomicReference<>(BigDecimal.ZERO);//排班工时
LocalDateTime currDate = LocalDateTime.now().with(LocalTime.MIN);
LocalDateTime morrowDate = LocalDateTime.now().plusDays(1).with(LocalTime.MIN);
calPlanWorkunitList.stream().filter(s->s.getWorkunitId().equals(mdWorkunit.getWorkunitId())).forEach(s->{
LocalDateTime tempStart = DateUtil.toLocalDateTime(s.getStartDate());
LocalDateTime tempEnd = DateUtil.toLocalDateTime(s.getEndDate());
//获得排班结束与开始间隔
//如果开始时间大于当天,使用当天
if(tempStart.compareTo(currDate)<0){
tempStart = currDate;
}
//如果结束时间大于当天+1,使用当天+1
if(tempEnd.compareTo(morrowDate)>0){
tempEnd = morrowDate;
}
long minutes=Duration.between(tempStart, tempEnd).toMinutes();
calTime.set(calTime.get().add(new BigDecimal(minutes)));
});
return calTime.get();
}
} }
...@@ -62,6 +62,9 @@ public class ProFeedbackVo { ...@@ -62,6 +62,9 @@ public class ProFeedbackVo {
@Excel(name = "工序编码") @Excel(name = "工序编码")
private String processCode; private String processCode;
@ApiModelProperty("加工工时")
private String machineTime;
/** /**
* 工序名称 * 工序名称
*/ */
......
package com.ximai.mes.pro.dto.task;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ximai.common.annotation.Excel;
import com.ximai.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 加工中设备
*
* @author chicheng.li
* @date 2024-11-07
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WorkunitProcessingDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty("工作单元ID")
private Long workunitId;
@ApiModelProperty("数量")
private Integer ct;
}
...@@ -6,6 +6,7 @@ import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder; ...@@ -6,6 +6,7 @@ import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask; import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit; import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
import com.ximai.mes.pro.dto.task.ProTaskWorkunitDto; import com.ximai.mes.pro.dto.task.ProTaskWorkunitDto;
import com.ximai.mes.pro.dto.task.WorkunitProcessingDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
...@@ -180,4 +181,11 @@ public interface ProTaskWorkunitMapper extends BaseMapper<ProTaskWorkunit> { ...@@ -180,4 +181,11 @@ public interface ProTaskWorkunitMapper extends BaseMapper<ProTaskWorkunit> {
" ${ew.customSqlSegment} ") " ${ew.customSqlSegment} ")
List<ProWorkorder> selectWorkorderTaskByQw(@Param("ew") QueryWrapper<ProTaskWorkunit> query); List<ProWorkorder> selectWorkorderTaskByQw(@Param("ew") QueryWrapper<ProTaskWorkunit> query);
/**
* 统计设备进行中工单数量
* @return
*/
@Select(value = "select workunit_id,count(*) ct from pro_task_workunit t1 where t1.`status` = 'BEGINNING' group by workunit_id")
List<WorkunitProcessingDto> selectWorkunitProcessing();
} }
...@@ -2,6 +2,7 @@ package com.ximai.mes.qc.domain; ...@@ -2,6 +2,7 @@ package com.ximai.mes.qc.domain;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import com.ximai.common.annotation.Excel; import com.ximai.common.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
...@@ -79,6 +80,9 @@ QcAbnormalReport extends BaseEntity ...@@ -79,6 +80,9 @@ QcAbnormalReport extends BaseEntity
@Excel(name = "任务派工ID") @Excel(name = "任务派工ID")
private Long taskWorkunitId; private Long taskWorkunitId;
@ApiModelProperty("作业单元D")
private Long workunitId;
//开始时间 //开始时间
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
......
...@@ -106,7 +106,7 @@ public class QcAbnormalReportServiceImpl implements IQcAbnormalReportService { ...@@ -106,7 +106,7 @@ public class QcAbnormalReportServiceImpl implements IQcAbnormalReportService {
@Override @Override
public int insertObj(QcAbnormalReport qcAbnormalReport) { public int insertObj(QcAbnormalReport qcAbnormalReport) {
ProTaskWorkunit proTaskWorkunit = proTaskWorkunitService.selectProTaskWorkunitByTaskWorkunitId(qcAbnormalReport.getTaskWorkunitId()); ProTaskWorkunit proTaskWorkunit = proTaskWorkunitService.selectProTaskWorkunitByTaskWorkunitId(qcAbnormalReport.getTaskWorkunitId());
qcAbnormalReport.setWorkunitId(proTaskWorkunit.getWorkunitId());
//根据车间异常原因修改工作单元是否故障 //根据车间异常原因修改工作单元是否故障
if (qcAbnormalReport.getAbnormalType().equals(QcAbnormalTypeEnum.DEVI.getType())) { if (qcAbnormalReport.getAbnormalType().equals(QcAbnormalTypeEnum.DEVI.getType())) {
MdWorkunit mdWorkunit = new MdWorkunit(); MdWorkunit mdWorkunit = new MdWorkunit();
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<result property="batchNumber" column="batch_number" /> <result property="batchNumber" column="batch_number" />
<result property="processId" column="process_id" /> <result property="processId" column="process_id" />
<result property="taskId" column="task_id" /> <result property="taskId" column="task_id" />
<result property="workunitId" column="workunit_id" />
<result property="taskWorkunitId" column="task_workunit_id" /> <result property="taskWorkunitId" column="task_workunit_id" />
<result property="processCode" column="process_code" /> <result property="processCode" column="process_code" />
<result property="processName" column="process_name" /> <result property="processName" column="process_name" />
...@@ -32,7 +33,7 @@ ...@@ -32,7 +33,7 @@
</resultMap> </resultMap>
<sql id="selectQcAbnormalReportVo"> <sql id="selectQcAbnormalReportVo">
select abnormal_report_id, batch_number, process_id, task_id, task_workunit_id, process_code, select abnormal_report_id, batch_number, process_id, task_id, task_workunit_id, workunit_id, process_code,
process_name, workstation_id, workstation_code, workstation_name, abnormal_type, process_name, workstation_id, workstation_code, workstation_name, abnormal_type,
abnormal_reason, abnormal_time, abnormal_status, create_by, create_time, update_by, abnormal_reason, abnormal_time, abnormal_status, create_by, create_time, update_by,
update_time, abnormal_number, start_time, start_by, end_time, end_by, time_consuming,remarks update_time, abnormal_number, start_time, start_by, end_time, end_by, time_consuming,remarks
...@@ -73,6 +74,7 @@ ...@@ -73,6 +74,7 @@
<if test="batchNumber != null">batch_number,</if> <if test="batchNumber != null">batch_number,</if>
<if test="processId != null">process_id,</if> <if test="processId != null">process_id,</if>
<if test="taskId != null">task_id,</if> <if test="taskId != null">task_id,</if>
<if test="workunitId != null">workunit_id,</if>
<if test="taskWorkunitId != null">task_workunit_id,</if> <if test="taskWorkunitId != null">task_workunit_id,</if>
<if test="processCode != null">process_code,</if> <if test="processCode != null">process_code,</if>
<if test="processName != null">process_name,</if> <if test="processName != null">process_name,</if>
...@@ -93,6 +95,7 @@ ...@@ -93,6 +95,7 @@
<if test="batchNumber != null">#{batchNumber},</if> <if test="batchNumber != null">#{batchNumber},</if>
<if test="processId != null">#{processId},</if> <if test="processId != null">#{processId},</if>
<if test="taskId != null">#{taskId},</if> <if test="taskId != null">#{taskId},</if>
<if test="workunitId != null">#{workunitId},</if>
<if test="taskWorkunitId != null">#{taskWorkunitId},</if> <if test="taskWorkunitId != null">#{taskWorkunitId},</if>
<if test="processCode != null">#{processCode},</if> <if test="processCode != null">#{processCode},</if>
<if test="processName != null">#{processName},</if> <if test="processName != null">#{processName},</if>
...@@ -118,6 +121,7 @@ ...@@ -118,6 +121,7 @@
<if test="batchNumber != null">batch_number = #{batchNumber},</if> <if test="batchNumber != null">batch_number = #{batchNumber},</if>
<if test="processId != null">process_id = #{processId},</if> <if test="processId != null">process_id = #{processId},</if>
<if test="taskId != null">task_id = #{taskId},</if> <if test="taskId != null">task_id = #{taskId},</if>
<if test="workunitId != null">workunit_id = #{workunitId},</if>
<if test="taskWorkunitId != null">task_workunit_id = #{taskWorkunitId},</if> <if test="taskWorkunitId != null">task_workunit_id = #{taskWorkunitId},</if>
<if test="processCode != null">process_code = #{processCode},</if> <if test="processCode != null">process_code = #{processCode},</if>
<if test="processName != null">process_name = #{processName},</if> <if test="processName != null">process_name = #{processName},</if>
......
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