Commit 40f99385 authored by 李驰骋's avatar 李驰骋

看板BUG修复

parent 2977d535
......@@ -28,108 +28,6 @@ public class KanbanTaskController {
@PostMapping("/currentMonthStat")
public AjaxResult<TaskStatDto> currentMonthStat() {
TaskStatDto rst = kanbanTaskService.currentMonthStat();
// List<TaskStatDto.ProcessOutput> outputList = new ArrayList<>();
// outputList.add(new TaskStatDto.ProcessOutput(){
// {
// setProcessName("压铆");
// setPlanQuantity(new BigDecimal("3200"));
// setFinishQuantity(new BigDecimal("900"));
// setQualifiedQuantity(new BigDecimal("890"));
// }
// });
// outputList.add(new TaskStatDto.ProcessOutput(){
// {
// setProcessName("点焊");
// setPlanQuantity(new BigDecimal("3200"));
// setFinishQuantity(new BigDecimal("900"));
// setQualifiedQuantity(new BigDecimal("900"));
// }
// });
// outputList.add(new TaskStatDto.ProcessOutput(){
// {
// setProcessName("焊接");
// setPlanQuantity(new BigDecimal("2200"));
// setFinishQuantity(new BigDecimal("100"));
// setQualifiedQuantity(new BigDecimal("100"));
// }
// });
// outputList.add(new TaskStatDto.ProcessOutput(){
// {
// setProcessName("装配");
// setPlanQuantity(new BigDecimal("5200"));
// setFinishQuantity(new BigDecimal("1000"));
// setQualifiedQuantity(new BigDecimal("1000"));
// }
// });
// outputList.add(new TaskStatDto.ProcessOutput(){
// {
// setProcessName("气压检测");
// setPlanQuantity(new BigDecimal("3000"));
// setFinishQuantity(new BigDecimal("1200"));
// setQualifiedQuantity(new BigDecimal("1200"));
// }
// });
// rst.setOutputList(outputList);
// List<TaskStatDto.ProcessQualifiedRate> qualifiedRateList = new ArrayList<>();
// qualifiedRateList.add(new TaskStatDto.ProcessQualifiedRate(){
// {
// setProcessName("压铆");
// setQualifiedRate(new BigDecimal("90"));
// }
// });
// qualifiedRateList.add(new TaskStatDto.ProcessQualifiedRate(){
// {
// setProcessName("点焊");
// setQualifiedRate(new BigDecimal("89"));
// }
// });
// qualifiedRateList.add(new TaskStatDto.ProcessQualifiedRate(){
// {
// setProcessName("焊接");
// setQualifiedRate(new BigDecimal("100"));
// }
// });
// qualifiedRateList.add(new TaskStatDto.ProcessQualifiedRate(){
// {
// setProcessName("装配");
// setQualifiedRate(new BigDecimal("99"));
// }
// });
// rst.setQualifiedRateList(qualifiedRateList);
//
// TaskStatDto.ProcessMonthlyIndexDto processMonthlyIndexDto = new TaskStatDto.ProcessMonthlyIndexDto();
// processMonthlyIndexDto.setMonthPlanQuantity(new BigDecimal("4000"));
// processMonthlyIndexDto.setActualFinishQuantity(new BigDecimal("2323"));
// processMonthlyIndexDto.setExpireFinishQuantity(new BigDecimal("40"));
// processMonthlyIndexDto.setHisPendingQuantity(new BigDecimal("5"));
//
// processMonthlyIndexDto.setStartOnTimeRatio(new BigDecimal("70"));
// processMonthlyIndexDto.setEndOnTimeRatio(new BigDecimal("80"));
// processMonthlyIndexDto.setQualifiedRatio(new BigDecimal("95"));
// processMonthlyIndexDto.setMonthPlanConcludeRatio(new BigDecimal("35"));
// rst.setProcessMonthlyIndexDto(processMonthlyIndexDto);
//
// List<TaskStatDto.AbnormalCauseStat> abnormalCauseStats = new ArrayList<>();
// abnormalCauseStats.add(new TaskStatDto.AbnormalCauseStat(){
// {
// setCause("停电");
// setCt(2);
// }
// });
// abnormalCauseStats.add(new TaskStatDto.AbnormalCauseStat(){
// {
// setCause("设备损坏");
// setCt(4);
// }
// });
// abnormalCauseStats.add(new TaskStatDto.AbnormalCauseStat(){
// {
// setCause("硬件故障");
// setCt(0);
// }
// });
// rst.setAbnormalCauseData(abnormalCauseStats);
return AjaxResult.success(rst);
}
......
......@@ -60,14 +60,13 @@ public class KanbanAbnormalService {
rst.setProductAbnormal(abnormal2);
rst.setEquipAbnormal(abnormal1);
//统计所有未关闭设备异常
QueryWrapper<QcAbnormalReport> abnormalReportQuery = new QueryWrapper<>();
abnormalReportQuery.in("abnormal_status", new String[]{QcAbnormalReportStatusEnum.NOT.getStatus(), QcAbnormalReportStatusEnum.SUBMIT.getStatus()});
Integer abnormalEquipCt = abnormalReportMapper.selectCount(abnormalReportQuery);
rst.setEquipErrorCt(abnormalEquipCt);
QueryWrapper<MdWorkunit> workunitQuery = new QueryWrapper<>();
workunitQuery.eq("enable_flag", "Y");
int workunitCt = workunitMapper.selectCount(workunitQuery);
rst.setEquipCt(workunitCt-abnormalEquipCt);
workunitQuery.eq("fault_flag", "Y");
int errorWorkunitCt = workunitMapper.selectCount(workunitQuery);
rst.setEquipErrorCt(errorWorkunitCt);
rst.setEquipCt(workunitCt-errorWorkunitCt);
//查询七天内设备异常,按天统计
Calendar last7Day = Calendar.getInstance();
last7Day.set(Calendar.DATE, -6);
......@@ -98,13 +97,14 @@ public class KanbanAbnormalService {
abnormal1.setTotalCt(abnormalList.size());
//报检时间超一天未关闭-超时未闭
Calendar curr = Calendar.getInstance();
curr.add(Calendar.DATE, 1);
curr.add(Calendar.DATE, -1);
int expireCt = abnormalList.stream().filter(s->{
if(s.getAbnormalStatus().equals(QcAbnormalReportStatusEnum.NOT.getStatus())
||s.getAbnormalStatus().equals(QcAbnormalReportStatusEnum.SUBMIT.getStatus())){
curr.setTime(s.getCreateTime());
curr.add(Calendar.DATE, 1);
if(curr.getTime().compareTo(curr.getTime())>0){
Calendar createTemp = Calendar.getInstance();
createTemp.setTime(s.getCreateTime());
createTemp.add(Calendar.DATE, 1);
if(createTemp.getTime().compareTo(curr.getTime())<0){
return true;
}
}
......
......@@ -38,14 +38,19 @@ public class KanbanTaskService {
@PostMapping("/currentMonthStat")
public TaskStatDto currentMonthStat() {
LocalDateTime monthFirstDay = LocalDateTime.now().withDayOfMonth(1).with(LocalTime.MIN);
LocalDateTime nextMonth = monthFirstDay.plusMonths(1);
//当前月派工任务(计划完成时间在当月)-按工序名分组
QueryWrapper<ProTaskWorkunit> taskWorkunitQuery = new QueryWrapper<>();
taskWorkunitQuery.ge("ptw.schedule_end_date", monthFirstDay);
taskWorkunitQuery.le("ptw.schedule_end_date", nextMonth);
taskWorkunitQuery.gt("ptw.quantity", 0);
Map<String,List<ProTaskWorkunitDto>> taskWorkunitDtoMap1 = taskWorkunitService.selectTaskWorkUnitDtoJoinTask(taskWorkunitQuery)
.stream().collect(Collectors.groupingBy(s->s.getProcessName()));
taskWorkunitQuery.clear();
//当月派工任务(计划开始时间在当月)-按工序名分组
taskWorkunitQuery.ge("ptw.schedule_start_date", monthFirstDay);
taskWorkunitQuery.le("ptw.schedule_start_date", nextMonth);
taskWorkunitQuery.gt("ptw.quantity", 0);
Map<String,List<ProTaskWorkunitDto>> taskWorkunitDtoMap2 = taskWorkunitService.selectTaskWorkUnitDtoJoinTask(taskWorkunitQuery)
.stream().collect(Collectors.groupingBy(s->s.getProcessName()));
//当月所有报工
......@@ -67,12 +72,13 @@ public class KanbanTaskService {
TaskStatDto.ProcessMonthlyIndexDto processMonthlyIndexDto=this.stat(taskWorkunitDtoMap1, taskWorkunitDtoMap2, feedbackDtoMap1, feedbackDtoMap2);
//历史月未完工任务(当月之前月份,工序任务状态不是已完工的工序任务单数量之和)
taskWorkunitQuery.clear();
taskWorkunitQuery.lt("ptw.schedule_end_date", monthFirstDay);
taskWorkunitQuery.lt("schedule_end_date", monthFirstDay);
taskWorkunitQuery.gt("quantity", 0);
taskWorkunitQuery.in("status", TaskWorkunitStatusEnum.BEGINNING.getStatus(),
TaskWorkunitStatusEnum.PAUSE.getStatus(), TaskWorkunitStatusEnum.PREPARE.getStatus(),
TaskWorkunitStatusEnum.ERROR_STOP.getStatus());
ProWorkorder workorder = taskWorkunitMapper.statTaskWorkunitQuantity(taskWorkunitQuery);
processMonthlyIndexDto.setHisPendingQuantity(workorder.getQuantity().subtract(workorder.getQuantityQualify()));
Integer ct = taskWorkunitMapper.selectCount(taskWorkunitQuery);
processMonthlyIndexDto.setHisPendingQuantity(new BigDecimal(ct));
rst.setProcessMonthlyIndexDto(processMonthlyIndexDto);
List<TaskStatDto.ProcessOutput> outputList=this.statOutput(taskWorkunitDtoMap1);
List<TaskStatDto.ProcessQualifiedRate> qualifiedRateList=this.processQualifiedRates(feedbackList);
......@@ -99,7 +105,9 @@ public class KanbanTaskService {
//工序任务计划结束时间为当月的工序任务单总数
processMonthlyIndexDto.setMonthPlanQuantity(processMonthlyIndexDto.getMonthPlanQuantity().add(s.getQuantity()));
//获取工序任务计划结束时间为当月 任务状态为完工的工序任务单数量
processMonthlyIndexDto.setActualFinishQuantity(processMonthlyIndexDto.getActualFinishQuantity().add(s.getQuantityQualify()));
if(s.getStatus().equals(TaskWorkunitStatusEnum.FINISHED.getStatus())) {
processMonthlyIndexDto.setActualFinishQuantity(processMonthlyIndexDto.getActualFinishQuantity().add(s.getQuantityQualify()));
}
//是否存在超期报工
List<ProFeedbackDto> feedbackList = feedbackDtoMap2.getOrDefault(s.getTaskWorkunitId(), new ArrayList<>());
for(ProFeedbackDto feedbackDto:feedbackList){
......@@ -110,10 +118,10 @@ public class KanbanTaskService {
}
}
if(s.getActualEndDate()!=null&&s.getActualEndDate().compareTo(s.getScheduleEndDate())>0){
endOnTimeRatioNumerator.set(endOnTimeRatioNumerator.get().add(s.getQuantityQualify()));
endOnTimeRatioNumerator.set(endOnTimeRatioNumerator.get().add(BigDecimal.ONE));
}
if(s.getScheduleEndDate().compareTo(curr.getTime())<0){
endOnTimeRatioDenominator.set(endOnTimeRatioDenominator.get().add(s.getQuantity()));
endOnTimeRatioDenominator.set(endOnTimeRatioDenominator.get().add(BigDecimal.ONE));
}
});
});
......@@ -132,10 +140,10 @@ public class KanbanTaskService {
taskWorkunitDtoMap2.forEach((k,v)->{
v.forEach(s->{
if(s.getActualStartDate()!=null&&s.getActualStartDate().compareTo(s.getScheduleStartDate())<0){
startOnTimeRatioNumerator.set(startOnTimeRatioNumerator.get().add(s.getQuantityQualify()));
startOnTimeRatioNumerator.set(startOnTimeRatioNumerator.get().add(BigDecimal.ONE));
}
if(s.getScheduleStartDate().compareTo(curr.getTime())<0){
startOnTimeRatioDenominator.set(startOnTimeRatioDenominator.get().add(s.getQuantity()));
startOnTimeRatioDenominator.set(startOnTimeRatioDenominator.get().add(BigDecimal.ONE));
}
});
});
......@@ -167,16 +175,17 @@ public class KanbanTaskService {
v.forEach(s->{
//获取工序对应工序任务结束时间在本月的任务生产数量之和
tempLine.setPlanQuantity(tempLine.getPlanQuantity().add(s.getQuantity()));
//获取工序对应工序任务结束时间在本月的报工合格数量
tempLine.setQualifiedQuantity(tempLine.getQualifiedQuantity().add(s.getQuantityProduced()));
//获取工序对应工序任务结束时间在本月的报工数量(合格量+不合格量)
tempLine.setFinishQuantity(tempLine.getFinishQuantity().add(s.getQuantityQualify()));
tempLine.setFinishQuantity(tempLine.getFinishQuantity().add(s.getQuantityProduced()));
//获取工序对应工序任务结束时间在本月的报工合格数量
tempLine.setQualifiedQuantity(tempLine.getQualifiedQuantity().add(s.getQuantityQualify()));
});
rst.add(tempLine);
});
return rst;
}
//工序合格率
private List<TaskStatDto.ProcessQualifiedRate> processQualifiedRates(List<ProFeedback> feedbackList){
List<TaskStatDto.ProcessQualifiedRate> rst = new ArrayList<>();
//按工序名分组
......@@ -199,6 +208,7 @@ public class KanbanTaskService {
return rst;
}
//不合格原因分布
private List<TaskStatDto.AbnormalCauseStat> unQualifiedDist(List<ProFeedback> feedbackList){
List<TaskStatDto.AbnormalCauseStat> rst = new ArrayList<>();
//按不合格原因分组
......
package com.ximai.mes.md.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ximai.common.annotation.Excel;
import com.ximai.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
......@@ -25,6 +26,7 @@ public class MdWorkunit extends BaseEntity {
/**
* 工作单元ID
*/
@TableId
private Long workunitId;
@TableField(exist = false)
......
......@@ -16,7 +16,6 @@ import java.util.List;
public interface IMdWorkunitService {
public static Long OUTSOURCE_WORKUNIT_ID = 1l;
public static String OUTSOURCE_WORKUNIT_CODE = "XMWWDY";
/**
* 查询工作单元
*
......
package com.ximai.mes.pro.domain.task;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ximai.common.annotation.Excel;
import com.ximai.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -26,6 +27,7 @@ public class ProTaskWorkunit extends BaseEntity {
private static final long serialVersionUID = 1L;
@TableField
@TableId
@ApiModelProperty("生产任务ID")
private Long taskWorkunitId;
......
package com.ximai.mes.pro.mapper.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
......@@ -16,7 +17,7 @@ import java.util.List;
* @author zht
* @date 2024-01-23
*/
public interface ProTaskWorkunitMapper {
public interface ProTaskWorkunitMapper extends BaseMapper<ProTaskWorkunit> {
/**
* 查询任务工作单元
*
......@@ -179,13 +180,4 @@ public interface ProTaskWorkunitMapper {
" ${ew.customSqlSegment} ")
List<ProWorkorder> selectWorkorderTaskByQw(@Param("ew") QueryWrapper<ProTaskWorkunit> query);
/**
* 统计完工数量
* @param query
* @return
*/
@Select(value = "select sum(quantity) quantity,sum(quantity_produced) quantity_produced,sum(quantity_qualify) quantity_qualify,sum(quantity_unqualify) quantity_unqualify" +
" from pro_task_workunit ptw \n" +
" ${ew.customSqlSegment} ")
ProWorkorder statTaskWorkunitQuantity(@Param("ew") QueryWrapper<ProTaskWorkunit> query);
}
......@@ -75,4 +75,13 @@ public interface QcAbnormalReportMapper extends BaseMapper<QcAbnormalReport>
* @return 结果
*/
public int deleteQcAbnormalReportByAbnormalReportIds(Long[] abnormalReportIds);
/**
* 查询所有未关闭异常设备数量
*
* @return 结果
*/
@Select(value = "select count(1) from (select task_workunit_id from qc_abnormal_report\n" +
"where abnormal_status in ('NOT', 'SUBMIT') and abnormal_type = 'DEVI' group by task_workunit_id) t")
public int countAbnormalEquip();
}
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