no message

This commit is contained in:
zds
2022-10-29 13:00:39 +08:00
parent 3200842b39
commit 0784c2de18
9 changed files with 405 additions and 299 deletions

View File

@@ -51,6 +51,7 @@ import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@@ -839,19 +840,81 @@ public class FormulaServiceImpl implements FormulaService {
}
// 系列设备
// HashMap<String, String> map1 = new HashMap<>();
// map1.put("flag", "3");
// map1.put("product_series_id", jsonMst.getString("product_series_id"));
// map1.put("workprocedure_id", "1472449856613257216");
// JSONObject jsonDevice1 = WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().uniqueResult(0);
// map1.put("flag", "4");
// JSONObject jsonDevice2= WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().uniqueResult(0);
// if (ObjectUtil.isNotEmpty(jsonDevice1) && ObjectUtil.isNotEmpty(jsonDevice2)) {
// String device_code_1 = jsonDevice1.getString("device_code").substring(4, 6);
// String device_code_2 = jsonDevice2.getString("device_code").substring(4, 6);
// oneMap.put("device1", device_code_1 + "-" + device_code_2);
// }
HashMap<String, String> map1 = new HashMap<>();
map1.put("flag", "3");
map1.put("product_series_id", jsonMst.getString("product_series_id"));
map1.put("workprocedure_id", "1472449856613257216");
JSONObject jsonDevice1 = WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().uniqueResult(0);
map1.put("flag", "4");
JSONObject jsonDevice2= WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(jsonDevice1) && ObjectUtil.isNotEmpty(jsonDevice2)) {
String device_code_1 = jsonDevice1.getString("device_code").substring(4, 6);
String device_code_2 = jsonDevice2.getString("device_code").substring(4, 6);
oneMap.put("device1", device_code_1 + "-" + device_code_2);
JSONArray jsonDevice1 = WQL.getWO("QPF_POINTCARD01").addParamMap(map1).process().getResultJSONArray(0);
List<Integer> list = new ArrayList<Integer>();
if (jsonDevice1.size()!=0) {
for(int i=0;i<jsonDevice1.size();i++){
JSONObject jo_i = jsonDevice1.getJSONObject(i);
list.add(Integer.valueOf(jo_i.getString("device_code").substring(3, 6)));
}
HashMap<String,List<Integer>> hashmap = new HashMap<String,List<Integer>>();
//第一个数据
int flag = list.get(0);
int num = 0;
for(int i=0;i<list.size();i++){
int now = list.get(i);
int now2 = now - 1 ;
//如果连着
if((now == flag) || (now2 == flag)){
flag = now;
if(hashmap.containsKey(num+"")){
List<Integer> new_list= hashmap.get(num+"");
new_list.add(now);
hashmap.put(num+"",new_list);
}else{
List<Integer> new_list= new ArrayList<Integer>();
new_list.add(now);
hashmap.put(num+"",new_list);
}
}else{//不连续了就新增一个
flag = now;
num++;
List<Integer> new_list= new ArrayList<Integer>();
new_list.add(now);
hashmap.put(num+"",new_list);
}
}
String strs = "";
for (Map.Entry<String, List<Integer>> entry : hashmap.entrySet()) {
String key = entry.getKey();
List<Integer> bj_bomdlt = entry.getValue();
int n0 = bj_bomdlt.get(0);
int n_last = bj_bomdlt.get(bj_bomdlt.size() - 1);
String str = "";
if (n0 == n_last) {
str = n0 + "";
} else {
str = n0 + "-" + n_last;
}
if (StrUtil.isNotEmpty(strs)) {
strs = strs + "" + str;
} else {
strs = str;
}
}
oneMap.put("device1", strs);
}
HashMap<String, String> map2 = new HashMap<>();
map2.put("flag", "5");
map2.put("product_series_id", jsonMst.getString("product_series_id"));
@@ -887,122 +950,6 @@ public class FormulaServiceImpl implements FormulaService {
workBook.fill(new FillWrapper("data", flData), sheet);
// workBook.fill(ylData, sheet);
workBook.finish();
/* String formula_id = MapUtil.getStr(whereJson, "formula_id");
WQLObject formMstTab = WQLObject.getWQLObject("PDM_BI_Formula"); // 配方主表
WQLObject formDtlTab = WQLObject.getWQLObject("PDM_BI_FormulaDtl"); // 配方明细表
WQLObject workTab = WQLObject.getWQLObject("PDM_BI_WorkOrder"); // 工令表
WQLObject storageTab = WQLObject.getWQLObject("tool_local_storage"); // 文件表
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); // 物料表
WQLObject classTab = WQLObject.getWQLObject("md_pb_classstandard"); // 分类表
JSONObject jsonMst = formMstTab.query("formula_id ='" + formula_id + "'").uniqueResult(0);
String material_id = jsonMst.getString("material_id");
JSONObject jsonMater = materTab.query("material_id ='" + material_id + "'").uniqueResult(0);
JSONObject jsonWork = workTab.query("workorder_id = '" + jsonMst.getString("workorder_id") + "'").uniqueResult(0);
JSONObject jsonStor = storageTab.query("source_bill_id = '" + material_id + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonStor)) throw new BadRequestException("此物料模板不存在,请先上传模板");
// 设置文件名和防止乱码现象
String fileName = URLEncoder.encode(jsonMater.getString("material_code")+"---"+jsonMst.getString("pcsn"), "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename*=UTf-8''"+fileName+".xlsx");
// 获取输出流
ServletOutputStream outputStream = response.getOutputStream();
String template = jsonStor.getString("path");
// 创建模板工作簿
ExcelWriter workBook = EasyExcel.write(outputStream, DataDto.class).withTemplate(template).build();
// 获取第一个sheet
WriteSheet sheet = EasyExcel.writerSheet().build();
String classIdsFl = classstandardService.getAllChildIdStr(MaterOptTypeEnum.FL.getClass_idStr());
String classIdsYlandBcp = classstandardService.getAllChildIdStr(MaterOptTypeEnum.YL_AND_BCP.getClass_idStr());
// 单组填充
String planstart_time = jsonWork.getString("planstart_time");
HashMap<String, Object> oneMap = new HashMap<>();
oneMap.put("pcsn1", jsonMst.getString("pcsn"));
oneMap.put("weight1",NumberUtil.round(jsonMst.getString("masterbucket_qty"),3));
if (ObjectUtil.isNotEmpty(planstart_time)) {
oneMap.put("date1", planstart_time.substring(0,10));
}
// 查询配方明细-辅料
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("classIds", classIdsFl);
map.put("formula_id", formula_id);
JSONArray flArr = WQL.getWO("QPF_POINTCARD01").addParamMap(map).process().getResultJSONArray(0);
ArrayList<HashMap<String,Object>> flData = new ArrayList<>();
if (ObjectUtil.isNotEmpty(flArr)) {
for (int i = 0; i < flArr.size(); i++) {
HashMap<String, Object> mapFL = new HashMap<>();
JSONObject jsonObject = flArr.getJSONObject(i);
mapFL.put("material_name",jsonObject.getString("material_name"));
mapFL.put("pcsn",jsonObject.getString("pcsn"));
mapFL.put("weight",NumberUtil.round(jsonObject.getString("formula_qty"),3));
flData.add(mapFL);
}
}
// 查询配方明细-原料
map.put("classIds", classIdsYlandBcp);
JSONArray ylArr = WQL.getWO("QPF_POINTCARD01").addParamMap(map).process().getResultJSONArray(0);
ArrayList<HashMap<String,Object>> ylData = new ArrayList<>();
if (ObjectUtil.isNotEmpty(ylArr)) {
for (int j = 0; j < ylArr.size(); j++) {
HashMap<String, Object> mapYL = new HashMap<>();
JSONObject jsonObject = ylArr.getJSONObject(j);
String material_id1 = jsonObject.getString("material_id");
if (StrUtil.equals(jsonObject.getString("material_type"), "01")) {
boolean is_PGF = materialbaseService.isAlongMaterType(MaterOptTypeEnum.PGF.getCode(),material_id1 , null);
boolean is_RF = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(),material_id1 , null);
if (is_PGF || is_RF) {
mapYL.put("material_name",jsonObject.getString("material_code"));
} else {
mapYL.put("material_name",jsonObject.getString("material_name"));
}
} else {
mapYL.put("material_name",jsonObject.getString("material_name"));
}
mapYL.put("pcsn",jsonObject.getString("pcsn"));
mapYL.put("weight", NumberUtil.round(jsonObject.getString("formula_qty"),3));
ylData.add(mapYL);
}
}
if (ylArr.size() == 8) {
map.put("flag", "2");
JSONArray ylArr2 = WQL.getWO("QPF_POINTCARD01").addParamMap(map).process().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(ylArr2)) {
for (int k = 0; k < ylArr2.size(); k++) {
HashMap<String, Object> mapYL2 = new HashMap<>();
JSONObject jsonObject2 = ylArr2.getJSONObject(k);
String material_id1 = jsonObject2.getString("material_id");
if (StrUtil.equals(jsonObject2.getString("material_type"), "01")) {
boolean is_PGF = materialbaseService.isAlongMaterType(MaterOptTypeEnum.PGF.getCode(),material_id1 , null);
boolean is_RF = materialbaseService.isAlongMaterType(MaterOptTypeEnum.RF.getCode(),material_id1 , null);
if (is_PGF || is_RF) {
mapYL2.put("material_name",jsonObject2.getString("material_code"));
} else {
mapYL2.put("material_name",jsonObject2.getString("material_name"));
}
} else {
mapYL2.put("material_name",jsonObject2.getString("material_name"));
}
mapYL2.put("pcsn",jsonObject2.getString("pcsn"));
mapYL2.put("weight", NumberUtil.round(jsonObject2.getString("formula_qty"),3));
flData.add(mapYL2);
}
}
}
workBook.fill(oneMap, sheet);
workBook.fill(new FillWrapper("data1", ylData), sheet);
workBook.fill(new FillWrapper("data2", flData), sheet);
// workBook.fill(ylData, sheet);
workBook.finish();*/
}
@Override
@@ -1099,4 +1046,97 @@ public class FormulaServiceImpl implements FormulaService {
return wcchange;
}
public static void main(String[] args) {
JSONArray jsonDevice1 = new JSONArray();
JSONObject j51 = new JSONObject();
j51.put("device_code","QMJ051");
jsonDevice1.add(j51);
JSONObject j52 = new JSONObject();
j52.put("device_code","QMJ052");
jsonDevice1.add(j52);
JSONObject j53 = new JSONObject();
j53.put("device_code","QMJ053");
jsonDevice1.add(j53);
JSONObject j54 = new JSONObject();
j54.put("device_code","QMJ054");
jsonDevice1.add(j54);
JSONObject j60 = new JSONObject();
j60.put("device_code","QMJ060");
jsonDevice1.add(j60);
JSONObject j67 = new JSONObject();
j67.put("device_code","QMJ067");
jsonDevice1.add(j67);
JSONObject j68 = new JSONObject();
j68.put("device_code","QMJ068");
jsonDevice1.add(j68);
JSONObject j69 = new JSONObject();
j69.put("device_code","QMJ069");
jsonDevice1.add(j69);
JSONObject j70 = new JSONObject();
j70.put("device_code","QMJ070");
jsonDevice1.add(j70);
List<Integer> list = new ArrayList<Integer>();
if (jsonDevice1.size()!=0) {
for(int i=0;i<jsonDevice1.size();i++){
JSONObject jo_i = jsonDevice1.getJSONObject(i);
list.add(Integer.valueOf(jo_i.getString("device_code").substring(3, 6)));
}
HashMap<String,List<Integer>> hashmap = new HashMap<String,List<Integer>>();
//第一个数据
int flag = list.get(0);
int num = 0;
for(int i=0;i<list.size();i++){
int now = list.get(i);
int now2 = now - 1 ;
//如果连着
if((now == flag) || (now2 == flag)){
flag = now;
if(hashmap.containsKey(num+"")){
List<Integer> new_list= hashmap.get(num+"");
new_list.add(now);
hashmap.put(num+"",new_list);
}else{
List<Integer> new_list= new ArrayList<Integer>();
new_list.add(now);
hashmap.put(num+"",new_list);
}
}else{//不连续了就新增一个
flag = now;
num++;
List<Integer> new_list= new ArrayList<Integer>();
new_list.add(now);
hashmap.put(num+"",new_list);
}
}
String strs = "";
for (Map.Entry<String, List<Integer>> entry : hashmap.entrySet()) {
String key = entry.getKey();
List<Integer> bj_bomdlt = entry.getValue();
int n0 = bj_bomdlt.get(0);
int n_last = bj_bomdlt.get(bj_bomdlt.size() - 1);
String str = "";
if (n0 == n_last) {
str = n0 + "";
} else {
str = n0 + "-" + n_last;
}
if (StrUtil.isNotEmpty(strs)) {
strs = strs + "" + str;
} else {
strs = str;
}
}
System.out.println(strs);
}
}
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.sb.auToTask;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
@@ -12,9 +13,12 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.modules.security.service.dto.JwtUserDto;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.SecurityUtils;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 自动创建维修单
* @author Liuxy
@@ -29,101 +33,97 @@ public class AutoCreateRepair {
WQLObject planMstTab = WQLObject.getWQLObject("EM_BI_DeviceRepairPlanMst"); // 设备维修计划主表
WQLObject repairMstTab = WQLObject.getWQLObject("EM_BI_DeviceRepairMst"); // 设备维修单主表
// 1.查询 设备档案表 中状态为正常10、闲置11、故障20、维修30、保养40状态的设备
JSONArray fileArr = fileTab.query("status in (10,11,20,30,40)").getResultJSONArray(0);
// 1.查询 设备档案表 中状态为正常10、闲置11、故障20、维修30、保养40状态的设备的 设备维修计划主表
// 2.根据查询出来的记录 查询 设备维修计划表 中启用状态 = 启用的记录
for (int i = 0; i < fileArr.size(); i++) {
JSONObject json = fileArr.getJSONObject(i);
String devicerecord_id = json.getString("devicerecord_id");
JSONArray jsonPlanMstArr = WQL.getWO("EM_BI_DEVICEREPAIR002").addParam("flag","3").process().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonPlanMstArr)) {
for (int j = 0; j < jsonPlanMstArr.size(); j++) {
JSONObject jsonPlanMst = jsonPlanMstArr.getJSONObject(j);
// 2.1 判断维修计划表中:实际开始时间、实际结束时间 为空
String real_start_date = jsonPlanMst.getString("real_start_date");
String real_end_date = jsonPlanMst.getString("real_end_date");
JSONArray jsonPlanMstArr = planMstTab.query("devicerecord_id = '" + devicerecord_id + "' and is_active = '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonPlanMstArr)) {
for (int j = 0; j < jsonPlanMstArr.size(); j++) {
JSONObject jsonPlanMst = jsonPlanMstArr.getJSONObject(j);
// 2.1 判断维修计划表中:实际开始时间、实际结束时间 为空
String real_start_date = jsonPlanMst.getString("real_start_date");
String real_end_date = jsonPlanMst.getString("real_end_date");
// 2.2 根据源单号为维修计划id查询 维修单 --条件未删除、未审核
JSONObject jsonRepairMst = repairMstTab.query("source_bill_id = '" + jsonPlanMst.getString("repair_plan_id") + "' and is_delete = '0' and invstatus != '99'").uniqueResult(0);
if (ObjectUtil.isEmpty(real_start_date) && ObjectUtil.isEmpty(real_end_date)) {
if (ObjectUtil.isEmpty(jsonRepairMst)) {
// 2.3 判断周期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String plan_start_date = jsonPlanMst.getString("plan_start_date");
String today = DateUtil.today();
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("repair_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("repair_plan_code"));
// 2.2 根据源单号为维修计划id查询 维修单 --条件未删除、未审核
JSONObject jsonRepairMst = repairMstTab.query("source_bill_id = '" + jsonPlanMst.getString("repair_plan_id") + "' and is_delete = '0' and invstatus != '99'").uniqueResult(0);
if (ObjectUtil.isEmpty(real_start_date) && ObjectUtil.isEmpty(real_end_date)) {
if (ObjectUtil.isEmpty(jsonRepairMst)) {
// 2.3 判断周期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String plan_start_date = jsonPlanMst.getString("plan_start_date").replace("-", "");
String today = DateUtil.today().replace("-", "");
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("repair_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("repair_plan_code"));
// 计算 维修计划日期 - 当前日期 后的天数
Date today2 = DateUtil.parse(today);
Date plan_start_date2 = DateUtil.parse(plan_start_date);
long num = (int) DateUtil.between(plan_start_date2,today2, DateUnit.DAY);
// 计算 当前日期 - 维修计划日期 后的天数
String num = String.valueOf(NumberUtil.sub(today, plan_start_date));
// 周期为年 :当前日期-维修计划开始时间 <= 15 天时,新增维修单
if (StrUtil.equals(maintenancecycle,"01")) {
if (Integer.parseInt(num) >= 15) {
this.createRepair(param);
}
// 周期为季度 :当前日期-维修计划开始时间 <= 10 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (Integer.parseInt(num) >= 10) {
this.createRepair(param);
}
// 周期为月 :当前日期-维修计划开始时间 <= 7 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (Integer.parseInt(num) >= 7) {
this.createRepair(param);
}
// 周期为周 :当前日期-维修计划开始时间 <= 3 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"04")) {
if (Integer.parseInt(num) >= 3) {
this.createRepair(param);
}
// 周期为年 维修计划日期 - 当前日期 <= 15 天时,新增维修单
if (StrUtil.equals(maintenancecycle,"01")) {
if (num <= 15) {
this.createRepair(param);
}
// 周期为季度 维修计划日期 - 当前日期 <= 10 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (num <= 10) {
this.createRepair(param);
}
// 周期为月 维修计划日期 - 当前日期 <= 7 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (num <= 7) {
this.createRepair(param);
}
// 周期为周 维修计划日期 - 当前日期 <= 3 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"04")) {
if (num <= 3) {
this.createRepair(param);
}
}
} else {
// 3 如果保养实际开始时间 和 保养实际结束时间不为空 并且查不到对应单据
if (ObjectUtil.isEmpty(jsonRepairMst)) {
// 取维修实际结束日期:用当前日期 - 维修实际结束日期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String rep_real_end_date = jsonPlanMst.getString("real_end_date").replace("-", "");
String today = DateUtil.today().replace("-", "");
}
} else {
// 3 如果保养实际开始时间 和 保养实际结束时间不为空 并且查不到对应单据
if (ObjectUtil.isEmpty(jsonRepairMst)) {
// 取维修实际结束日期:用当前日期 - 维修实际结束日期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String rep_real_end_date = jsonPlanMst.getString("real_end_date");
String today = DateUtil.today();
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("repair_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("repair_plan_code"));
// 计算 当前日期 - 维修实际结束 后的天数
String num = String.valueOf(NumberUtil.sub(today, rep_real_end_date));
// 周期为年 :当前日期-维修实际结束 <= 15 天时,新增维修单
if (StrUtil.equals(maintenancecycle,"01")) {
if (Integer.parseInt(num) >= 15) {
this.createRepair(param);
}
// 周期为季度 :当前日期-维修实际结束 <= 10 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (Integer.parseInt(num) >= 10) {
this.createRepair(param);
}
// 周期为月 :当前日期-维修实际结束 <= 7 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (Integer.parseInt(num) >= 7) {
this.createRepair(param);
}
// 周期为周 :当前日期-维修实际结束 <= 3 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"04")) {
if (Integer.parseInt(num) >= 3) {
this.createRepair(param);
}
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("repair_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("repair_plan_code"));
// 计算 当前日期 - 维修实际结束 后的天数
Date today2 = DateUtil.parse(today);
Date rep_real_end_date2 = DateUtil.parse(rep_real_end_date);
long num = (int) DateUtil.between(today2,rep_real_end_date2, DateUnit.DAY);
// 周期为年 :当前日期-维修实际结束 <= 15 天时,新增维修单
if (StrUtil.equals(maintenancecycle,"01")) {
if (num >= 15) {
this.createRepair(param);
}
// 周期为季度 :当前日期-维修实际结束 <= 10 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (num >= 10) {
this.createRepair(param);
}
// 周期为月 :当前日期-维修实际结束 <= 7 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (num >= 7) {
this.createRepair(param);
}
// 周期为周 :当前日期-维修实际结束 <= 3 天时,新增维修单
} else if (StrUtil.equals(maintenancecycle,"04")) {
if (num >= 3) {
this.createRepair(param);
}
}
}
@@ -132,7 +132,6 @@ public class AutoCreateRepair {
}
}
/**
* 创建维修单共用方法
* json: {

View File

@@ -1,5 +1,6 @@
package org.nl.wms.sb.auToTask;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
@@ -12,9 +13,12 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.modules.security.service.dto.JwtUserDto;
import org.nl.modules.system.util.CodeUtil;
import org.nl.utils.SecurityUtils;
import org.nl.wql.WQL;
import org.nl.wql.core.bean.WQLObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 自动创建保养单
* @author Liuxy
@@ -30,93 +34,88 @@ public class AutoCreateUpkeep {
WQLObject mainMstTab = WQLObject.getWQLObject("EM_BI_DeviceMaintenanceMst"); // 设备保养单主表
// 1.查询 设备档案表 中状态为正常10、闲置11、故障20、维修30、保养40状态的设备
JSONArray fileArr = fileTab.query("status in (10,11,20,30,40)").getResultJSONArray(0);
// 2.根据查询出来的记录 查询 设备保养计划表 中启用状态 = 启用的记录
for (int i = 0; i < fileArr.size(); i++) {
JSONObject json = fileArr.getJSONObject(i);
String devicerecord_id = json.getString("devicerecord_id");
JSONArray jsonPlanMstArr = WQL.getWO("EM_BI_DEVICEREPAIR002").addParam("flag","4").process().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonPlanMstArr)) {
for (int j = 0; j < jsonPlanMstArr.size(); j++) {
JSONObject jsonPlanMst = jsonPlanMstArr.getJSONObject(j);
// 2.1 判断保养计划表中:实际开始时间、实际结束时间 为空
String real_start_date = jsonPlanMst.getString("real_start_date");
String real_end_date = jsonPlanMst.getString("real_end_date");
JSONArray jsonPlanMstArr = planMstTab.query("devicerecord_id = '" + devicerecord_id + "' and is_active = '1'").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(jsonPlanMstArr)) {
for (int j = 0; j < jsonPlanMstArr.size(); j++) {
JSONObject jsonPlanMst = jsonPlanMstArr.getJSONObject(j);
// 2.1 判断保养计划表中:实际开始时间、实际结束时间 为空
String real_start_date = jsonPlanMst.getString("real_start_date");
String real_end_date = jsonPlanMst.getString("real_end_date");
// 2.2 根据源单号为保养计划id查询 保养单 --条件未删除、未审核
JSONObject jsonMainMst = mainMstTab.query("source_bill_id = '" + jsonPlanMst.getString("maint_plan_id") + "' and is_delete = '0' and invstatus != '99'").uniqueResult(0);
if (ObjectUtil.isEmpty(real_start_date) && ObjectUtil.isEmpty(real_end_date)) {
if (ObjectUtil.isEmpty(jsonMainMst)) {
// 2.3 判断周期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String plan_start_date = jsonPlanMst.getString("plan_start_date");
String today = DateUtil.today();
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("maint_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("maint_plan_code"));
param.put("maint_object",jsonPlanMst.getString("maint_object"));
// 2.2 根据源单号为保养计划id查询 保养单 --条件未删除、未审核
JSONObject jsonMainMst = mainMstTab.query("source_bill_id = '" + jsonPlanMst.getString("maint_plan_id") + "' and is_delete = '0' and invstatus != '99'").uniqueResult(0);
if (ObjectUtil.isEmpty(real_start_date) && ObjectUtil.isEmpty(real_end_date)) {
if (ObjectUtil.isEmpty(jsonMainMst)) {
// 2.3 判断周期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String plan_start_date = jsonPlanMst.getString("plan_start_date").replace("-", "");
String today = DateUtil.today().replace("-", "");
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("maint_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("maint_plan_code"));
param.put("maint_object",jsonPlanMst.getString("maint_object"));
// 计算 当前日期 - 保养计划日期 后的天数
String num = String.valueOf(NumberUtil.sub(today, plan_start_date));
// 周期为年 :当前日期-保养计划日期 <= 15 天时,新增保养单
if (StrUtil.equals(maintenancecycle,"01")) {
if (Integer.parseInt(num) >= 15) {
this.createMain(param);
}
// 周期为月 :当前日期-保养计划日期 <= 7 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (Integer.parseInt(num) >= 7) {
this.createMain(param);
}
// 周期为周 :当前日期-保养计划日期 <= 3 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (Integer.parseInt(num) >= 3) {
this.createMain(param);
}
// 计算 维修计划日期 - 当前日期 后的天数
Date today2 = DateUtil.parse(today);
Date plan_start_date2 = DateUtil.parse(plan_start_date);
long num = (int) DateUtil.between(plan_start_date2,today2, DateUnit.DAY);
// 周期为年 :当前日期-保养计划日期 <= 15 天时,新增保养单
if (StrUtil.equals(maintenancecycle,"01")) {
if (num >= 15) {
this.createMain(param);
}
// 周期为月 :当前日期-保养计划日期 <= 7 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (num >= 7) {
this.createMain(param);
}
// 周期为周 :当前日期-保养计划日期 <= 3 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (num >= 3) {
this.createMain(param);
}
}
} else {
// 3 如果保养实际开始时间 和 保养实际结束时间不为空 并且查不到对应单据
if (ObjectUtil.isEmpty(jsonMainMst)) {
// 取保养实际结束日期:用当前日期 - 保养实际结束日期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String rep_real_end_date = jsonPlanMst.getString("real_end_date").replace("-", "");
String today = DateUtil.today().replace("-", "");
}
} else {
// 3 如果保养实际开始时间 和 保养实际结束时间不为空 并且查不到对应单据
if (ObjectUtil.isEmpty(jsonMainMst)) {
// 取保养实际结束日期:用当前日期 - 保养实际结束日期
String maintenancecycle = jsonPlanMst.getString("maintenancecycle");
String rep_real_end_date = jsonPlanMst.getString("real_end_date");
String today = DateUtil.today();
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("maint_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("maint_plan_code"));
param.put("maint_object",jsonPlanMst.getString("maint_object"));
// 准备参数
JSONObject param = new JSONObject();
param.put("devicerecord_id",jsonPlanMst.getString("devicerecord_id"));
param.put("maintenancecycle","01");
param.put("plan_start_date",jsonPlanMst.getString("plan_start_date"));
param.put("source_bill_id",jsonPlanMst.getString("maint_plan_id"));
param.put("source_bill_code",jsonPlanMst.getString("maint_plan_code"));
param.put("maint_object",jsonPlanMst.getString("maint_object"));
// 计算 当前日期 - 保养实际结束 后的天数
String num = String.valueOf(NumberUtil.sub(today, rep_real_end_date));
// 周期为年 :当前日期-保养实际结束 <= 15 天时,新增保养单
if (StrUtil.equals(maintenancecycle,"01")) {
if (Integer.parseInt(num) >= 15) {
this.createMain(param);
}
// 周期为月 :当前日期-保养实际结束 <= 7 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (Integer.parseInt(num) >= 7) {
this.createMain(param);
}
// 周期为周 :当前日期-保养实际结束 <= 3 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (Integer.parseInt(num) >= 3) {
this.createMain(param);
}
// 计算 当前日期 - 维修实际结束 后的天数
Date today2 = DateUtil.parse(today);
Date rep_real_end_date2 = DateUtil.parse(rep_real_end_date);
long num = (int) DateUtil.between(today2,rep_real_end_date2, DateUnit.DAY);
// 周期为年 :当前日期-保养实际结束 <= 15 天时,新增保养单
if (StrUtil.equals(maintenancecycle,"01")) {
if (num <= 15) {
this.createMain(param);
}
// 周期为月 :当前日期-保养实际结束 <= 7 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"02")) {
if (num <= 7) {
this.createMain(param);
}
// 周期为周 :当前日期-保养实际结束 <= 3 天时,新增保养单
} else if (StrUtil.equals(maintenancecycle,"03")) {
if (num <= 3) {
this.createMain(param);
}
}
}

View File

@@ -458,6 +458,7 @@ public class DevicerepairmstServiceImpl implements DevicerepairmstService {
WQLObject reMstTab = WQLObject.getWQLObject("EM_BI_DeviceRepairMst"); // 设备维修单主表
WQLObject reDtlTab = WQLObject.getWQLObject("EM_BI_DeviceRepairDtl"); // 设备维修单明细表
String invstatus = map.getString("invstatus");
JSONArray rows = map.getJSONArray("rows");
for(int m=0; m<rows.size();m++){
JSONObject whereJson = rows.getJSONObject(m);
@@ -478,7 +479,7 @@ public class DevicerepairmstServiceImpl implements DevicerepairmstService {
throw new BadRequestException(whereJson.getString("repair_code")+"维修人或者维修时间不能为空");
}
// 3.更新维修单主表
jsonRemst.put("invstatus","07");
jsonRemst.put("invstatus",invstatus);
jsonRemst.put("confirm_optid",currentUserId);
jsonRemst.put("confirm_optname",nickName);
jsonRemst.put("confirm_time",DateUtil.now());

View File

@@ -164,7 +164,7 @@ public class DevicerepairrequestServiceImpl implements DevicerepairrequestServic
// 根据登陆人员的部门查询设备使用班组对应的运行记录 超过三条没填的报错
JSONArray numRunArr = new JSONArray();
JSONArray fileArr = fileTab.query("use_groupid = '"+jsonUser.getString("dept_id")+"' and is_delete = '0' and status not in ('90','91')").getResultJSONArray(0);
JSONArray fileArr = fileTab.query("use_groupid = '"+jsonUser.getString("dept_id")+"' and is_delete = '0' and status not in ('90','91') and device_level in ('A','B')").getResultJSONArray(0);
String yesterday = DateUtil.yesterday().toString().substring(0,10);

View File

@@ -76,4 +76,40 @@
ENDSELECT
ENDQUERY
ENDIF
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
PlanMst.*
FROM
EM_BI_DeviceRepairPlanMst PlanMst
INNER JOIN EM_BI_EquipmentFile EquipmentFile ON PlanMst.devicerecord_id = EquipmentFile.devicerecord_id
WHERE
1 = 1
AND EquipmentFile.STATUS IN ( 10, 11, 20, 30, 40 )
AND EquipmentFile.is_delete = '0'
AND PlanMst.is_active = '1'
AND PlanMst.is_delete = '0'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
PlanMst.*
FROM
EM_BI_DeviceMaintenancePlanMst PlanMst
INNER JOIN EM_BI_EquipmentFile EquipmentFile ON PlanMst.devicerecord_id = EquipmentFile.devicerecord_id
WHERE
1 = 1
AND EquipmentFile.STATUS IN ( 10, 11, 20, 30, 40 )
AND EquipmentFile.is_delete = '0'
AND PlanMst.is_active = '1'
AND PlanMst.is_delete = '0'
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -88,6 +88,9 @@ public class StatisticalReportServiceImpl implements StatisticalReportService {
JSONObject jo1 = new JSONObject();
jo1.put("1", "库存现存量");
rows.add(jo1);
JSONObject jo22 = new JSONObject();
jo22.put("1", "已开单重量");
rows.add(jo22);
JSONObject jo2 = new JSONObject();
jo2.put("1", "排产需求量");
rows.add(jo2);
@@ -129,6 +132,8 @@ public class StatisticalReportServiceImpl implements StatisticalReportService {
double canuse_num = NumberUtil.sub(now_ivt - need_qty).doubleValue();
jo1.put(material_id, String.format("%.3f", canuse_num));
//已开单重量
jo22.put(material_id, String.format("%.3f", need_qty));
//2、排产需求量(未开单的工令重量+排产未生成工令日计划重量)根据bom计算需要多少原料库存重量
JSONObject nedd_mater = WQL.getWO("statistical_report_query_01").addParam("flag", "6").addParam("material_id", material_id).addParam("begin_time", begin_time).addParam("end_time", end_time).addParam("org_id", org_id).process().uniqueResult(0);
double bom_qty = 0;