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

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

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

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

@ -82,4 +82,8 @@ public interface QcCheckTaskProduceMapper {
* @return * @return
*/ */
public List<QcCheckReportIncome> selectQcCheckReportIncomeList(QcCheckReportIncome qcCheckReportIncome); 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; package com.op.quality.service.impl;
import java.math.BigDecimal; 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.time.LocalTime;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
@ -243,6 +244,16 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
} }
/**qc_check_task**/ /**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); qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
/**qc_check_task_detail**/ /**qc_check_task_detail**/
@ -382,23 +393,34 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO(); ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w2"); 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.setCheckType("checkTypeSCXJ");//过程检验-巡检
productTask.setOrderNo(productTask.getWorkorderCode()); 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 startTime0 = LocalTime.parse("11:30");
LocalTime endTime0 = LocalTime.parse("12:30"); LocalTime endTime0 = LocalTime.parse("12:30");
LocalTime currentTime = LocalTime.now(); 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之间不执行任务 // 当前时间在11:30到12:30之间不执行任务
logger.info("++++++++++++过程检验巡检任务生成午间休息++++++++++++++"); logger.info("++++++++++++过程检验巡检任务生成午间休息++++++++++++++");
} else { } 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){ if(mins>=60){
int m = insertQcCheckTaskProduce(productTask); int m = insertQcCheckTaskProduce(productTask);
@ -408,4 +430,16 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
} }
logger.info("++++++++++++" + poolName + "++++过程检验巡检结束++++++++++"); 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> </if>
order by t.order_no,t.createTimeStr desc order by t.order_no,t.createTimeStr desc
</select> </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> </mapper>

Loading…
Cancel
Save