Commit ee933e0e authored by xiangjiaojunxp's avatar xiangjiaojunxp

物料转换六矿转换

parent 8d23f5db
......@@ -145,6 +145,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
FROM act_supplies_details a
LEFT JOIN act_supplies b ON a.sid = b.id
WHERE a.status = 0
AND a.code IS NOT NULL
</select>
<select id="selectActSuppliesDetailsById" parameterType="Long" resultMap="ActSuppliesDetailsResult">
......
......@@ -65,7 +65,6 @@
</el-upload>
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div
id="luckysheet"
......@@ -222,7 +221,6 @@ export default {
/** 判断是否选择时间*/
rulesdate(){
if (this.date==''||this.date==null){
this.disableNextButton=true;
this.$message.error('请选择时间日期!');
......@@ -230,10 +228,8 @@ export default {
this.disableNextButton=true;
this.$message.error('请选择所属矿区!');
}
},
handledateChange(){
if (this.date==''||this.date==null||this.date==undefined){
this.disableNextButton=true;
}else {
......@@ -242,13 +238,11 @@ export default {
},
handleminingChange(){
if (this.date==''||this.date==null||this.date==undefined){
this.disableNextButton=true;
}else {
this.disableNextButton=false;
}
},
/** 页面刷新时展示的数据*/
......@@ -423,8 +417,8 @@ export default {
},
/** 导入事件*/
async handleFileChange(evt) {
//导入Promise方法
/*async handleFileChange(evt) {
if(modify){
this.$confirm('再次导入将会清空表内数据,是否继续操作?', '注意!!!', {
confirmButtonText: '确定',
......@@ -456,12 +450,10 @@ export default {
});
});
try {
const exportJson = await cons;
await this.summary(exportJson);
this.submit(exportJson);
//this.submit(exportJson);
} catch (Error) {
this.$message({
message: Error.message,
......@@ -482,7 +474,6 @@ export default {
//this.$message({type: 'info', message: '操作已取消'});
});
}else{
let exx;
this.showMask = true;
const cons = new Promise((resolve, reject) => {
......@@ -491,10 +482,8 @@ export default {
resolve(exx);
});
});
try {
const exportJson = await cons;
await this.summary(exportJson);
this.submit(exportJson);
......@@ -505,17 +494,91 @@ export default {
type: "error"});
}finally {
// 导入完成后关闭遮罩层
this.showMask = false;}
}
},*/
async handleFileChange(evt) {
if(modify){
this.$confirm('再次导入将会清空表内数据,是否继续操作?', '注意!!!', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
// 确认继续后刷新页面返回模板
getSuppliesTemplate(7).then(response => {
const sysSupplies = response.rows;
this.luckysheetData = sysSupplies[0].templateContent;
let json_data = JSON.parse(sysSupplies[0].templateContent);
//luckysheet.destroy()
luckysheet.create({
container: "luckysheet", // Luckysheet 的容器元素 ID
title: fileName, // Excel 文件名
data: json_data, // Excel 数据
showinfobar: false, //是否显示顶部名称栏
lang:'zh',
});
modify=false;
}).then(async ()=>{
this.showMask = true;
//将导入数据替换保存
LuckyExcel.transformExcelToLucky(evt, exportJson => {
this.summary(exportJson)
.then(async() => {
//this.submit(exportJson);
})
.catch(error => {
this.$message({
message: error.message,
type: "error"
});
console.log(error.message);
console.log("这里是最外面的地方");
})
.finally(() => {
// 导入完成后关闭遮罩层
this.showMask = false;
});
});
}).catch(() => {
// 处理错误逻辑,这里是一个空的错误处理函数
this.$message.error('查询失败,模板未找到,请联系管理员进行处理!');
});
}).catch(() => {
// 用户点击了取消按钮
this.$message({type: 'info', message: '操作已取消'});
});
}else{
this.showMask = true;
LuckyExcel.transformExcelToLucky(evt, exportJson => {
this.summary(exportJson)
.then(async() => {
//this.submit(exportJson);
})
.catch(error => {
this.$message({
message: error.message,
type: "error"
});
console.log(error.message);
console.log("这里是最外面的地方");
})
.finally(() => {
// 导入完成后关闭遮罩层
this.showMask = false;
});
});
}
}
},
/** 物料转换汇总到页面*/
summary(exportJson){
// 记录开始时间
const startTime = new Date();
const startTime = new Date().getTime();
let sysRulez;
let sysRules;
let sysConver;
......@@ -715,6 +778,7 @@ export default {
.then(response => {
let array = response.rows;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) {
let values = [];
......@@ -743,7 +807,7 @@ export default {
}
//循环得到汇总结果
console.log(map);
if (map.size === 0) {
throw new Error("导入失败,导入文件错误");
}
......@@ -756,7 +820,7 @@ export default {
map.forEach((value, key) => {
const suffixArr = key.split('/'), mat = suffixArr[2], depp = suffixArr[1],
expp = suffixArr[0];
//console.log(expp);console.log(depp);console.log(mat);
let searchResult = luckysheet.find(expp);
if (searchResult.length !== 0 ) {
rowws = searchResult[0].row;
......@@ -847,7 +911,7 @@ export default {
}catch(err){
throw new Error("导入失败,导入文件与模板规则不匹");
}
//console.log(smallMat);
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
......@@ -857,7 +921,7 @@ export default {
materialConvert(smallMat)
.then(response => {
let array = response.rows;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for (let i = parseInt(sysRulez[0].re) + 1; i < data.length; i++) {
let values = [];
......@@ -896,7 +960,7 @@ export default {
let row;
let con;
let warn=0;
//console.log(map);
map.forEach((value,key)=>{
let searchResult;
searchResult= luckysheet.find(key);
......@@ -976,7 +1040,7 @@ export default {
if (map2.size === 0) {
throw new Error("导入失败,导入文件错误");
}
//console.log(map2);
map2.forEach((value, key) => {
let searchResult;
searchResult= luckysheet.find(key);
......@@ -1004,14 +1068,255 @@ export default {
resolve(response.rows);
innerResolve(); // 标记当前异步任务完成
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
break;
//李志昊版
case 7: {
let map = new Map();
let smallMat = [];
let newsmallMat=[];
let p=0;
let deps = [];
try {
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][sysRulez[1].ce] != null && data[i][key_i] != null) {
let num = data[i][key_i].m;
let dep = data[i][sysRulez[1].ce].m;
smallMat.push(num);
newsmallMat.push({'index':p,'code':num});
p++;
deps.push(dep);
} else {
smallMat.push(null);
deps.push(null);
}
}
}catch(err){
throw new Error("导入失败,导入文件与模板规则不匹");
}
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
function sortArray(array) {
array.sort((a, b) => b.code.length - a.code.length)
return array
}
materialList().then(response => {
/*let SixMateriel=[];
let MaterielCode=[];
let NewMarterielCode=[];
let SixList=[];
let newSmasll =newsmallMat;
let m=0
SixMateriel=response.rows.slice(92,246);
for(var i=0;i<SixMateriel.length;i++){
if(SixMateriel[i].code!==null){
MaterielCode.push(SixMateriel[i])
}
}
NewMarterielCode= sortArray(MaterielCode)
for (let i = 0; i < NewMarterielCode.length; i++) {
for (let j = 0; j < newSmasll.length; j++) {
if(newSmasll[j] !== null){
m++
if (NewMarterielCode[i].code==newSmasll[j].code.slice(0,NewMarterielCode[i].code.length)) {
SixList[newSmasll[j].index]=NewMarterielCode[i].codes;
newSmasll.splice(j,1);
j--;
}
}
}
}
//console.log(newSmasll)
for (let k = 0; k < newSmasll.length; k++) {
SixList[newSmasll[k].index]='11';
m++;
}
//console.log(m)
//console.log(SixList,'1231231231231')
this.NewSixList=SixList*/
let SixMateriel=[];
let MaterielCode=[];
let NewMarterielCode=[];
let SixList=[];
let newSmasll =smallMat;
SixMateriel=response.rows;
NewMarterielCode= sortArray(SixMateriel)
console.log("新的转换规则有"+NewMarterielCode.length+"");
// //转化编码
let p=0;
for(var i=0;i<newSmasll.length;i++){
for (var j = 0; j < NewMarterielCode.length; j++) {
if(newSmasll[i] !== null){
if(newSmasll[i].slice(0,NewMarterielCode[j].code.length)==NewMarterielCode[j].code){
SixList[i]=NewMarterielCode[j].codes
p++
break
}else{
SixList[i]='11'
p++
}
}
}
}
console.log(p)
let newSixList=SixList
console.log(newSixList)
for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) {
let values = [];
if (data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) {
try {
let a = parseFloat(data[i][value[j]].v);
values.push(a);
} catch (err) {
this.$message({
message: "导入失败,导入文件不匹",
type: "error"
});
innerReject(error); // 异步请求出错
}
}
//console.log(SixList)
let key = SixList[k] + '/' + deps[k];
if (map.has(key)) {
let oldValues = map.get(key);
for (let i = 0; i < values.length; i++) {
values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
}
map.set(key, values);
} else {
map.set(key, values);
}
}
}
console.log(map);
//循环得到汇总结果
if (map.size === 0) {
throw new Error("导入失败,导入文件错误");
}
//返回单元格第二行的数据
//let celn=luckysheet.getcellvalue(1);
//返回当前工作表第1列数据
//let cown=luckysheet.getcellvalue(null,0);
let config;
let bord = {
"rangeType": "range",
"borderType": "border-all",
"style": "1",
"color": "#000000",
"range": [{
"row": [0, 0],
"column": [0, 0]
}]
}
let warn = 0;
map.forEach((value, key) => {
let rowws;
const suffixArr = key.split('/'), mat = suffixArr[0], depp = suffixArr[1];
//返回当前工作表第1列数据
let cown=luckysheet.getcellvalue(null,0);
for(let i=0;i<cown.length;i++){
if(cown[i]==null){
continue;
}
if(cown[i].v==undefined){
continue;
}
if(cown[i].v==mat){
rowws=i;
break;
}
}
//let searchResult = luckysheet.find(mat,{isWholeWord:true});
if (rowws != undefined) {
//rowws = searchResult[0].row;
luckysheet.insertRow(rowws + 1);
let vll1 = luckysheet.getCellValue(rowws, sysRulez[0].ct);
luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, {
"ct": {
"fa": "@",
"t": "n"
}
});
luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, vll1);
let vll2 = luckysheet.getCellValue(rowws, parseInt(sysRulez[0].ct) + 1);
luckysheet.setCellValue(rowws + 1, parseInt(sysRulez[0].ct) + 1, vll2);
//输出部门数量金额
luckysheet.setCellValue(rowws + 1, sysRulez[1].ct, depp);
for (let i = 0; i < sysRules.length; i++) {
luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
//修改单元格样式
/*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});*/
}
//输出单价
luckysheet.setCellValue(rowws + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
//修改单价样式
/*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
"ct": {
"fa": "0.0000",
"t": "n"
}
});*/
config = luckysheet.getConfig(0);
bord.range[0].row = [rowws + 1, rowws + 1];
bord.range[0].column = [0, parseInt(sysRules[sysRules.length - 1].ct)];
config.borderInfo.push(bord);
luckysheet.setConfig(config);
modify = true;
} else {
warn++;
}
});
if (warn === map.size) {
throw new Error("导入文件与所选模板规则不匹配");
} else if (warn > 0) {
this.$message({
message: "还有" + warn + "条大类未能匹配到",
type: "warning"
});
}
// 记录结束时间
const endTime = new Date().getTime();
// 计算执行时间(以毫秒为单位)
const executionTime = endTime - startTime;
// 输出执行时间
console.log(`代码执行时间:${executionTime} 毫秒`);
resolve(response.rows);
innerResolve(); // 标记当前异步任务完成
/*let find1 = luckysheet.find("合计");
let number = parseInt(find1[0].row)-1;
luckysheet.setCellValue(find1[0].row, sysRules[sysRules.length-1].ct, "=SUM(F2:F"+number+")")*/
}).catch(Error => {
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
break;
//张凯林版本
/*case 7: {
let map = new Map();
let smallMat = [];
let deps = [];
......@@ -1045,7 +1350,7 @@ export default {
materialList().then( response => {
//六矿物料编码数据
// console.log(response.rows,'ymy');
let array = response.rows.slice(92,246);
let array = response.rows;
//有code的数据
// console.log(array,"<-------->");
//六矿六位编码
......@@ -1183,8 +1488,8 @@ export default {
}
//插入多个value的值
//此方法只适用于一对一唯一值
/*let index = smallMat.indexOf(data[i][key_i].m);
let key = array[index];*/
/!*let index = smallMat.indexOf(data[i][key_i].m);
let key = array[index];*!/
let key = newSortArray[k].code + '/' + deps[k];
if (map.has(key)) {
let oldValues = map.get(key);
......@@ -1245,22 +1550,22 @@ export default {
for (let i = 0; i < sysRules.length; i++) {
luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
//修改单元格样式
/*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
/!*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});*/
});*!/
}
//输出单价
luckysheet.setCellValue(rowws + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
//修改单价样式
/*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
/!*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
"ct": {
"fa": "0.0000",
"t": "n"
}
});*/
});*!/
config = luckysheet.getConfig(0);
bord.range[0].row = [rowws + 1, rowws + 1];
bord.range[0].column = [0, parseInt(sysRules[sysRules.length - 1].ct)];
......@@ -1285,9 +1590,9 @@ export default {
console.log(`代码执行时间:${executionTime} 毫秒`);
resolve(response.rows);
innerResolve(); // 标记当前异步任务完成
/*let find1 = luckysheet.find("合计");
/!*let find1 = luckysheet.find("合计");
let number = parseInt(find1[0].row)-1;
luckysheet.setCellValue(find1[0].row, sysRules[sysRules.length-1].ct, "=SUM(F2:F"+number+")")*/
luckysheet.setCellValue(find1[0].row, sysRules[sysRules.length-1].ct, "=SUM(F2:F"+number+")")*!/
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
......@@ -1296,192 +1601,7 @@ export default {
}));
}
break;
case 8: {
let map = new Map();
let smallMat = [];
let newsmallMat=[];
let p=0;
let deps = [];
try {
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][sysRulez[1].ce] != null && data[i][key_i] != null) {
let num = data[i][key_i].m;
let dep = data[i][sysRulez[1].ce].m;
smallMat.push(num);
newsmallMat.push({'index':p,'code':num});
p++;
deps.push(dep);
} else {
smallMat.push(null);
deps.push(null);
}
}
}catch(err){
throw new Error("导入失败,导入文件与模板规则不匹");
}
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
function sortArray(array) {
array.sort((a, b) => b.code.length - a.code.length)
return array
}
materialList().then(response => {
let SixMateriel=[];
let MaterielCode=[];
let NewMarterielCode=[];
let SixList=[];
let newSmasll =newsmallMat;
let m=0
SixMateriel=response.rows
for(var i=0;i<SixMateriel.length;i++){
if(SixMateriel[i].code!==null){
MaterielCode.push(SixMateriel[i])
}
}
NewMarterielCode= sortArray(MaterielCode)
for (let i = 0; i < NewMarterielCode.length; i++) {
for (let j = 0; j < newSmasll.length; j++) {
if(newSmasll[j] !== null){
m++
if (NewMarterielCode[i].code==newSmasll[j].code.slice(0,NewMarterielCode[i].code.length)) {
SixList[newSmasll[j].index]=NewMarterielCode[i].codes;
newSmasll.splice(j,1);
j--;
}
}
}
}
//console.log(newSmasll)
for (let k = 0; k < newSmasll.length; k++) {
SixList[newSmasll[k].index]='11';
m++;
}
//console.log(m)
//console.log(SixList,'1231231231231')
this.NewSixList=SixList
for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) {
let values = [];
if (data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) {
try{
let a = parseFloat(data[i][value[j]].v);
values.push(a);
}catch (err){
this.$message({
message: "导入失败,导入文件不匹",
type: "error"
});
innerReject(error); // 异步请求出错
}
}
//console.log(SixList)
let key = SixList[k] + '/' + deps[k];
if (map.has(key)) {
let oldValues = map.get(key);
for (let i = 0; i < values.length; i++) {
values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
}
map.set(key, values);
} else {
map.set(key, values);
}
}
}
console.log(map);
//循环得到汇总结果
if (map.size === 0) {
throw new Error("导入失败,导入文件错误");
}
//返回单元格第二行的数据
//let celn=luckysheet.getcellvalue(1);
//返回当前工作表第1列数据
//let cown=luckysheet.getcellvalue(null,0);
let rowws;
let config;
let bord = {
"rangeType": "range",
"borderType": "border-all",
"style": "1",
"color": "#000000",
"range": [{
"row": [0, 0],
"column": [0, 0]
}]
}
let warn=0;
map.forEach((value, key) => {
const suffixArr = key.split('/'), mat = suffixArr[0], depp = suffixArr[1];
let searchResult = luckysheet.find(mat);
if (searchResult.length != 0 && key != null) {
rowws = searchResult[0].row;
luckysheet.insertRow(rowws + 1);
let vll1=luckysheet.getCellValue(rowws,sysRulez[0].ct);
luckysheet.setCellValue(rowws+1, sysRulez[0].ct, {
"ct": {
"fa": "@",
"t": "n"
}
});
luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, vll1);
let vll2=luckysheet.getCellValue(rowws,parseInt(sysRulez[0].ct)+1);
luckysheet.setCellValue(rowws + 1, parseInt(sysRulez[0].ct)+1, vll2);
//输出部门数量金额
luckysheet.setCellValue(rowws + 1, sysRulez[1].ct, depp);
for (let i = 0; i < sysRules.length; i++) {
luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
//
}
//输出单价
luckysheet.setCellValue(rowws + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
config = luckysheet.getConfig(0);
bord.range[0].row = [rowws + 1, rowws + 1];
bord.range[0].column = [0, parseInt(sysRules[sysRules.length - 1].ct)];
config.borderInfo.push(bord);
luckysheet.setConfig(config);
modify=true;
} else{
warn++;
}
});
if (warn === map.size) {
throw new Error("导入文件与所选模板规则不匹配");
} else if (warn > 0) {
this.$message({
message: "还有"+warn+"条大类未能匹配到",
type: "warning"});
}
// 记录结束时间
const endTime = new Date();
// 计算执行时间(以毫秒为单位)
const executionTime = endTime - startTime;
// 输出执行时间
console.log('endTime'+endTime)
console.log('endTime'+startTime)
console.log(`代码执行时间:${executionTime} 毫秒`);
resolve(response.rows);
innerResolve(); // 标记当前异步任务完成
}).catch(Error => {
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
break;
break;*/
default :
{
let map = new Map();
......@@ -1631,6 +1751,7 @@ export default {
}
});
},
/** 导出设置 */
handleExport: debounce(function() {
......@@ -1643,7 +1764,6 @@ export default {
var data = response.data;
for (let i = 0; i < data.length; i++) {
debugger
if(data[i].identifyingCode == 1){
/*生成表*/
let jsonDataa = JSON.parse(data[i].historyContent);
......@@ -1713,9 +1833,7 @@ export default {
this.froms.createBy = data[i].createBy;
this.froms.hDate = data[i].date;
this.froms.mining = data[i].mining;
addActSuppliesSixMinesSummaryTable(this.froms).then(response => {
});
addActSuppliesSixMinesSummaryTable(this.froms).then(response => {});
}
}
}
......@@ -1767,6 +1885,7 @@ export default {
}
}
let b5 ;
if(datab[w][4] != null){
b5= datab[w][4].v;
......@@ -1775,6 +1894,7 @@ export default {
}
}
let b6 ;
if(datab[w][5] != null){
b6= datab[w][5].v;
......@@ -2252,15 +2372,11 @@ export default {
this.fromimport.a63 = b63;
}
addActSuppliesImportTable(this.fromimport).then(response => {
});
addActSuppliesImportTable(this.fromimport).then(response => {});
}
}
}
}
});
}, 500), // 设置延迟时间,单位为毫秒
......
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