add:修改工单相关

This commit is contained in:
zhangzhiqiang
2023-05-17 17:36:40 +08:00
parent 30db992ada
commit 90469ea6ae
33 changed files with 2685 additions and 5 deletions

View File

@@ -0,0 +1,31 @@
package org.nl.wms.masterdata_manage.备份st;
/**
* // 11-扣减可用; 12-增加可用;
* // 21-减库存; 22-加库存; 23-同时加; 24-同时减
*/
public enum IvtChangeTypeEnum {
SUB_CAN_USE("扣减可用数", 11),
ADD_CAN_USE("增加用数", 12),
SUB_IVT("扣减库存", 21),
ADD_IVT("增加库存", 22),
ADD_IVT_AND_CAN_USE("同时加库存和可用", 23),
SUB_IVT_AND_CAN_USE("同时减库存和可用", 24);
private final String name;
private final int index;
IvtChangeTypeEnum(String name, int index) {
this.name = name;
this.index = index;
}
public String getName() {
return name;
}
public int getIndex() {
return index;
}
}

View File

@@ -0,0 +1,298 @@
package org.nl.wms.masterdata_manage.备份st;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.core.bean.WQLObject;
import java.math.BigDecimal;
/**
* Title: Test.java Description: 一、入库 单据审核,可用数、库存数加上。 取消审核,可用数、库存数减掉 二、出库
* 单据分配,可用数减掉 取消分配,可用数加回 单据审核,库存数减掉 取消审核,库存数加回
*
* @author ldjun
* @created 2020年7月23日 下午2:23:04
*/
public class StoreIvtServiceImpl {
/**
* @discription 添加仓储变动记录
* @author ldjun
* @created 2020年5月12日 下午12:54:42
*/
public void addIvtFlow(JSONObject disObj, IvtChangeTypeEnum changeType) {
String struct_id = disObj.getString("struct_id");
JSONObject pointObj = WQLObject.getWQLObject("sch_base_point").query("point_id ='" + struct_id + "'").uniqueResult(0);
String vehicle_code = disObj.getString("vehicle_code");
if (StrUtil.isEmpty(struct_id)) {
throw new BadRequestException("仓位标识不能为空!");
}
String change_qty = disObj.getString("change_qty");
if (StrUtil.isEmpty(change_qty)) {
change_qty = "0";
}
if (StrUtil.equals("0", change_qty)) {
throw new BadRequestException("变动量不能都为0!");
}
JSONObject param = new JSONObject();
param.put("change_id", IdUtil.getSnowflake(1, 1).nextId());
param.put("struct_id", struct_id);
param.put("struct_code",pointObj.getString("point_code"));
param.put("struct_name",pointObj.getString("point_name"));
param.put("material_id", disObj.getString("material_id"));
param.put("pcsn", disObj.getString("pcsn"));
//先默认写死,只有一个仓库
param.put("stor_id", "1528627995269533696");
param.put("change_type_scode",changeType.getIndex());
param.put("inv_id", disObj.getString("bill_id"));
param.put("bill_code", disObj.getString("bill_code"));
param.put("bill_type_scode", disObj.getString("bill_type_scode"));
param.put("qty_unit_id", disObj.getString("qty_unit_id"));
param.put("change_time", DateUtil.now());
param.put("change_qty", change_qty);
param.put("change_person_id", SecurityUtils.getCurrentUserId());
param.put("change_person_name", SecurityUtils.getCurrentNickName());
param.put("change_type", changeType.getIndex());
param.put("workprocedure_id", disObj.getString("workprocedure_id"));
param.put("is_full", disObj.getString("is_full"));
// 仓位库存变动记录表【ST_IVT_StructIvtFlow】
WQLObject ivtFlowTab = WQLObject.getWQLObject("ST_IVT_StructIvtFlow");
ivtFlowTab.insert(param);
// 根据变动记录改变仓位库存
param.put("vehicle_code", vehicle_code);
param.put("stewing_time", disObj.getString("stewing_time"));
param.put("producetask_id", disObj.getString("producetask_id"));
this.changeInventory(param, changeType);
}
/**
* @param param
* @discription 扣减可用数
* @author ldjun
* @created 2020年5月12日 上午8:52:44
*/
private void changeInventory(JSONObject param, IvtChangeTypeEnum changeType) {
WQLObject stackIvtTab = WQLObject.getWQLObject("ST_IVT_StructIvt");
String struct_id = param.getString("struct_id");
String vehicle_code = param.getString("vehicle_code");
String stewing_time = param.getString("stewing_time");
String producetask_id = param.getString("producetask_id");
String struct_name = param.getString("struct_name");
String struct_code = param.getString("struct_code");
if (StrUtil.isEmpty(struct_id)) {
throw new BadRequestException("仓位标识不能为空!");
}
String material_id = param.getString("material_id");
// 拼接查询条件参数
String whereArgs = "struct_id = '" + struct_id + "' and material_id = '" + material_id + "'";
JSONObject stackIvtObj = stackIvtTab.query(whereArgs).uniqueResult(0);
// 需变动的数量
String change_qty = param.getString("change_qty");
// 变动类型
// 11-扣减可用; 12-增加可用; 13-刷新可用
// 21-减库存; 22-加库存; 23-同时加; 24-同时减
// 31-加待入; 32-减待入 33减库存可用数可以为0 34同时减(库存和数量) 考虑负数 35 加库存 考虑负数
if (stackIvtObj == null) {// 说明该货位上还没有该物料,直接插入记录即可
JSONObject json = new JSONObject();
json.put("stockrecord_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("struct_id", param.getString("struct_id"));
json.put("struct_name", param.getString("struct_name"));
json.put("material_id", param.getString("material_id"));
json.put("pcsn", param.getString("pcsn"));
json.put("qty_unit_id", param.getString("qty_unit_id"));
json.put("instorage_time", DateUtil.now());
json.put("canuse_qty", "0");
json.put("frozen_qty", "0");
json.put("ivt_qty", "0");
json.put("warehousing_qty", "0");
json.put("qc_qty", "0");
// 11-扣减可用; 12-增加可用;
// 21-减库存; 22-加库存; 23-同时加(可用和库存); 24-同时减(可用和库存)
// 31-加待入; 32-减待入
switch (changeType.getIndex()) {
case 11: // 扣减可用重量和数量
break;
case 12:
break;
case 13:
break;
case 21:
break;
case 22:
json.put("ivt_qty", change_qty);
break;
case 23:
json.put("ivt_qty", change_qty);
json.put("canuse_qty", change_qty);
break;
case 24:// 同时减
// 语句
break;
case 31:// 加待入
// 语句
break;
case 32:// 减待入
// 语句
break;
default: // 可选
throw new BadRequestException("变动类型不正确!");
}
json.put("vehicle_code", vehicle_code);
json.put("stewing_time", stewing_time);
json.put("producetask_id", producetask_id);
json.put("struct_code", struct_code);
json.put("struct_name", struct_name);
json.put("barcode", param.getString("barcode"));
json.put("workprocedure_id", param.getString("workprocedure_id"));
String is_full = param.getString("is_full");
if (StrUtil.isEmpty(is_full)) {
is_full = "1";
}
json.put("is_full", is_full);
stackIvtTab.insert(json);
}
// 对应的货位上有物料,需判断数量重量相关字段是否符合实际逻辑,符合时更新相应记录
if (stackIvtObj != null) {
// 变动前可用数量
String before_canuse_qty = stackIvtObj.getString("canuse_qty");
// 变动前冻结数量
String before_frozen_qty = stackIvtObj.getString("frozen_qty");
// 变动前库存数量
String before_ivt_qty = stackIvtObj.getString("ivt_qty");
// 变动前待入数量
String before_warehousing_qty = stackIvtObj.getString("warehousing_qty");
// 变动前待检数量
String before_qc_qty = stackIvtObj.getString("qc_qty");
// 变动后可用数量
BigDecimal after_canuse_qty = new BigDecimal(0);
// 变动后冻结数量
BigDecimal after_frozen_qty = new BigDecimal(0);
// 变动后库存数量
BigDecimal after_ivt_qty = new BigDecimal(0);
// 变动后待入数量
BigDecimal after_warehousing_qty = new BigDecimal(0);
// 变动后待检数量
BigDecimal after_qc_qty = new BigDecimal(0);
// 判断是否减为0
boolean is_sub0 = false;
switch (changeType.getIndex()) {
case 11: // 扣减可用重量和数量
// 变动后可用数量
after_canuse_qty = NumberUtil.sub(before_canuse_qty, change_qty);
if (after_canuse_qty.doubleValue() < 0) {
throw new BadRequestException("可用数量不足,无法操作!");
}
stackIvtObj.put("canuse_qty", after_canuse_qty);
break;
case 12:// 12-增加可用重量和数量;
// 变动后可用数量
after_canuse_qty = NumberUtil.add(before_canuse_qty, change_qty);
stackIvtObj.put("canuse_qty", after_canuse_qty);
break;
case 13:// 刷新可用数量和重量
// 语句
break;
case 21:// 减库存
// 变动后库存数量
after_ivt_qty = NumberUtil.sub(before_ivt_qty, change_qty);
if (after_ivt_qty.doubleValue() < 0) {
throw new BadRequestException("可用数量不足,无法操作!");
}
if (after_ivt_qty.doubleValue() <= 0) {
is_sub0 = true;
}
stackIvtObj.put("ivt_qty", after_ivt_qty);
break;
case 33:// 减库存
after_ivt_qty = NumberUtil.sub(before_ivt_qty, change_qty);
if (after_ivt_qty.doubleValue() < 0) {
throw new BadRequestException("库存数量不足,无法操作!");
}
if (after_ivt_qty.doubleValue() <= 0) {
is_sub0 = true;
}
stackIvtObj.put("ivt_qty", after_ivt_qty);
break;
case 22:// 加库存重量和数量
// 变动后库存数量
after_ivt_qty = NumberUtil.add(before_ivt_qty, change_qty);
stackIvtObj.put("ivt_qty", after_ivt_qty);
break;
case 23:// 同时加(可用和库存)
// 变动后可用数量
after_canuse_qty = NumberUtil.add(before_canuse_qty, change_qty);
stackIvtObj.put("canuse_qty", after_canuse_qty);
// 变动后库存数量
after_ivt_qty = NumberUtil.add(before_ivt_qty, change_qty);
stackIvtObj.put("ivt_qty", after_ivt_qty);
// 语句
break;
case 24:// 同时减(库存和数量)
// 变动后可用数量
after_canuse_qty = NumberUtil.sub(before_canuse_qty, change_qty);
if (after_canuse_qty.doubleValue() < 0) {
throw new BadRequestException("可用数量不足,无法操作!");
}
stackIvtObj.put("canuse_qty", after_canuse_qty);
// 变动后库存数量
after_ivt_qty = NumberUtil.sub(before_ivt_qty, change_qty);
if (after_ivt_qty.doubleValue() < 0) {
throw new BadRequestException("可用数量不足,无法操作!");
}
if (after_ivt_qty.doubleValue() <= 0) {
is_sub0 = true;
}
stackIvtObj.put("ivt_qty", after_ivt_qty);
// 语句
break;
case 31:// 加待入
// 语句
break;
case 32:// 减待入
// 语句
break;
default: // 可选
throw new BadRequestException("变动类型不正确!");
}
// 库存减为0删除该记录
if (is_sub0) {
// 出完货以后更新载具号为空
JSONObject structObj = new JSONObject();
structObj.put("storagevehicle_code", "");
structObj.put("struct_id", stackIvtObj.getString("struct_id"));
stackIvtTab.delete(whereArgs);
} else {//更新
stackIvtObj.put("vehicle_code", vehicle_code);
stackIvtTab.update(stackIvtObj, whereArgs);
}
}
}
}

View File

@@ -0,0 +1,67 @@
package org.nl.wms.masterdata_manage.备份st.service;
import org.nl.wms.masterdata_manage.备份st.service.dto.MaterialsafeivtDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @description 服务接口
* @author zhouz
* @date 2021-12-10
**/
public interface MaterialsafeivtService {
/**
* 查询数据分页
* @param whereJson 条件
* @param page 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(Map whereJson, Pageable page);
/**
* 查询所有数据不分页
* @param whereJson 条件参数
* @return List<MaterialsafeivtDto>
*/
List<MaterialsafeivtDto> queryAll(Map whereJson);
/**
* 根据ID查询
* @param material_id ID
* @return Materialsafeivt
*/
MaterialsafeivtDto findById(Long material_id);
/**
* 根据编码查询
* @param code code
* @return Materialsafeivt
*/
MaterialsafeivtDto findByCode(String code);
/**
* 创建
* @param dto /
*/
void create(MaterialsafeivtDto dto);
/**
* 编辑
* @param dto /
*/
void update(MaterialsafeivtDto dto);
/**
* 多选删除
* @param ids /
*/
void deleteAll(Long[] ids);
void insertSafe(Map whereJson);
}

View File

@@ -0,0 +1,69 @@
package org.nl.wms.masterdata_manage.备份st.service;
import org.nl.wms.masterdata_manage.备份st.service.dto.StructrelamaterialDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @description 服务接口
* @author zhouz
* @date 2021-12-09
**/
public interface StructrelamaterialService {
/**
* 查询数据分页
* @param whereJson 条件
* @param page 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(Map whereJson, Pageable page);
/**
* 查询所有数据不分页
* @param whereJson 条件参数
* @return List<StructrelamaterialDto>
*/
List<StructrelamaterialDto> queryAll(Map whereJson);
/**
* 根据ID查询
* @param material_type_id ID
* @return Structrelamaterial
*/
StructrelamaterialDto findById(Long material_type_id);
/**
* 根据编码查询
* @param code code
* @return Structrelamaterial
*/
StructrelamaterialDto findByCode(String code);
/**
* 创建
* @param dto /
*/
void create(StructrelamaterialDto dto);
/**
* 编辑
* @param dto /
*/
void update(StructrelamaterialDto dto);
/**
* 多选删除
* @param ids /
*/
void deleteAll(Long[] ids);
void insertSet(Map whereJson);
void delSet(Map whereJson);
}

View File

@@ -0,0 +1,73 @@
package org.nl.wms.masterdata_manage.备份st.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.masterdata_manage.备份st.service.dto.StructrelavehicletypeDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @description 服务接口
* @author geng by
* @date 2022-04-27
**/
public interface StructrelavehicletypeService {
/**
* 查询数据分页
* @param whereJson 条件
* @param page 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAll(Map whereJson, Pageable page);
/**
* 查询所有数据不分页
* @param whereJson 条件参数
* @return List<StructrelavehicletypeDto>
*/
List<StructrelavehicletypeDto> queryAll(Map whereJson);
/**
* 根据ID查询
* @param relation_id ID
* @return Structrelavehicletype
*/
StructrelavehicletypeDto findById(String relation_id);
/**
* 根据编码查询
* @param code code
* @return Structrelavehicletype
*/
StructrelavehicletypeDto findByCode(String code);
/**
* 创建
* @param param /
*/
void create(JSONObject param);
/**
* 编辑
* @param param /
*/
void update(JSONObject param);
/**
* 多选删除
* @param ids /
*/
void deleteAll(String[] ids);
/**
* 查询仓位
* @return
*/
JSONArray getStruct();
}

View File

@@ -0,0 +1,40 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description /
* @author zhouz
* @date 2021-12-10
**/
@Data
public class MaterialsafeivtDto implements Serializable {
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long stor_id;
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long material_id;
private BigDecimal safe_ivt_down;
private BigDecimal safe_ivt_up;
private Long qty_unit_id;
private String qty_unit_name;
private Long set_id;
private String set_name;
private String set_time;
}

View File

@@ -0,0 +1,116 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description /
* @author zhouz
* @date 2021-12-09
**/
@Data
public class SectattrDto implements Serializable {
/** 库区标识 */
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long sect_id;
/** 库区编码 */
private String sect_code;
/** 库区名称 */
private String sect_name;
/** 库区简称 */
private String simple_name;
/** 库区类型 */
private String sect_type_attr;
/** 仓库标识 */
private Long stor_id;
/** 仓库名称 */
private String stor_name;
/** 仓库类型 */
private String stor_type;
/** 容量 */
private BigDecimal capacity;
/** 宽度 */
private BigDecimal width;
/** 高度 */
private BigDecimal height;
/** 深度 */
private BigDecimal zdepth;
/** 起始X坐标 */
private BigDecimal xqty;
/** 起始Y坐标 */
private BigDecimal yqty;
/** 起始Z坐标 */
private BigDecimal zqty;
/** 负责人 */
private String sect_manager_name;
/** 负责人电话 */
private String mobile_no;
/** 备注 */
private String remark;
/** 创建人 */
private String create_id;
/** 创建人姓名 */
private String create_name;
/** 创建时间 */
private String create_time;
/** 修改人 */
private String update_id;
/** 修改人姓名 */
private String update_name;
/** 修改时间 */
private String update_time;
/** 是否删除 */
private String is_delete;
/** 背景色 */
private String back_ground_color;
/** 前景色 */
private String front_ground_color;
/** 背景图片 */
private String back_ground_pic;
/** 字体显示方向 */
private String font_direction_scode;
/** 所在楼层 */
private BigDecimal floor_no;
/** 是否启用 */
private String is_used;
/** 外部标识 */
private String ext_id;
}

View File

@@ -0,0 +1,107 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description /
* @author zhouz
* @date 2021-12-08
**/
@Data
public class StorattrDto implements Serializable {
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long stor_id;
/** 仓库编码 */
private String stor_code;
/** 仓库名称 */
private String stor_name;
/** 简称 */
private String simple_name;
/** 容量 */
private BigDecimal stor_capacity;
/** 总面积(㎡) */
private BigDecimal total_area;
/** 仓库性质 */
private String stor_type_scode;
private String is_virtualstore;
private String is_semi_finished;
private String is_materialstore;
private String is_productstore;
private String is_reversed;
private String is_mvout_auto_cfm;
private String is_mvin_auto_cfm;
private String area;
/** 地址 */
private String storea_ddress;
/** 负责人 */
private String principal;
/** 联系电话 */
private String office_phone;
private String mobile_no;
/** 备注 */
private String remark;
private BigDecimal order_index;
private String whstate_scode;
/** 是否启用 */
private String is_used;
private String base_class_id;
private String create_id;
private String create_name;
private String create_time;
private String update_id;
private String update_name;
private String update_time;
private Long sysownerid;
private Long sysdeptid;
private Long syscompanyid;
private String is_delete;
private String ext_id;
private String depart_name;
private String company_name;
private String is_attachment;
}

View File

@@ -0,0 +1,146 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description /
* @author zhouz
* @date 2021-12-09
**/
@Data
public class StructattrDto implements Serializable {
/** 仓位标识 */
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long struct_id;
/** 仓位编码 */
private String struct_code;
/** 仓位名称 */
private String struct_name;
/** 仓位简称 */
private String simple_name;
/** 库区标识 */
private Long sect_id;
/** 库区编码 */
private String sect_code;
/** 库区名称 */
private String sect_name;
/** 仓库标识 */
private Long stor_id;
/** 仓库编码 */
private String stor_code;
/** 仓库名称 */
private String stor_name;
/** 仓库类型 */
private String stor_type;
/** 容量 */
private BigDecimal capacity;
/** 宽度 */
private BigDecimal width;
/** 高度 */
private BigDecimal height;
/** 深度 */
private BigDecimal zdepth;
/** 承受重量 */
private BigDecimal weight;
/** 起始X坐标 */
private BigDecimal xqty;
/** 起始Y坐标 */
private BigDecimal yqty;
/** 起始Z坐标 */
private BigDecimal zqty;
/** 是否临时仓位 */
private String is_tempstruct;
/** 创建人 */
private String create_id;
/** 创建人姓名 */
private String create_name;
/** 创建时间 */
private String create_time;
/** 修改人 */
private String update_id;
/** 修改人姓名 */
private String update_name;
/** 修改时间 */
private String update_time;
/** 是否删除 */
private String is_delete;
/** 背景色 */
private String back_ground_color;
/** 前景色 */
private String front_ground_color;
/** 背景图片 */
private String back_ground_pic;
/** 字体显示方向 */
private String font_direction_scode;
/** 是否启用 */
private String is_used;
/** 是否判断高度 */
private String is_zdepth;
/** 存储载具标识 */
private Long storagevehicle_id;
/** 存储载具号 */
private String storagevehicle_code;
/** 存储载具类型 */
private String storagevehicle_type;
/** 是否空载具 */
private String is_emptyvehicle;
/** 载具数量 */
private BigDecimal storagevehicle_qty;
/** 锁定类型 */
private String lock_type;
/** 物料高度类型 */
private String material_height_type;
/** 外部标识 */
private String ext_id;
/** 备注 */
private String remark;
}

View File

@@ -0,0 +1,66 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description /
* @author geng by
* @date 2022-06-02
**/
@Data
public class StructivtDto implements Serializable {
/** 库存记录标识 */
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long stockrecord_id;
/** 仓位标识 */
private Long struct_id;
/** 仓位编码 */
private String struct_code;
/** 仓位名称 */
private String struct_name;
/** 工序标识 */
private Long workprocedure_id;
/** 物料标识 */
private Long material_id;
/** 品质类型 */
private String quality_scode;
/** 批次 */
private String pcsn;
/** 可用数 */
private BigDecimal canuse_qty;
/** 冻结数 */
private BigDecimal frozen_qty;
/** 库存数 */
private BigDecimal ivt_qty;
/** 待入数 */
private BigDecimal warehousing_qty;
/** 计量单位标识 */
private Long qty_unit_id;
/** 入库时间 */
private Date instorage_time;
/** 销售单标识 */
private Long sale_id;
}

View File

@@ -0,0 +1,32 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;
/**
* @description /
* @author zhouz
* @date 2021-12-09
**/
@Data
public class StructrelamaterialDto implements Serializable {
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long sect_id;
/** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class)
private Long material_type_id;
private Long set_id;
private String set_name;
private Date set_time;
}

View File

@@ -0,0 +1,64 @@
package org.nl.wms.masterdata_manage.备份st.service.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author geng by
* @description /
* @date 2022-04-27
**/
@Data
public class StructrelavehicletypeDto implements Serializable {
/**
* 关系标识
*/
private String relation_id;
/**
* 仓位标识
*/
private String struct_id;
/**
* 载具类型
*/
private String vehicle_type;
/**
* 创建人
*/
private String create_id;
/**
* 创建人
*/
private String create_name;
/**
* 创建时间
*/
private String create_time;
/**
* 修改人
*/
private String update_id;
/**
* 修改人
*/
private String update_name;
/**
* 修改时间
*/
private String update_time;
/**
* 是否已删除
*/
private String is_delete;
}

View File

@@ -0,0 +1,157 @@
package org.nl.wms.masterdata_manage.备份st.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
import org.nl.wms.masterdata_manage.备份st.service.MaterialsafeivtService;
import org.nl.wms.masterdata_manage.备份st.service.dto.MaterialsafeivtDto;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author zhouz
* @description 服务实现
* @date 2021-12-10
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class MaterialsafeivtServiceImpl implements MaterialsafeivtService {
private final ClassstandardService classstandardService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String search = (String) whereJson.get("search");
String class_idStr = (String) whereJson.get("class_idStr");
HashMap<String, String> map = new HashMap<>();
if (!StrUtil.isEmpty(search)) {
//处理转义字符
if (search.contains("\\")) search = search.replace("\\", "\\\\\\");
map.put("search", "%" + search + "%");
}
String material_type_id = (String) whereJson.get("material_type_id");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
map.put("flag", "1");
map.put("stor_id", MapUtil.getStr(whereJson, "stor_id"));
JSONObject jo = WQL.getWO("QST_IVT_MATERIALSAFE").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "set_time desc");
return jo;
}
@Override
public void insertSafe(Map whereJson) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String stor_id = (String) whereJson.get("stor_id");
ArrayList<HashMap> rows = (ArrayList<HashMap>) whereJson.get("rows");
for (int i = 0; i < rows.size(); i++) {
HashMap<String, String> row = rows.get(i);
WQLObject.getWQLObject("ST_IVT_MaterialSafeIvt").delete("stor_id = '" + stor_id + "' AND material_id = '" + row.get("material_id") + "'");
JSONObject jo = new JSONObject();
jo.put("stor_id", stor_id);
jo.put("safe_ivt_down", row.get("safe_ivt_down"));
jo.put("material_id", row.get("material_id"));
jo.put("safe_ivt_up", "999999");
jo.put("qty_unit_id", row.get("qty_unit_id"));
jo.put("qty_unit_name", row.get("qty_unit_name"));
jo.put("set_id", currentUserId + "");
jo.put("set_name", nickName);
jo.put("set_time", DateUtil.now());
WQLObject.getWQLObject("ST_IVT_MaterialSafeIvt").insert(jo);
}
}
@Override
public List<MaterialsafeivtDto> queryAll(Map whereJson) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_materialsafeivt");
JSONArray arr = wo.query().getResultJSONArray(0);
List<MaterialsafeivtDto> list = arr.toJavaList(MaterialsafeivtDto.class);
return list;
}
@Override
public MaterialsafeivtDto findById(Long material_id) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_materialsafeivt");
JSONObject json = wo.query("material_id =" + material_id + "").uniqueResult(0);
final MaterialsafeivtDto obj = json.toJavaObject(MaterialsafeivtDto.class);
return obj;
}
@Override
public MaterialsafeivtDto findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_materialsafeivt");
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
final MaterialsafeivtDto obj = json.toJavaObject(MaterialsafeivtDto.class);
return obj;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(MaterialsafeivtDto dto) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_materialsafeivt");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.insert(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(MaterialsafeivtDto dto) {
MaterialsafeivtDto entity = this.findById(dto.getMaterial_id());
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
WQLObject wo = WQLObject.getWQLObject("st_ivt_materialsafeivt");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(Long[] ids) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
WQLObject wo = WQLObject.getWQLObject("st_ivt_materialsafeivt");
for (Long material_id : ids) {
JSONObject param = new JSONObject();
param.put("material_id", String.valueOf(material_id));
param.put("is_delete", "1");
param.put("update_optid", currentUserId);
param.put("update_optname", nickName);
param.put("update_time", DateUtil.now());
wo.update(param);
}
}
}

View File

@@ -0,0 +1,177 @@
package org.nl.wms.masterdata_manage.备份st.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
import org.nl.wms.masterdata_manage.备份st.service.StructrelamaterialService;
import org.nl.wms.masterdata_manage.备份st.service.dto.StructrelamaterialDto;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Date;
/**
* @author zhouz
* @description 服务实现
* @date 2021-12-09
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class StructrelamaterialServiceImpl implements StructrelamaterialService {
private final ClassstandardService classstandardService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String search = (String) whereJson.get("search");
HashMap<String, String> map = new HashMap<>();
if (!StrUtil.isEmpty(search)) {
map.put("search", "%" + search + "%");
}
map.put("flag", "1");
map.put("stor_id", (String) whereJson.get("stor_id"));
map.put("sect_id", (String) whereJson.get("sect_id"));
String material_type_id = (String) whereJson.get("material_type_id");
String class_idStr = (String) whereJson.get("class_idStr");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
JSONObject jo = WQL.getWO("QST_IVT_MATERIALSET").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "set_time desc");
return jo;
}
@Override
public List<StructrelamaterialDto> queryAll(Map whereJson) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelamaterial");
JSONArray arr = wo.query().getResultJSONArray(0);
List<StructrelamaterialDto> list = arr.toJavaList(StructrelamaterialDto.class);
return list;
}
@Override
public StructrelamaterialDto findById(Long material_type_id) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelamaterial");
JSONObject json = wo.query("material_type_id =" + material_type_id + "").uniqueResult(0);
final StructrelamaterialDto obj = json.toJavaObject(StructrelamaterialDto.class);
return obj;
}
@Override
public StructrelamaterialDto findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelamaterial");
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
final StructrelamaterialDto obj = json.toJavaObject(StructrelamaterialDto.class);
return obj;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(StructrelamaterialDto dto) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
dto.setMaterial_type_id(IdUtil.getSnowflake(1, 1).nextId());
dto.setSet_name(nickName);
dto.setSet_time(new Date());
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelamaterial");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.insert(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(StructrelamaterialDto dto) {
StructrelamaterialDto entity = this.findById(dto.getMaterial_type_id());
if (entity == null) {
throw new BadRequestException("被删除或无权限,操作失败!");
}
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelamaterial");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(Long[] ids) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelamaterial");
for (Long material_type_id : ids) {
JSONObject param = new JSONObject();
param.put("material_type_id", String.valueOf(material_type_id));
param.put("is_delete", "1");
param.put("update_optid", currentUserId);
param.put("update_optname", nickName);
param.put("update_time", DateUtil.now());
wo.update(param);
}
}
@Override
public void insertSet(Map whereJson) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
WQLObject mater = WQLObject.getWQLObject("ST_IVT_StructRelaMaterial");
String sect_id = (String) whereJson.get("sect_id");
ArrayList<HashMap> class_rows = (ArrayList<HashMap>) whereJson.get("class_rows");
for (int i = 0; i < class_rows.size(); i++) {
HashMap<String, String> class_row = class_rows.get(i);
JSONObject material_set = mater.query("sect_id = '" + sect_id + "' AND material_type_id = '" + class_row.get("class_id") + "'")
.uniqueResult(0);
if (material_set != null) {
HashMap<String, String> update_map = new HashMap<>();
update_map.put("set_id", currentUserId + "");
update_map.put("set_name", nickName);
update_map.put("set_time", DateUtil.now());
mater.update(update_map, "sect_id = '" + sect_id + "' AND material_type_id = '" + class_row.get("class_id") + "'");
} else {
JSONObject jo = new JSONObject();
jo.put("sect_id", sect_id);
jo.put("material_type_id", class_row.get("class_id"));
jo.put("set_id", currentUserId + "");
jo.put("set_name", nickName);
jo.put("set_time", DateUtil.now());
mater.insert(jo);
}
}
}
@Override
public void delSet(Map whereJson) {
String sect_id = (String) whereJson.get("sect_id");
String material_type_id = (String) whereJson.get("material_type_id");
WQLObject.getWQLObject("ST_IVT_StructRelaMaterial").delete("sect_id = '" + sect_id + "' AND material_type_id = '" + material_type_id + "'");
}
}

View File

@@ -0,0 +1,187 @@
package org.nl.wms.masterdata_manage.备份st.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.masterdata_manage.备份st.service.StructrelavehicletypeService;
import org.nl.wms.masterdata_manage.备份st.service.dto.StructrelavehicletypeDto;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* @author geng by
* @description 服务实现
* @date 2022-04-27
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class StructrelavehicletypeServiceImpl implements StructrelavehicletypeService {
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String search = MapUtil.getStr(whereJson, "search");
JSONObject map = new JSONObject();
map.put("flag", "2");
if (ObjectUtil.isNotEmpty(search)) {
map.put("search", "%" + search + "%");
}
JSONObject json = WQL.getWO("ST_Structrelavehicletype_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "view_vehicleType.struct_code");
WQLObject wo = WQLObject.getWQLObject("sys_dict_detail");
JSONArray content = json.getJSONArray("content");
JSONArray newContent = new JSONArray();
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.getJSONObject(i);
String vehicle_type = jsonObject.getString("vehicle_type");
String[] vehicle_types = new String[0];
if (StrUtil.isNotEmpty(vehicle_type)){
vehicle_types = vehicle_type.split(",");
}
String typeNames = "";
if (vehicle_types.length > 0){
for (int j = 0; j < vehicle_types.length; j++) {
JSONObject type = wo.query("value = '" + vehicle_types[j] + "' and name = 'storagevehicle_type'").uniqueResult(0);
String typeName = type.getString("label");
if (vehicle_types.length - 1 != j) {
typeNames = typeNames + typeName + ",";
}
if (vehicle_types.length - 1 == j) {
typeNames = typeNames + typeName;
}
}
}
jsonObject.put("is_edit","0");
jsonObject.put("vehicle_type_name", typeNames);
jsonObject.put("vehicle_type", vehicle_types);
newContent.add(jsonObject);
}
json.put("content", newContent);
return json;
}
@Override
public List<StructrelavehicletypeDto> queryAll(Map whereJson) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelavehicletype");
JSONArray arr = wo.query().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(StructrelavehicletypeDto.class);
return null;
}
@Override
public StructrelavehicletypeDto findById(String relation_id) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelavehicletype");
JSONObject json = wo.query("relation_id = '" + relation_id + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)) {
return json.toJavaObject(StructrelavehicletypeDto.class);
}
return null;
}
@Override
public StructrelavehicletypeDto findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelavehicletype");
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)) {
return json.toJavaObject(StructrelavehicletypeDto.class);
}
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(JSONObject param) {
String struct_id = param.getString("struct_id");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelavehicletype");
JSONArray vehicle_types = param.getJSONArray("vehicle_type");
for (int i = 0; i < vehicle_types.size(); i++) {
param.put("relation_id", String.valueOf(IdUtil.getSnowflake(1, 1).nextId()));
param.put("struct_id", struct_id);
param.put("vehicle_type", vehicle_types.get(i));
param.put("update_optid", currentUserId);
param.put("update_optname", nickName);
param.put("update_time", DateUtil.now());
param.put("create_id", currentUserId);
param.put("create_name", nickName);
param.put("create_time", DateUtil.now());
wo.insert(param);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(JSONObject param) {
String struct_id = param.getString("struct_id");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelavehicletype");
wo.delete("struct_id = '" + struct_id + "'");
JSONArray vehicle_types = param.getJSONArray("vehicle_type");
if (vehicle_types.size() == 0){
param.put("relation_id", String.valueOf(IdUtil.getSnowflake(1, 1).nextId()));
param.put("struct_id", struct_id);
param.put("vehicle_type", null);
param.put("update_optid", currentUserId);
param.put("update_optname", nickName);
param.put("update_time", DateUtil.now());
param.put("create_id", currentUserId);
param.put("create_name", nickName);
param.put("create_time", DateUtil.now());
wo.insert(param);
return;
}
for (int i = 0; i < vehicle_types.size(); i++) {
param.put("relation_id", String.valueOf(IdUtil.getSnowflake(1, 1).nextId()));
param.put("struct_id", struct_id);
param.put("vehicle_type", vehicle_types.get(i));
param.put("update_optid", currentUserId);
param.put("update_optname", nickName);
param.put("update_time", DateUtil.now());
param.put("create_id", currentUserId);
param.put("create_name", nickName);
param.put("create_time", DateUtil.now());
wo.insert(param);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(String[] ids) {
WQLObject wo = WQLObject.getWQLObject("st_ivt_structrelavehicletype");
for (String struct_id : ids) {
wo.delete("struct_id = '" + struct_id + "'");
}
}
@Override
public JSONArray getStruct() {
JSONObject map = new JSONObject();
map.put("flag", "1");
JSONArray json = WQL.getWO("ST_Structrelavehicletype_01").addParamMap(map).process().getResultJSONArray(0);
return json;
}
}

View File

@@ -0,0 +1,226 @@
[交易说明]
交易名: 将海亮的物料导入mysql
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.material_code TYPEAS s_string
输入.processroute_uuid TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
QUERY
SELECT
*
FROM
MD_PB_BaseData_ClassInfo classinfot
LEFT JOIN MD_PB_BaseData_ClassStandard standard ON classinfot.class_uuid = standard.class_uuid
LEFT JOIN MD_ME_MaterialBase material ON material.material_uuid = classinfot.base_data_uuid
left join MD_ME_MaterialExt ext on ext.material_uuid = material.material_uuid
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
*
FROM
MD_PB_BaseData_ClassStandard class
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
*
FROM
ST_IVT_BSREALSTORATTR
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
*
FROM
ST_IVT_SECTATTR
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "5"
QUERY
SELECT
*
FROM
ST_IVT_STRUCTATTR
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "6"
QUERY
SELECT
*
FROM
ST_IVT_StorageVehicleInfo
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "7"
QUERY
SELECT
*
FROM
wdk_sysparam
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "8"
QUERY
SELECT
*
FROM
IF_CacheLine_Position
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "9"
QUERY
SELECT
*
FROM
st_cacheline_position
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "10"
QUERY
SELECT
mb.*,
class.class_code,
class.class_name
FROM
md_me_materialbase mb
LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id
WHERE
mb.is_delete = '0'
AND 1 = 1
AND class.class_id IN ( '1528555445302726656', '1528555443906023424', '1528555445080428544' )
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "11"
QUERY
SELECT
mb.*,
class.class_code,
class.class_name
FROM
md_me_materialbase mb
LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id
WHERE
mb.is_delete = '0'
AND 1 = 1
AND class.class_id IN ( '1528555444031852544', '1528555444778438656', '1528555444291899392' )
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "12"
QUERY
SELECT
*
FROM
PDM_BI_WorkshopMaterialCorr
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "13"
QUERY
SELECT
*
FROM
PDM_BI_SemiMaterialCorr
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "14"
QUERY
SELECT
*
FROM
PDM_BI_WorkshopMaterialCorr corr
LEFT JOIN PF_PB_SysDicInfo sys ON sys.sysdic_code = corr.materialprocess_series
AND sys.sysdic_type = 'IF_WCS_DEVICESERIES'
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "15"
QUERY
SELECT
*
FROM
PDM_BI_ProduceProcessRoute route
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "16"
QUERY
SELECT
*
FROM
PDM_BI_ProduceProcessRoute route
LEFT JOIN PDM_BI_ProduceProcessRouteDtl dtl ON route.processroute_uuid = dtl.processroute_uuid
route.processroute_uuid = 输入.processroute_uuid
order by workprocedure_number
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -0,0 +1,85 @@
[交易说明]
交易名: 基础点位分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.search TYPEAS s_string
输入.classIds TYPEAS f_string
输入.stor_id TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
(case when stor.stor_id is null THEN '' else stor.stor_id end) AS stor_id,
(case when stor.stor_code is null then 'yclk01' else stor.stor_code end) stor_code,
(case when stor.stor_name is null then '原料库' else stor.stor_name end) stor_name,
(case when safe.safe_ivt_down is null then 0 else safe.safe_ivt_down end) safe_ivt_down,
mb.material_code,
mb.material_name,
mb.base_unit_id,
mb.material_id,
mb.base_unit_id AS qty_unit_id,
safe.set_name,
safe.set_time,
unit.unit_name AS qty_unit_name
FROM
md_me_materialbase mb
LEFT JOIN st_ivt_materialsafeivt safe ON safe.material_id = mb.material_id
LEFT JOIN st_ivt_bsrealstorattr stor ON stor.stor_id = safe.stor_id
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = mb.base_unit_id
LEFT JOIN md_pb_classstandard class ON class.class_id =mb.material_type_id
WHERE
1=1
OPTION 输入.classIds <> ""
mb.material_type_id in 输入.classIds
ENDOPTION
OPTION 输入.stor_id <> ""
stor.stor_id = 输入.stor_id
ENDOPTION
OPTION 输入.search <> ""
(
mb.material_code like 输入.search
OR
mb.material_name like 输入.search
)
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -0,0 +1,78 @@
[交易说明]
交易名: 基础点位分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.search TYPEAS s_string
输入.stor_id TYPEAS s_string
输入.sect_id TYPEAS s_string
输入.classIds TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
se.sect_code,
se.sect_name,
class.class_code,
class.class_name,
sm.*
FROM
st_ivt_structrelamaterial sm
INNER JOIN st_ivt_sectattr se ON se.sect_id = sm.sect_id
INNER JOIN md_pb_classstandard class ON class.class_id = sm.material_type_id
OPTION 输入.search <> ""
(
class.class_code like 输入.search
OR
class.class_name like 输入.search
)
ENDOPTION
OPTION 输入.stor_id <> ""
se.stor_id = 输入.stor_id
ENDOPTION
OPTION 输入.sect_id <> ""
se.sect_id = 输入.sect_id
ENDOPTION
OPTION 输入.classIds <> ""
class.class_id in 输入.classIds
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -0,0 +1,86 @@
[交易说明]
交易名: 仓位载具类型查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.search TYPEAS s_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
*
FROM
st_ivt_structattr
WHERE
is_delete = '0' and struct_id not in(
select distinct struct_id from st_ivt_structrelavehicletype
)
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
PAGEQUERY
SELECT
*
FROM
(
SELECT
any_value ( vehicleType.struct_id ) AS struct_id,
any_value ( vehicleType.create_id ) AS create_id,
any_value ( vehicleType.create_name ) AS create_name,
any_value ( vehicleType.create_time ) AS create_time,
any_value ( vehicleType.update_optname ) AS update_optname,
any_value ( struct.struct_code ) AS struct_code,
any_value ( vehicleType.update_time ) AS update_time,
any_value ( struct.struct_name ) AS struct_name,
any_value ( GROUP_CONCAT( vehicleType.vehicle_type ) ) AS vehicle_type
FROM
ST_IVT_StructRelaVehicleType vehicleType
LEFT JOIN st_ivt_structattr struct ON vehicleType.struct_id = struct.struct_id
GROUP BY
vehicleType.struct_id
) AS view_vehicleType
WHERE
1 = 1
OPTION 输入.search <> ""
(view_vehicleType.struct_code like 输入.search or
view_vehicleType.struct_name like 输入.search)
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF

View File

@@ -339,7 +339,6 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
WQLObject.getWQLObject("pdm_produce_workorder").update(MapOf.of("workorder_id", workorder_id, "workorder_status", WorkerOrderEnum.SEND.getCode(), "update_id", SecurityUtils.getCurrentUserId(), "update_name", SecurityUtils.getCurrentNickName(), "update_time", DateUtil.now()));
Map<String,Object> resp = wmsToAcsService.order(array);
//TODO:记录表记录操作
return RestBusinessTemplate.execute(() -> resp);
}

View File

@@ -0,0 +1,21 @@
package org.nl.wms.product_manage;
import lombok.AllArgsConstructor;
import lombok.Getter;
/*
* @author ZZQ
* @Date 2023/5/17 12:26
*/
@AllArgsConstructor
@Getter
public enum ReportRecordStatus {
CREATE("1","生成"),
REPORT("2","报工"),
FINISH("3","审核完成");
private String code;
private String desc;
}

View File

@@ -11,6 +11,7 @@ import org.nl.common.utils.api.ResultCode;
import org.nl.modules.common.exception.BizCoreException;
import org.nl.wms.mps.service.ProduceshiftorderService;
import org.nl.wms.mps.service.dto.DeviceDto;
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
@@ -33,20 +34,22 @@ import java.util.Map;
public class ProduceshiftorderController{
private final ProduceshiftorderService produceshiftorderService;
private final IPdmProduceWorkorderService iPdmProduceWorkorderService;
private final IPdmBiDeviceService pdmBiDeviceService;
@PostMapping("/getDevice")
@Log("根据登录用户设备下拉")
@ApiOperation("根据登录用户设备下拉")
public ResponseEntity<Object> getDevice(@RequestBody JSONObject param) {
//从设备拉去
return new ResponseEntity<>(produceshiftorderService.getDevice(param), HttpStatus.OK);
}
@PostMapping("/getTable")
@Log("获取工单生产记录")
@ApiOperation("获取工单生产记录")
//@PreAuthorize("@el.check('produceshiftorder:list')")
public ResponseEntity<Object> getTable(@RequestBody JSONObject param) {
return new ResponseEntity<>(produceshiftorderService.getTable(param), HttpStatus.OK);
}
@@ -80,14 +83,15 @@ public class ProduceshiftorderController{
@Log("看板报工")
@ApiOperation("看板报工")
public ResponseEntity<Object> saveReport(@RequestBody JSONObject param) {
return new ResponseEntity<>(produceshiftorderService.saveReport(param), HttpStatus.OK);
return new ResponseEntity<>(iPdmProduceWorkorderService.report(param), HttpStatus.OK);
}
@PostMapping("/finish")
@Log("看板强制完成")
@ApiOperation("看板强制完成")
public ResponseEntity<Object> finish(@RequestBody JSONObject param) {
return new ResponseEntity<>(produceshiftorderService.finish(param), HttpStatus.OK);
iPdmProduceWorkorderService.finish(param);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/getReportWork")

View File

@@ -108,6 +108,11 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
void reportApprove(JSONArray param);
/**
* 工单更换设备
*
* @param param
*/
void replaceDevice(JSONObject param);
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.product_manage.service.workorder;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 生产设备报工记录表 服务类
* </p>
*
* @author generator
* @since 2023-05-16
*/
public interface IPdmProduceWorkorderrecordService extends IService<PdmProduceWorkorderrecord> {
}

View File

@@ -0,0 +1,148 @@
package org.nl.wms.product_manage.service.workorder.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 生产设备报工记录表
* </p>
*
* @author generator
* @since 2023-05-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("pdm_produce_workorderrecord")
public class PdmProduceWorkorderrecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工单生产记录标识
*/
@TableId(value = "macoperate_id")
private String macoperate_id;
/**
* 工单编号
*/
private String workorder_id;
/**
* 班次类型
*/
private String shift_type_scode;
/**
* 工序标识
*/
private String workprocedure_id;
/**
* 生产区域
*/
private String product_area;
/**
* 生产设备编码
*/
private String device_code;
/**
* 操作工标识
*/
private String produce_person_id;
/**
* 电气期初数量
*/
private BigDecimal dq_init_qty;
/**
* 人员期初数量
*/
private BigDecimal person_init_qty;
/**
* 电气报工数量
*/
private BigDecimal dq_report_qty;
/**
* 人员报工数量
*/
private BigDecimal person_report_qty;
/**
* 电气期末数量
*/
private BigDecimal dq_finish_qty;
/**
* 人员期末数量
*/
private BigDecimal person_finish_qty;
/**
* 开工时间
*/
private String operatetime_start;
/**
* 完工时间
*/
private String operatetime_end;
/**
* 顺序号
*/
private Integer seq_number;
/**
* 主表:计划数量-报工总
*/
private BigDecimal needproduct_qty;
/**
* 主表:计划数量-报工总
*/
private BigDecimal report_qty;
/**
* 报废,不记录报工数
*/
private BigDecimal nok_qty;
/**
* 报修数不记录报工数
*/
private BigDecimal repare_qty;
/**
* 报工状态生成报工审核123
*/
private String report_status;
/**
* 审核人
*/
private String confirm_id;
private String confirm_name;
private String confirm_time;
/**
* 校验状态唯一性
*/
private String md5;
}

View File

@@ -0,0 +1,107 @@
package org.nl.wms.product_manage.service.workorder.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 生产设备报工记录表
* </p>
*
* @author generator
* @since 2023-05-16
*/
@Data
@TableName("pdm_produce_workorderrecord")
@Builder
public class WorkorderRecord implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工单生产记录标识
*/
private Long macoperate_id;
/**
* 工单编号
*/
private String workorder_id;
/**
* 班次类型
*/
private String shift_type_scode;
/**
* 工序标识
*/
private String workprocedure_id;
/**
* 生产区域
*/
private String product_area;
/**
* 生产设备编码
*/
private String device_code;
/**
* 操作工标识
*/
private String produce_person_id;
/**
* 电气期初数量
*/
private BigDecimal dq_init_qty;
/**
* 人员期初数量
*/
private BigDecimal person_init_qty;
/**
* 电气报工数量
*/
private BigDecimal dq_report_qty;
/**
* 人员报工数量
*/
private BigDecimal person_report_qty;
/**
* 电气期末数量
*/
private BigDecimal dq_finish_qty;
/**
* 人员期末数量
*/
private BigDecimal person_finish_qty;
/**
* 开工时间
*/
private String operatetime_start;
/**
* 完工时间
*/
private String operatetime_end;
/**
* 顺序号
*/
private BigDecimal seq_number;
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.product_manage.service.workorder.dao.mapper;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 生产设备报工记录表 Mapper 接口
* </p>
*
* @author generator
* @since 2023-05-16
*/
public interface PdmProduceWorkorderrecordMapper extends BaseMapper<PdmProduceWorkorderrecord> {
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper">
</mapper>

View File

@@ -28,6 +28,7 @@ import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstand
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.mps.service.WorkOrderImportEnum;
import org.nl.wms.mps.service.dto.ProduceshiftorderDto;
import org.nl.wms.product_manage.ReportRecordStatus;
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
@@ -631,4 +632,34 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
list.add(report_qty);
return list;
}
@Override
public void replaceDevice(JSONObject param) {
String produceorder_code = param.getString("produceorder_code");
String device_id = param.getString("device_id");
String device_code = param.getString("device_code");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
ProduceshiftorderDto produceshiftorderDto = null;//this.findByCode(produceorder_code);
produceshiftorderDto.setDevice_id(Long.parseLong(device_id));
produceshiftorderDto.setUpdate_id(currentUserId);
produceshiftorderDto.setUpdate_name(nickName);
produceshiftorderDto.setUpdate_time(DateUtil.now());
String order_status = produceshiftorderDto.getOrder_status();
if(!order_status.equals("03") && !order_status.equals("01") && !order_status.equals("00")) {
JSONArray array = new JSONArray();
JSONObject acsObj = new JSONObject();
acsObj.put("order_code", produceorder_code);
acsObj.put("device_code", device_code);
array.add(acsObj);
Map<String,Object> resp = wmsToAcsService.replaceDevice(array);
String status = String.valueOf(resp.get("status"));
String message = (String) resp.get("message");
if(!status.equals("200")) {
throw new BadRequestException(message);
}
}
//this.update(produceshiftorderDto);
}
}

View File

@@ -0,0 +1,20 @@
package org.nl.wms.product_manage.service.workorder.impl;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
import org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderrecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 生产设备报工记录表 服务实现类
* </p>
*
* @author generator
* @since 2023-05-16
*/
@Service
public class PdmProduceWorkorderrecordServiceImpl extends ServiceImpl<PdmProduceWorkorderrecordMapper, PdmProduceWorkorderrecord> implements IPdmProduceWorkorderrecordService {
}

View File

@@ -0,0 +1,29 @@
package org.nl.wms.system_manage.service.ql.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.nl.common.domain.query.BaseQuery;
import org.nl.common.domain.query.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.system_manage.service.dept.dao.SysDept;
import org.nl.wms.system_manage.service.ql.dao.PdmQlOption;
import java.util.List;
/*
* @author ZZQ
* @Date 2022/12/15 4:20 下午
*/
@Data
public class OptionRecordQuery extends BaseQuery<PdmQlOption> {
private String orderno;
/**
* 检测类型
*/
private String type;
private String bussclass;
}