/*
* @Author: Sakura
* @LastEditors: Sakura
* @Date: 2024-02-28 9:55:04
* @Description: 计划任务 ---- 机台任务
*/
/* eslint-disable */
import React, { useEffect, useRef, useState } from "react";
import moment from "moment";
import {
Carousel,
Col,
Row,
Button,
Input,
Modal,
Space,
Dropdown,
message,
Tooltip
} from "antd";
import { SettingTwoTone } from "@ant-design/icons";
import * as commonFunc from "@/components/Common/commonFunc";
import * as commonUtils from "@/utils/utils";
import * as commonConfig from "@/utils/config";
import * as commonBusiness from "@/components/Common/commonBusiness";
import * as commonServices from "@/services/services";
import useCommonBase from "@/components/Common/CommonHooks/useCommonBase";
import StaticEditTable from "@/components/Common/CommonTable";
import styles from "./index.less";
import taskInfoIcon from "../assets/taskInfo2.png";
import statusIcon from "../assets/status.png";
import taskIcon from "../assets/task.png";
import timeIcon from "../assets/time.png";
import { handleOeeBtnEent } from "./common/handlePause";
import { operationFetch } from "../../productionExec/productionExecMain/operationFetch";
// 业务层
const useInfoEvent = props => {
const { formData } = props;
const [refreshCount, setRefreshCount] = useState(0);
useEffect(
async () => {
if (commonUtils.isNotEmptyArr(formData)) {
const colunmData = handleGetColumnData(formData, true);
const result = await handleGetData(formData, true);
const addState = {
...colunmData,
...result
};
props.onSaveState(addState);
}
},
[formData, refreshCount]
);
// 获取表头数据
const handleGetColumnData = (formData = [], isWait) => {
let addState = {};
for (let i = 0; i < formData.length; i++) {
const config = formData[i];
const column = commonFunc.getHeaderConfig(config);
addState = {
...addState,
[`slave${i}Column`]: column,
[`slave${i}Config`]: config
};
}
if (isWait) {
return addState;
} else {
props.onSaveState(addState);
}
};
// 获取数据集
const handleGetData = async (formData = [], isWait, filter) => {
let addState = {};
for (let i = 0; i < formData.length; i++) {
const config = formData[i];
if (!config) continue;
const conditonValues = props.onGetSqlConditionValues(config);
if (config.sSqlStr === "Sp_OEE_ProductionReport") {
conditonValues.sMachineId_s_pro = props.app.sMachineNameSId;
}
// 前期生产或反馈问题表必须有非空过滤条件
if (
(i === 1 && Object.values(conditonValues).includes("")) ||
Object.values(conditonValues).includes(undefined)
) {
continue;
}
const bFilter = [];
if (filter) {
Object.keys(filter).forEach(key => {
bFilter.push({
bFilterName: key,
bFilterCondition: "like",
bFilterValue: filter[key]
});
});
}
const result =
(await props.onGetDataSet({
name: `slave${i}`,
configData: config,
condition: {
bFilter,
sSqlCondition: { ...conditonValues }
},
isWait: true
})) || {};
props.setTempRef(result);
addState = { ...addState, ...result };
}
props.setTempRef({}, true);
if (isWait) {
return addState;
} else {
props.onSaveState(addState);
}
};
// 查询
const handleSearch = sWorkOrderNo => {
handleGetData([formData[0]], false, {
sWorkOrderNo
});
};
// 开工事件
const handleStartWork = async params => {
const { sModelsId, token, app } = props;
const { name, record, config, tableData, iFlag, pauseValue } = params;
const { sMachineId, sId, sSlaveId } = record;
// /* 若设置了禁止跳单 选择数据不是第一条时进行提示 */
// const iIndex = app.systemData.findIndex(item => item.sName === "CkxNoSkip");
// if (iIndex > -1) {
// const sValue = app.systemData[iIndex].sValue;
// if (sValue === "1") {
// /* 如果设置了进制跳单 */
// const indexFirst = tableData.findIndex(
// item => sId === item.sId || sSlaveId === item.sSlaveId
// );
// if (indexFirst > 0) {
// message.warn("禁止跳单!");
// return;
// }
// }
// }
// // 验证是否单据是否被使用
// const dataUrl = `${
// commonConfig.server_host
// }bill/billCopyToCheckWork?sModelsId=${sModelsId}`;
// const values = { sMachineId };
// const dataReturn = (await commonServices.postValueService(
// token,
// values,
// dataUrl
// )).data;
// if (dataReturn.code !== 1) {
// props.getServiceError(dataReturn);
// return;
// }
// 单据可以使用
const { startWorkConfig = {} } = config;
const { sAssignField } = startWorkConfig;
const allTableData = {
[name]: record
};
let rowData = commonFunc.getDefaultData(config, allTableData); // 取默认值
rowData = {
...rowData,
...commonFunc.getAssignFieldValue(sAssignField, record, allTableData),
handleType: "add",
sId: commonUtils.createSid(),
sTeamId: app.sTeamNameSId,
sMachineId: app.sMachineNameSId,
sParentId: record.sId,
tCreateDate: new Date()
};
const valuesNew = {};
valuesNew.data = [];
valuesNew.data.push(
commonBusiness.mergeData(name, "plc_machinedata", [rowData], [])
);
if ((iFlag || Object.is(iFlag, 0)) && valuesNew.data[0]) {
valuesNew.data[0].iFlag = iFlag;
}
if (pauseValue) {
valuesNew.data[0].sWorkOrderChangeMemo = pauseValue;
}
const BtnSave = commonFunc.showMessage(
app.commonConst,
"BtnSave"
); /* 保存 */
params.optName = BtnSave;
params.sClientType = "1";
const returnData = await commonBusiness.saveData({
token,
value: valuesNew,
sModelsId,
bMachineTask: true
});
return returnData;
// if (commonUtils.isEmptyObject(returnData)) return;
// props.onSaveState(
// {
// [`${name}SelectedRowKeys`]: [record.sId]
// },
// () => {
// props.dispatch({
// type: "app/saveGlobalData",
// payload: {
// currentStartWorkMachineTaskDataRow: rowData
// }
// });
// handleRefresh();
// setTimeout(() => {
// props.onChangeRouter({
// type: "name",
// path: ["生产执行", "生产执行"]
// });
// }, 500);
// }
// );
// this.props.onSaveCurrentState(slaveData, true, undefined, undefined, 1);
};
// 更新工单状态
const handleUpdateStatus = async params => {
const { doWorkState, record } = params;
const { sModelsId, app } = props;
const value = {
plcMachinedata: record
};
const url = `${commonConfig.server_host
}oee/doUpdateStatus/${doWorkState}?sModelsId=${sModelsId}&sMachineId=${record.sMachineId
}`;
const returnData = (await commonServices.postValueService(
app.token,
value,
url
)).data;
if (returnData.code !== 1) {
props.getServiceError(returnData);
return false;
}
return true;
};
// 监听机台任务选中行变化
const { slave0SelectedRowKeys = [], slave0Data = [], sModelsId } = props;
useEffect(
() => {
if (!slave0Data.length) return;
const globalData = commonUtils.convertStrToObj(
localStorage.xlybusinessglobalData
);
const { currentSelectedMachineTaskDataRow = {} } = globalData;
// 当前选中行sId,默认取缓存数据
let currentSelectedRowKey = slave0SelectedRowKeys[0];
if (
!currentSelectedRowKey &&
sModelsId === currentSelectedMachineTaskDataRow?.sModelsId
) {
currentSelectedRowKey = currentSelectedMachineTaskDataRow.sId;
}
if (!currentSelectedRowKey) {
currentSelectedRowKey = slave0Data[0].sId;
}
// 默认选中第一行
if (!slave0SelectedRowKeys.length) {
props.onSaveState({
slave0SelectedRowKeys: [currentSelectedRowKey]
});
}
// 将当前选中行保存到全局
props.dispatch({
type: "app/saveGlobalData",
payload: {
currentSelectedMachineTaskDataRow: {
...(slave0Data.find(item => item.sId === currentSelectedRowKey) ||
{}),
sModelsId
}
}
});
// 前期生产或反馈问题数据根据机台任务选中行变化
handleGetData(["", formData[1]], false);
},
[slave0SelectedRowKeys[0], slave0Data.length]
);
// 监听开工任务变化
useEffect(
() => {
if (commonUtils.isEmptyObject(props.slave0Data)) return;
const startRowData = props.slave0Data.find(item => item.iStar === 1);
if (!startRowData) return;
props.dispatch({
type: "app/saveGlobalData",
payload: {
currentStartWorkMachineTaskDataRow: startRowData
}
});
},
[JSON.stringify(props.slave0Data)]
);
// 刷新页面
const handleRefresh = () => {
setRefreshCount(refreshCount + 1);
};
const itemClickRef = useRef();
// 开工、暂停事件
const handleTableBtnClick = async item => {
const { tableName, index, record, tableData, config, iFlag } = item;
const { showName, sControlName } = config;
if (sControlName === 'BtnProductionReporting') {
props.onTableBtnClick(item);
return;
}
if (showName === "完工") {
// var prompt = "生产订单号:"+item.record.sSReserve5+"
"+item.record.sProductName+""
// + "
已完成:"+item.record.dProductionReportQty+"
剩余:"+item.record.dNoProductionReportQty+"
是否确认完工!"
// ;
Modal.confirm({
title: "温馨提示:",
content: (
{item.title}:
{slave1Data[0] ? (
{item.content}
{taskInfoData.sMachineNameConent}
{taskInfoData.sStatusNameConent}
{taskInfoData.tStartingUpTimeConent}
{taskInfoData.tNorRunTimeTitle}:
{taskInfoData.tNorRunTimeConent}{taskInfoData.tExeWaitTimeTitle}:
{taskInfoData.tExeWaitTimeConent}{taskInfoData.tNorWaitTimeTitle}:
{taskInfoData.tNorWaitTimeConent}{taskInfoData.tMaintenceTimeTitle}:
{taskInfoData.tMaintenceTimeConent}{taskInfoData.iFinishTaskBatchConent} /{" "} {taskInfoData.iFinishProductionNumConent}