修改产线大屏产线查询逻辑

master
Yangwl 2 weeks ago
parent a799e801a0
commit ec3a22b30b

@ -120,4 +120,6 @@ public interface MesMapper {
Map getProductionNumberPLC(BoardDTO mesBoard);
List<String> getproductLineList();
}

@ -55,6 +55,15 @@ public class MesBoradServiceImpl implements IMesBoradService {
try {
boardDTO.setEquipmentTypeCode("equ_type_bzx");
List<BoardDTO> lineList = mesMapper.getLineList(boardDTO);
if (boardDTO.getIsqua()!=null){
//查询当天生产的产线
List<String> productLineList = mesMapper.getproductLineList();
// 使用Stream过滤lineList只保留equCode在productLineList中的数据
lineList = lineList.stream()
.filter(item -> productLineList.contains(item.getEquCode()))
.collect(Collectors.toList());
}
return lineList;
}finally {
DynamicDataSourceContextHolder.poll();
@ -65,157 +74,180 @@ public class MesBoradServiceImpl implements IMesBoradService {
@Override
public BoardDTO getProduction15Days(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
BoardDTO dto = new BoardDTO();
try {
BoardDTO dto = new BoardDTO();
String nowDate = DateUtils.getDate();
String nowDate = DateUtils.getDate();
List<String> days = this.getDays(15);
//days
dto.setDays(days);
boardDTO.setStartTime(days.get(0));
boardDTO.setEndTime(days.get(days.size()-1));
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;
List<String> plans = new ArrayList<>();
List<String> acts = new ArrayList<>();
//acts;
for(String dayStr:days){
MesReportWork workPlanR = pros15Plan.get(dayStr);
MesReportWork workActR = pros15Act.get(dayStr);
if(workPlanR != null){
plans.add(workPlanR.getQuantity().toString());
List<String> days = this.getDays(15);
//days
dto.setDays(days);
boardDTO.setStartTime(days.get(0));
boardDTO.setEndTime(days.get(days.size()-1));
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{
plans.add("0");
dto.setPlanProduction("0");
}
if(workActR != null){
acts.add(workActR.getQuantityFeedback().toString());
if(todayActdto != null){
dto.setActProduction(todayActdto.getQuantityFeedback().toString().replace(".00",""));
}else{
acts.add("0");
dto.setActProduction("0");
}
//plans;
List<String> plans = new ArrayList<>();
List<String> acts = new ArrayList<>();
//acts;
for(String dayStr:days){
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");
}
}
dto.setPlans(plans);
dto.setActs(acts);
return dto;
}finally {
DynamicDataSourceContextHolder.poll();
}
dto.setPlans(plans);
dto.setActs(acts);
return dto;
}
@Override
public Map<String,BoardDTO> getProductionLineInfo(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
Map<String,BoardDTO> dtoMap = new HashMap<>();
//当前工单信息
BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO);
try {
Map<String,BoardDTO> dtoMap = new HashMap<>();
//当前工单信息
BoardDTO workOrder = mesMapper.getWorkOrder(boardDTO);
if(workOrder == null || StringUtils.isEmpty(workOrder.getWorkorderCode())){
return dtoMap;
}
boardDTO.setWorkorderCode(workOrder.getWorkorderCode());
boardDTO.setProductCode(workOrder.getProductCode());
MesLine meslineInfo = mesMapper.getMesLineInfo(boardDTO);
QuantityDto quantityDto = new QuantityDto();
quantityDto.setWorkorderCode(boardDTO.getWorkorderCode());
quantityDto.setMachineCode(boardDTO.getEquCode());
quantityDto.setBoard("1");
QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto);
QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
if(sonMesReport == null){//单层工单的情况
sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto);
}
if(sonMesReport != null){//实际用人
workOrder.setActMan(sonMesReport.getUseMan());
}else{
workOrder.setActMan(new BigDecimal("0"));
}
if(parentMesReport!=null){//实际效率 = 实际母单产量/子总工时
BigDecimal manAvgActual = new BigDecimal(parentMesReport.getQuantityFeedbackSum())
.divide(sonMesReport.getWorkTime(),2,BigDecimal.ROUND_HALF_UP);
workOrder.setActXl(manAvgActual);
}else{
workOrder.setActXl(new BigDecimal("0"));
}
if(meslineInfo != null){
workOrder.setStandarMan(meslineInfo.getStandarMan());
workOrder.setStandarXl(meslineInfo.getStandarXl());
}else{
workOrder.setStandarMan(new BigDecimal("0"));
workOrder.setStandarXl(new BigDecimal("0"));
}
dtoMap.put("workOrder",workOrder);
QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO);
BoardDTO task2 = new BoardDTO();
if(taskDTO.getQuality() != null){
task2.setTaskNum(taskDTO.getQuality().toString());
}else{
task2.setTaskNum("0");
}
dtoMap.put("taskNum",task2);//巡检次数
BoardDTO task3 = new BoardDTO();
if(taskDTO.getSampleQuality() != null){
task3.setTaskSampleNum(taskDTO.getSampleQuality().toString());
}else{
task3.setTaskSampleNum("0");
}
dtoMap.put("taskSampleNum",task3);//巡检抽样数量
BoardDTO task4 = new BoardDTO();
List<QcCheckTaskDTO> checkList = mesMapper.getCheckList(boardDTO);
if(!CollectionUtils.isEmpty(checkList)){
task4.setCheckList(checkList);
}
dtoMap.put("piedata",task4);//巡检结果
if(workOrder == null || StringUtils.isEmpty(workOrder.getWorkorderCode())){
return dtoMap;
}finally {
DynamicDataSourceContextHolder.poll();
}
boardDTO.setWorkorderCode(workOrder.getWorkorderCode());
boardDTO.setProductCode(workOrder.getProductCode());
MesLine meslineInfo = mesMapper.getMesLineInfo(boardDTO);
QuantityDto quantityDto = new QuantityDto();
quantityDto.setWorkorderCode(boardDTO.getWorkorderCode());
quantityDto.setMachineCode(boardDTO.getEquCode());
quantityDto.setBoard("1");
QuantityDto parentMesReport = mesReportWorkMapper.getRealQuantity(quantityDto);
QuantityDto sonMesReport = mesReportWorkMapper.getSumQuantity(quantityDto);
if(sonMesReport == null){//单层工单的情况
sonMesReport = mesReportWorkMapper.getSumQuantityOne(quantityDto);
}
if(sonMesReport != null){//实际用人
workOrder.setActMan(sonMesReport.getUseMan());
}else{
workOrder.setActMan(new BigDecimal("0"));
}
if(parentMesReport!=null){//实际效率 = 实际母单产量/子总工时
BigDecimal manAvgActual = new BigDecimal(parentMesReport.getQuantityFeedbackSum())
.divide(sonMesReport.getWorkTime(),2,BigDecimal.ROUND_HALF_UP);
workOrder.setActXl(manAvgActual);
}else{
workOrder.setActXl(new BigDecimal("0"));
}
if(meslineInfo != null){
workOrder.setStandarMan(meslineInfo.getStandarMan());
workOrder.setStandarXl(meslineInfo.getStandarXl());
}else{
workOrder.setStandarMan(new BigDecimal("0"));
workOrder.setStandarXl(new BigDecimal("0"));
}
dtoMap.put("workOrder",workOrder);
QcCheckTaskDTO taskDTO = mesMapper.getTaskInfo(boardDTO);
BoardDTO task2 = new BoardDTO();
if(taskDTO.getQuality() != null){
task2.setTaskNum(taskDTO.getQuality().toString());
}else{
task2.setTaskNum("0");
}
dtoMap.put("taskNum",task2);//巡检次数
BoardDTO task3 = new BoardDTO();
if(taskDTO.getSampleQuality() != null){
task3.setTaskSampleNum(taskDTO.getSampleQuality().toString());
}else{
task3.setTaskSampleNum("0");
}
dtoMap.put("taskSampleNum",task3);//巡检抽样数量
BoardDTO task4 = new BoardDTO();
List<QcCheckTaskDTO> checkList = mesMapper.getCheckList(boardDTO);
if(!CollectionUtils.isEmpty(checkList)){
task4.setCheckList(checkList);
}
dtoMap.put("piedata",task4);//巡检结果
return dtoMap;
}
@Override
public List<ProOrderWorkorder> getPorOrderList(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
List<ProOrderWorkorder> dtos = mesMapper.getPorOrderList(boardDTO);
return dtos;
try{
List<ProOrderWorkorder> dtos = mesMapper.getPorOrderList(boardDTO);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public List<BoardDTO> getHFProInfo(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
List<BoardDTO> dtos = mesMapper.getHFProInfo(boardDTO);
return dtos;
try {
List<BoardDTO> dtos = mesMapper.getHFProInfo(boardDTO);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public List<BoardDTO> getHFQcInfo(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
List<BoardDTO> dtos = mesMapper.getHFQcInfo(boardDTO);
// if(!CollectionUtils.isEmpty(dtos)){
// //不合格
// List<BoardDTO> isquas = dtos.stream().filter(a -> a.getIsqua().equals("0")).collect(Collectors.toList());
// dtos.get(0).setTaskNum(isquas.size()+"");
// }
return dtos;
try {
List<BoardDTO> dtos = mesMapper.getHFQcInfo(boardDTO);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@Override
public List<BoardDTO> getHFxlInfo(BoardDTO boardDTO) {
DynamicDataSourceContextHolder.push(boardDTO.getFactoryCode());
List<BoardDTO> dtos = mesMapper.getHFxlInfo(boardDTO);
return dtos;
try {
List<BoardDTO> dtos = mesMapper.getHFxlInfo(boardDTO);
return dtos;
}finally {
DynamicDataSourceContextHolder.poll();
}
}
@ -240,24 +272,12 @@ public class MesBoradServiceImpl implements IMesBoradService {
@Override
public Map getProductionNumberPLC(BoardDTO mesBoard) {
DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode());
Map mapList = mesMapper.getProductionNumberPLC(mesBoard);
return mapList;
}
public static void main(String[] args){
List<String> days = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
//获取前面的时间用-负号
Date date = new Date();
for(int num=0;num<15;num++){
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, -num);
days.add(sdf.format(cal.getTime()));
try {
Map mapList = mesMapper.getProductionNumberPLC(mesBoard);
return mapList;
}finally {
DynamicDataSourceContextHolder.poll();
}
Collections.reverse(days);
System.out.println(JSONObject.toJSONString(days));
}
}

@ -387,7 +387,7 @@
and del_flag = '0'
group by workorder_code,batch
)t on t0.workorderCode = t.workorder_code and t0.batchCode = t.batch
order by t0.batchCode
order by t0.workorderCodeSap ASC,t0.batchCode
</select>
<select id="getHFProInfo" resultType="com.op.system.api.domain.dto.BoardDTO">
select t.*,isnull(be.unit_working_hours,0) unitPro from
@ -543,6 +543,14 @@
line_code =#{ equCode }
AND workorder_code =#{ workorderCode}
</select>
<select id="getproductLineList" resultType="java.lang.String">
SELECT DISTINCT
workorder_name
FROM
pro_order_workorder
WHERE
product_date = CONVERT ( VARCHAR ( 10 ), GETDATE( ), 120 )
</select>
</mapper>

Loading…
Cancel
Save