Merge remote-tracking branch 'origin/master'

master
Yangwl 10 months ago
commit bca4954f71

@ -81,4 +81,6 @@ public interface MesMapper {
Map<String, MesReportWork> getProduction15Days(BoardDTO boardDTO);
BoardDTO getWorkOrder(BoardDTO boardDTO);
@MapKey("productDate")
Map<String, MesReportWork> getProduction15DaysAct(BoardDTO boardDTO);
}

@ -58,13 +58,18 @@ public class MesBoradServiceImpl implements IMesBoradService {
dto.setDays(days);
boardDTO.setStartTime(days.get(0));
boardDTO.setEndTime(days.get(days.size()-1));
Map<String,MesReportWork> pros15 = mesMapper.getProduction15Days(boardDTO);
MesReportWork todaydto = pros15.get(nowDate);
if(todaydto != null){
dto.setPlanProduction(todaydto.getQuantity().toString().replace(".00",""));
dto.setActProduction(todaydto.getQuantityFeedback().toString());
Map<String,MesReportWork> pros15Plan = mesMapper.getProduction15Days(boardDTO);
Map<String,MesReportWork> pros15Act = mesMapper.getProduction15DaysAct(boardDTO);
MesReportWork todayPlandto = pros15Plan.get(nowDate);
MesReportWork todayActdto = pros15Act.get(nowDate);
if(todayPlandto != null){
dto.setPlanProduction(todayPlandto.getQuantity().toString().replace(".00",""));
}else{
dto.setPlanProduction("0");
}
if(todayActdto != null){
dto.setActProduction(todayActdto.getQuantityFeedback().toString().replace(".00",""));
}else{
dto.setActProduction("0");
}
//plans;
@ -72,12 +77,16 @@ public class MesBoradServiceImpl implements IMesBoradService {
List<String> acts = new ArrayList<>();
//acts;
for(String dayStr:days){
MesReportWork workR = pros15.get(dayStr);
if(workR != null){
plans.add(workR.getQuantity().toString());
acts.add(workR.getQuantityFeedback().toString());
MesReportWork workPlanR = pros15Plan.get(dayStr);
MesReportWork workActR = pros15Act.get(dayStr);
if(workPlanR != null){
plans.add(workPlanR.getQuantity().toString());
}else{
plans.add("0");
}
if(workActR != null){
acts.add(workActR.getQuantityFeedback().toString());
}else{
acts.add("0");
}
}

@ -295,15 +295,23 @@
</select>
<select id="getProduction15Days" resultType="com.op.mes.domain.MesReportWork">
select sum(pow.quantity_split) quantity,
pow.product_date productDate
from pro_order_workorder pow
where pow.del_flag='0'
and pow.workorder_name = #{equCode}
and CONVERT(DATE, pow.product_date) BETWEEN DATEADD(DAY, -15, CONVERT(DATE, GETDATE())) AND CONVERT(DATE, GETDATE())
group by pow.product_date
</select>
<select id="getProduction15DaysAct" resultType="com.op.mes.domain.MesReportWork">
select sum(mrw.quantity_feedback) quantityFeedback,
pow.product_date productDate,
pow.quantity_split quantity
pow.product_date productDate
from mes_report_work mrw
left join pro_order_workorder pow on pow.workorder_code = mrw.workorder_code
left join pro_order_workorder pow on pow.workorder_code = mrw.workorder_code
where mrw.del_flag='0' and pow.del_flag='0' and mrw.parent_order = '0'
and pow.workorder_name = #{equCode}
and CONVERT(DATE, pow.product_date) BETWEEN DATEADD(DAY, -15, CONVERT(DATE, GETDATE())) AND CONVERT(DATE, GETDATE())
group by pow.product_date,pow.quantity_split
group by pow.product_date
</select>
<select id="getWorkOrder" resultType="com.op.system.api.domain.dto.BoardDTO">
select
@ -320,4 +328,5 @@
and CONVERT ( DATE, pow.product_date ) = CONVERT ( DATE, GETDATE( ) )
and pow.parent_order = '0'
</select>
</mapper>

@ -465,7 +465,7 @@ public class ProOrderServiceImpl implements IProOrderService {
String failOrder = "";
ProOrder proOrder = null;
for (SapProOrder sapProOrder:newOrders) {
if("LJ88".equals(sapProOrder.getOrderType())){
if(!("LJ01".equals(sapProOrder.getOrderType()) || "MES".equals(sapProOrder.getCreateBy()))){
//工单生产后整个订单就被锁定//订单存在就更新,不存在就插入
proOrder = new ProOrder();
BeanUtils.copyProperties(sapProOrder, proOrder);

@ -379,7 +379,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
sapList = new ArrayList<>();
SapCreateOrder sap = new SapCreateOrder();
sap.setWerks(whiteOrder.getFactoryCode());//工厂编码
sap.setAufpar("LJ01");//订单类型
sap.setAufpar(whiteOrder.getProdType());//订单类型
sap.setVerid(whiteOrder.getAtrr2());//生产版本
sap.setMatnr(whiteOrder.getProductCode());//物料编号
sap.setQuantity(whiteOrder.getQuantitySplit() + "");//数量

@ -82,4 +82,8 @@ public interface QcCheckTaskProduceMapper {
* @return
*/
public List<QcCheckReportIncome> selectQcCheckReportIncomeList(QcCheckReportIncome qcCheckReportIncome);
public List<QcCheckTaskProduce> getOrderWorksW2(ProOrderWorkorderDTO qoWork);
public QcCheckTaskProduce getLastXJTask(QcCheckTaskProduce productTask);
}

@ -1,11 +1,12 @@
package com.op.quality.service.impl;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@ -243,6 +244,16 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
}
/**qc_check_task**/
if("LJ01".equals(qcCheckTaskProduce.getProductType())){
//正常
qcCheckTaskProduce.setProductType("a");
}else if("LJ02".equals(qcCheckTaskProduce.getProductType())){
//返修
qcCheckTaskProduce.setProductType("b");
}else if("LJ04".equals(qcCheckTaskProduce.getProductType())){
//试产
qcCheckTaskProduce.setProductType("c");
}
qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
/**qc_check_task_detail**/
@ -382,23 +393,34 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w2");
List<QcCheckTaskProduce> works = qcCheckTaskProduceMapper.getOrderWorks(qoWork);
for(QcCheckTaskProduce productTask:works){
//活动中
List<QcCheckTaskProduce> w2works = qcCheckTaskProduceMapper.getOrderWorksW2(qoWork);
for(QcCheckTaskProduce productTask:w2works){
productTask.setCheckType("checkTypeSCXJ");//过程检验-巡检
productTask.setOrderNo(productTask.getWorkorderCode());
Date nowTime = DateUtils.getNowDate();
Date startTime = productTask.getCreateTime();
//获取最新一条巡检数据
QcCheckTaskProduce lastXJ = qcCheckTaskProduceMapper.getLastXJTask(productTask);
if(lastXJ != null ){
productTask.setProductType(lastXJ.getProductType());
productTask.setConfirmManCode(lastXJ.getConfirmManCode());
productTask.setConfirmManName(lastXJ.getConfirmManName());
productTask.setCreateTime(lastXJ.getCreateTime());
}
Date nowTime = DateUtils.getNowDate();
Date startTime = productTask.getCreateTime();
LocalTime startTime0 = LocalTime.parse("11:30");
LocalTime endTime0 = LocalTime.parse("12:30");
LocalTime currentTime = LocalTime.now();
if (!currentTime.isAfter(startTime0.minusSeconds(1)) && !currentTime.isBefore(endTime0.plusSeconds(1))) {
if (currentTime.isAfter(startTime0.minusSeconds(1)) && currentTime.isBefore(endTime0.plusSeconds(1))) {
// 当前时间在11:30到12:30之间不执行任务
logger.info("++++++++++++过程检验巡检任务生成午间休息++++++++++++++");
} else {
long mins = DateUtil.between(startTime, nowTime, DateUnit.MINUTE);
long mins = 60L;
if(startTime != null){
mins = DateUtil.between(startTime, nowTime, DateUnit.MINUTE);
}
if(mins>=60){
int m = insertQcCheckTaskProduce(productTask);
@ -408,4 +430,16 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
}
logger.info("++++++++++++" + poolName + "++++过程检验巡检结束++++++++++");
}
public static void main(String args[]) throws ParseException {
LocalDateTime start = LocalDateTime.of(2024, 4, 2, 23, 58);
LocalDateTime end = LocalDateTime.of(2024, 4, 3, 0, 30);
System.out.println("相差的分钟数: " + Duration.between(start, end).toMinutes() + "分钟");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date start1 = dateFormat.parse("2024-04-02 23:45:30");
Date end1 = dateFormat.parse("2024-04-03 00:05:30");
System.out.println(DateUtil.between(start1, end1, DateUnit.MINUTE));
}
}

@ -417,4 +417,46 @@
</if>
order by t.order_no,t.createTimeStr desc
</select>
<select id="getOrderWorksW2" resultType="com.op.quality.domain.QcCheckTaskProduce">
select
pow.factory_code factoryCode,
pow.workorder_code workorderCode,
pow.product_code materialCode,
pow.product_name materialName,
pow.quantity_split quality,
pow.unit,
be.workshop_code supplierCode,
be.workshop_name supplierName,
pow.product_date incomeTime,
pow.workorder_name checkLoc,
pow.prod_type productType
from pro_order_workorder pow
left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx'
where pow.del_flag = '0'
and pow.status = 'w2' and pow.parent_order = '0'
and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120))
</select>
<select id="getLastXJTask" resultType="com.op.quality.domain.QcCheckTaskProduce">
select top 1
qct.factory_code factoryCode,
qct.order_no workorderCode,
qct.material_code materialCode,
qct.material_name materialName,
qct.quality,
qct.unit,
qct.supplier_code supplierCode,
qct.supplier_name supplierName,
qct.income_time incomeTime,
qct.create_time createTime,
qct.check_loc checkLoc,
qct.product_type productType,
qct.confirm_man_code confirmManCode,
qct.confirm_man_name confirmManName
from qc_check_task qct
where qct.check_type = 'checkTypeSCXJ' and qct.del_flag = '0'
and qct.del_flag = '0' and qct.order_no = #{workorderCode}
<!--and CONVERT(varchar(10),qct.income_time, 120) = CONVERT(varchar(10),GETDATE(), 120)-->
order by qct.create_time desc
</select>
</mapper>

Loading…
Cancel
Save