物料调整

main
HUOJIN\92525 2024-09-13 13:30:50 +08:00
parent b24d380b8e
commit 5a2a3fab11
10 changed files with 171 additions and 268 deletions

View File

@ -45,112 +45,111 @@ public class Item extends BaseEntity implements Serializable {
@Column(name = "`code`",nullable = false) @Column(name = "`code`",nullable = false)
@NotBlank @NotBlank
@ApiModelProperty(value = "代码") @ApiModelProperty(value = "料号")
private String code; private String code;
@Column(name = "`name`",nullable = false) @Column(name = "`name`",nullable = false)
@NotBlank @NotBlank
@ApiModelProperty(value = "名称") @ApiModelProperty(value = "物料描述")
private String name; private String name;
@Column(name = "`specs`") @Column(name = "`package_type`")
@ApiModelProperty(value = "规格") @ApiModelProperty(value = "包装类型")
private String specs; private String packageType;
@Column(name = "`structure_id`") @Column(name = "`spec_quantity`")
@ApiModelProperty(value = "客户ID") @ApiModelProperty(value = "规格数量")
private Long structureId; private Double specQuantity=0D;
@Column(name = "`description`") @Column(name = "`spec_weight`")
@ApiModelProperty(value = "描述") @ApiModelProperty(value = "规格重量")
private String description; private Double specWeight=0D;
@Column(name = "`is_attribute1`") @Column(name = "`gross_weight`")
@ApiModelProperty(value = "是否发动机") @ApiModelProperty(value = "毛重")
private Boolean isAttribute1=true; private Double grossWeight=0D;
@Column(name = "`is_attribute2`")
@ApiModelProperty(value = "是否预备货")
private Boolean isAttribute2=true;
@Column(name = "`enabled`")
@ApiModelProperty(value = "是否失效")
private Boolean enabled=true;
@Column(name = "`bepc`")
@ApiModelProperty(value = "批次")
private Boolean bepc=false;
@Column(name = "`bexq`")
@ApiModelProperty(value = "效期")
private Boolean bexq=false;
@Column(name = "`beds`")
@ApiModelProperty(value = "多收")
private Boolean beds=false;
@Column(name = "`becf`")
@ApiModelProperty(value = "超发")
private Boolean becf=false;
@Column(name = "`valid_period`")
@ApiModelProperty(value = "保质期")
private Integer validPeriod;
@Column(name = "`alert_leading_days`")
@ApiModelProperty(value = "预警天数")
private Integer alertLeadingDays;
@Column(name = "`large_class`")
@ApiModelProperty(value = "大类,组合代码,自动叫料捆绑,数量一致")
private String largeClass;
@Column(name = "`center_class`")
@ApiModelProperty(value = "中类")
private String centerClass;
@Column(name = "`small_class`")
@ApiModelProperty(value = "小类")
private String smallClass;
@Column(name = "`good_type`")
@ApiModelProperty(value = "物料类型")
private String goodType;
@Column(name = "`length`") @Column(name = "`length`")
@ApiModelProperty(value = "长") @ApiModelProperty(value = "长")
private Double length=0d; private Double length=0D;
@Column(name = "`width`") @Column(name = "`width`")
@ApiModelProperty(value = "宽") @ApiModelProperty(value = "宽")
private Double width=0d; private Double width=0D;
@Column(name = "`height`") @Column(name = "`height`")
@ApiModelProperty(value = "高") @ApiModelProperty(value = "高")
private Double height=0d; private Double height=0D;
@Column(name = "`weight`")
@ApiModelProperty(value = "重量")
private Double weight=0d;
@Column(name = "`volume`") @Column(name = "`volume`")
@ApiModelProperty(value = "体积") @ApiModelProperty(value = "体积")
private Double volume=0d; private Double volume=0D;
@Column(name = "`unit`") @Column(name = "`unit`")
@ApiModelProperty(value = "单位") @ApiModelProperty(value = "单位")
private String unit; private String unit;
@Column(name = "`master_unit`") @OneToOne
@ApiModelProperty(value = "大单位") @JoinColumn(name = "`rec_storage_area_id`")
private String masterUnit; @ApiModelProperty(value = "推荐库区")
private Area recStorageArea;
@Column(name = "`pack_number`") @Column(name = "`type`")
@ApiModelProperty(value = "包装系数") @ApiModelProperty(value = "类型")
private Integer packNumber=1; private String type;
@Column(name = "`bar_code`") @Column(name = "`value_grade`")
@ApiModelProperty(value = "条码") @ApiModelProperty(value = "物料价值等级")
private String barCode; private String valueGrade;
@Column(name = "`valid_period`")
@ApiModelProperty(value = "保质期")
private Integer validPeriod=0;
@Column(name = "`alert_days`")
@ApiModelProperty(value = "预警天数")
private Integer alertDays=0;
@Column(name = "`is_batch`")
@ApiModelProperty(value = "是否批次")
private Boolean isBatch=false;
@Column(name = "`is_serial`")
@ApiModelProperty(value = "是否序列号")
private Boolean isSerial=false;
@Column(name = "`is_valid_period`")
@ApiModelProperty(value = "是否有效期")
private Boolean isValidPeriod=false;
@Column(name = "`is_hazardous`")
@ApiModelProperty(value = "是否危化品")
private Boolean isHazardous=false;
@Column(name = "`is_inv_available`")
@ApiModelProperty(value = "是否有库存")
private Boolean isInvAvailable=false;
@Column(name = "`is_sap_material`")
@ApiModelProperty(value = "是否SAP料号")
private Boolean isSapMaterial=false;
@Column(name = "`heat_value`")
@ApiModelProperty(value = "热度值")
private Integer heatValue=0;
@Column(name = "`description`")
@ApiModelProperty(value = "描述")
private String description;
@Column(name = "`enabled`")
@ApiModelProperty(value = "是否失效")
private Boolean enabled=true;
@OneToOne
@JoinColumn(name = "`point_id`")
@ApiModelProperty(value = "库位")
private Point point;
@OneToOne @OneToOne
@JoinColumn(name = "dept_id") @JoinColumn(name = "dept_id")
@ -165,23 +164,6 @@ public class Item extends BaseEntity implements Serializable {
@ApiModelProperty(value = "来源序号") @ApiModelProperty(value = "来源序号")
private Long sourceId; private Long sourceId;
@OneToOne
@JoinColumn(name = "stock_type")
@ApiModelProperty(value = "料箱类型")
private StockType stockType;
@Column(name = "`extend_d1`")
@ApiModelProperty(value = "默认容器装载数")
private Double extendD1=1d;
@Column(name = "`extend_d2`")
@ApiModelProperty(value = "冷却时长")
private Double extendD2=4d;
@Column(name = "`extend_d3`")
@ApiModelProperty(value = "收容数")
private Double extendD3=0d;
@Column(name = "`extend_d4`") @Column(name = "`extend_d4`")
@ApiModelProperty(value = "扩展小数4") @ApiModelProperty(value = "扩展小数4")
private Double extendD4=0d; private Double extendD4=0d;
@ -210,17 +192,11 @@ public class Item extends BaseEntity implements Serializable {
@ApiModelProperty(value = "扩展整型5") @ApiModelProperty(value = "扩展整型5")
private Long extendNum5; private Long extendNum5;
@Column(name = "`extend_str1`")
@ApiModelProperty(value = "接口代码")
private String extendStr1;
@Column(name = "`extend_str2`") @Column(name = "`extend_str2`")
@ApiModelProperty(value = "扩展字符2") @ApiModelProperty(value = "扩展字符2")
private String extendStr2; private String extendStr2;
@Column(name = "`extend_str3`")
@ApiModelProperty(value = "何姿")
private String extendStr3;
@Column(name = "`extend_str4`") @Column(name = "`extend_str4`")
@ApiModelProperty(value = "扩展字符4") @ApiModelProperty(value = "扩展字符4")
@ -229,10 +205,7 @@ public class Item extends BaseEntity implements Serializable {
@Column(name = "`extend_str5`") @Column(name = "`extend_str5`")
@ApiModelProperty(value = "扩展字符5") @ApiModelProperty(value = "扩展字符5")
private String extendStr5; private String extendStr5;
@OneToOne
@JoinColumn(name = "`point_id`")
@ApiModelProperty(value = "库位")
private Point point;

View File

@ -125,9 +125,7 @@ public class ItemController {
FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize()); FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize());
String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename()); String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename());
String type = FileUtil.getFileType(suffix); String type = FileUtil.getFileType(suffix);
log.error("--" + properties.getPath().getPath() + type + File.separator);
File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type + File.separator); File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type + File.separator);
log.error("--" + file.getPath());
Map<String, StockType> map_stock = stockTypeService.queryAll(); Map<String, StockType> map_stock = stockTypeService.queryAll();
DictQueryCriteria dictQueryCriteria=new DictQueryCriteria(); DictQueryCriteria dictQueryCriteria=new DictQueryCriteria();
@ -145,33 +143,8 @@ public class ItemController {
for ( i = 0; i < readAll.size(); i++) { for ( i = 0; i < readAll.size(); i++) {
Item item = new Item(); Item item = new Item();
String code=readAll.get(i).get("物料代码").toString().trim(); String code=readAll.get(i).get("物料代码").toString().trim();
item.setCode(code);
item.setName("" + readAll.get(i).get("物料名称"));
//容器类型
String stocktype_Str = "" + readAll.get(i).get("容器类型");
item.setStockType(map_stock.get(stocktype_Str));
String unit=readAll.get(i).get("单位")+"";
item.setUnit(map_dic.get(unit).getValue());
String packNumber=readAll.get(i).get("默认容器装载数").toString().trim();
item.setPackNumber(Integer.parseInt(packNumber));
String itemType=readAll.get(i).get("物料类型")+"";
item.setGoodType(item_type_dic.get(itemType).getValue());
item.setLength(Double.parseDouble("" + readAll.get(i).get("长")));
item.setWidth(Double.parseDouble("" + readAll.get(i).get("宽")));
item.setHeight(Double.parseDouble("" + readAll.get(i).get("高")));
ItemQueryCriteria itemQueryCriteria=new ItemQueryCriteria();
itemQueryCriteria.setCode(code);
List<ItemDto> itemDto_list=itemService.queryAll(itemQueryCriteria);
if(itemDto_list.size()<=0){
new_len++;
log.error("不存在--" + readAll.get(i).get("编码")+"--");
itemService.create(item);
}else{
edit_len++;
log.error("存在--" + readAll.get(i).get("编码")+"--");
item.setId(itemDto_list.get(0).getId());
itemService.update(item);
}
} }
}catch (Exception e){ }catch (Exception e){
ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), "导入异常---第"+(i+1)+"行:"+e.toString()); ApiError apiError = ApiError.errorJosn(HttpStatus.BAD_REQUEST.value(), "导入异常---第"+(i+1)+"行:"+e.toString());

View File

@ -15,9 +15,16 @@
*/ */
package com.youchain.basicdata.service.dto; package com.youchain.basicdata.service.dto;
import com.youchain.basicdata.domain.Area;
import com.youchain.basicdata.domain.Point;
import com.youchain.basicdata.domain.StockType; import com.youchain.basicdata.domain.StockType;
import com.youchain.modules.system.domain.Dept;
import com.youchain.modules.system.service.dto.DeptSmallDto; import com.youchain.modules.system.service.dto.DeptSmallDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.io.Serializable; import java.io.Serializable;
@ -30,142 +37,94 @@ import java.io.Serializable;
@Data @Data
public class ItemDto implements Serializable { public class ItemDto implements Serializable {
/** ID */ //id
private Long id; private Long id;
/** 代码 */ //料号
private String code; private String code;
/** 名称 */ //物料描述
private String name; private String name;
/** 规格 */ //包装类型
private String specs; private String packageType;
/** 客户ID */ //规格数量
private Long structureId; private Double specQuantity=0D;
/** 描述 */ //规格重量
private String description; private Double specWeight=0D;
/** 是否发动机 */ //毛重
private Boolean isAttribute1; private Double grossWeight=0D;
/** 是否预备货 */
private Boolean isAttribute2;
/** 状态 */
private Boolean enabled;
/** 保质期 */ //长
private Integer validPeriod; private Double length=0D;
/** 预警天数 */ //宽
private Integer alertLeadingDays; private Double width=0D;
/** 大类 */ //高
private String largeClass; private Double height=0D;
/** 中类 */ //体积
private String centerClass; private Double volume=0D;
/** 小类 */ //单位
private String smallClass;
/** 物料类型 */
private String goodType;
/** 长 */
private Double length;
/** 宽 */
private Double width;
/** 高 */
private Double height;
/** 重量 */
private Double weight;
/** 体积 */
private Double volume;
/** 单位 */
private String unit; private String unit;
/** 大单位 */ //推荐库区
private String masterUnit; private Area recStorageArea;
/** 包装系数 */ //类型
private Integer packNumber; private String type;
/** 条码 */ //物料价值等级
private String barCode; private String valueGrade;
/** 仓库ID */ //保质期
private DeptSmallDto dept; private Integer validPeriod=0;
/** 来源名称 */ //预警天数
private Integer alertDays=0;
//是否批次
private Boolean isBatch=false;
//是否序列号
private Boolean isSerial=false;
//是否有效期
private Boolean isValidPeriod=false;
//是否危化品
private Boolean isHazardous=false;
//库存是否可用
private Boolean isInvAvailable=false;
//是否SAP料号
private Boolean isSapMaterial=false;
//热度值
private Integer heatValue=0;
//描述
private String description;
//是否失效
private Boolean enabled=true;
//库位
private Point point;
//仓库
private Dept dept;
//来源名称
private String sourceName; private String sourceName;
/** 来源序号 */ //来源序号
private Long sourceId; private Long sourceId;
/** 创建人 */
private String createBy;
/** 修改人 */
private String updateBy;
/** 创建时间 */
private Timestamp createTime;
/** 修改时间 */
private Timestamp updateTime;
/** 容器类型 */
private StockType stockType;
private Long extendNum1;
private Long extendNum2;
private Long extendNum3;
private Long extendNum4;
private Long extendNum5;
private Double extendD1;
private Double extendD2;
private Double extendD3;
private Double extendD4;
private Double extendD5;
private String extendStr1;
private String extendStr2;
private String extendStr3;
private String extendStr4;
private String extendStr5;
private PointDto point;
/** 批次 */
private Boolean bepc;
/** 效期 */
private Boolean bexq;
/** 多收 */
private Boolean beds;
/** 超发 */
private Boolean becf;
} }

View File

@ -317,7 +317,7 @@ public class BoxServiceImpl implements BoxService {
asnDetail.setItem(item); asnDetail.setItem(item);
asnDetail.setLineNo(1l); asnDetail.setLineNo(1l);
asnDetail.setStatus(BizStatus.OPEN); asnDetail.setStatus(BizStatus.OPEN);
asnDetail.setOrderQty(item.getExtendD1()); asnDetail.setOrderQty(item.getSpecQuantity());
asnDetail.setDept(item.getDept()); asnDetail.setDept(item.getDept());
Date date = cn.hutool.core.date.DateUtil.date(); Date date = cn.hutool.core.date.DateUtil.date();
String propC1 = DateUtil.format(date, "yyyyMMdd"); String propC1 = DateUtil.format(date, "yyyyMMdd");

View File

@ -200,13 +200,11 @@ public class ImportDataServiceImpl implements ImportDataService {
re = "b"; re = "b";
} }
item.setName(name); item.setName(name);
item.setExtendStr3(hz);
item.setExtendD3(Double.parseDouble(srs));
if (unit!=null&&!unit.equals("")) { if (unit!=null&&!unit.equals("")) {
DictDetail dictDetail = dictDetailRepository.findByDictAndLabel("item_unit", unit); DictDetail dictDetail = dictDetailRepository.findByDictAndLabel("item_unit", unit);
item.setUnit(dictDetail.getValue()); item.setUnit(dictDetail.getValue());
} }
item.setSpecs(specs);
if (re.equals("a")){ if (re.equals("a")){
itemRepository.save(item); itemRepository.save(item);
}else if (re.equals("b")){ }else if (re.equals("b")){

View File

@ -572,7 +572,7 @@ public class AsnDetailController {
throw new BadRequestException("请选择入库库位"); throw new BadRequestException("请选择入库库位");
} }
double unRecQty=d.getOrderQty() - d.getReceivedQty(); double unRecQty=d.getOrderQty() - d.getReceivedQty();
if ( recQty<=unRecQty||d.getItem().getBeds()) { if ( recQty<=unRecQty ) {
String pc1=null; String pc1=null;
//现品票确认将任务id回写到现品票表中 //现品票确认将任务id回写到现品票表中
XppRecord xppRecord = xppRecordRepository.findByCode(ewm); XppRecord xppRecord = xppRecordRepository.findByCode(ewm);

View File

@ -194,9 +194,9 @@ public class AsnDetailServiceImpl implements AsnDetailService {
public AsnDetail createAsnDetail(Item item, Stock stock, Point srcPoint,String propC1,String gdh){ public AsnDetail createAsnDetail(Item item, Stock stock, Point srcPoint,String propC1,String gdh){
AsnDetail asnDetail = new AsnDetail(); AsnDetail asnDetail = new AsnDetail();
asnDetail.setItem(item); asnDetail.setItem(item);
asnDetail.setLineNo(1l); asnDetail.setLineNo(1L);
asnDetail.setStatus(BizStatus.OPEN); asnDetail.setStatus(BizStatus.OPEN);
asnDetail.setOrderQty(item.getExtendD1()); asnDetail.setOrderQty(item.getSpecQuantity());
asnDetail.setDept(item.getDept()); asnDetail.setDept(item.getDept());
asnDetail.setStock(stock); asnDetail.setStock(stock);
asnDetail.setPoint(srcPoint); asnDetail.setPoint(srcPoint);

View File

@ -185,7 +185,7 @@ public class PickDetailServiceImpl implements PickDetailService {
if (invs.size() > 0) { if (invs.size() > 0) {
double allocateQty = 0; double allocateQty = 0;
double unQty = quantity;//未分配数量 double unQty = quantity;//未分配数量
double srs=item.getExtendD3(); double srs=0;
for (Inventory inv : invs) { for (Inventory inv : invs) {
Point startPoint = inv.getPoint();//原库位 Point startPoint = inv.getPoint();//原库位
String areaCode="S仓"; String areaCode="S仓";

View File

@ -173,7 +173,7 @@ public class PickKitPlanServiceImpl implements PickKitPlanService {
ptd.setPropC4(0d); ptd.setPropC4(0d);
}else{ }else{
//备货需求=(纯需求数/收容数向上取整)*收容数 //备货需求=(纯需求数/收容数向上取整)*收容数
ptd.setOrderQty(Math.ceil(ptd.getPropC4()/ba.getItem().getExtendD3())*ba.getItem().getExtendD3()); ptd.setOrderQty(Math.ceil(ptd.getPropC4()));
} }
ba.setPcQty(ptd.getOrderQty()+ba.getPcQty()); ba.setPcQty(ptd.getOrderQty()+ba.getPcQty());
bomAccountService.update(ba); bomAccountService.update(ba);
@ -190,7 +190,7 @@ public class PickKitPlanServiceImpl implements PickKitPlanService {
pickDetailService.create(ptd); pickDetailService.create(ptd);
orderQty += ptd.getOrderQty(); orderQty += ptd.getOrderQty();
//查询组合物料,数量是否一致,不一致改成一致 //查询组合物料,数量是否一致,不一致改成一致
String largeClass=ba.getItem().getLargeClass(); String largeClass="";
if(largeClass!=null&&!largeClass.equals("")){ if(largeClass!=null&&!largeClass.equals("")){
int maxQty=pickDetailService.getMaxBomQty(pickTicket.getId(),largeClass).intValue(); int maxQty=pickDetailService.getMaxBomQty(pickTicket.getId(),largeClass).intValue();
if(maxQty>0) { if(maxQty>0) {

View File

@ -205,7 +205,7 @@ public class PlanPickDetailServiceImpl implements PlanPickDetailService {
ptd.setPropC4(0d); ptd.setPropC4(0d);
}else{ }else{
//备货需求=(纯需求数/收容数向上取整)*收容数 //备货需求=(纯需求数/收容数向上取整)*收容数
ptd.setOrderQty(Math.ceil(ptd.getPropC4()/ba.getItem().getExtendD3())*ba.getItem().getExtendD3()); ptd.setOrderQty(Math.ceil(ptd.getPropC4()));
} }
ba.setPcQty(ptd.getOrderQty()+ba.getPcQty()); ba.setPcQty(ptd.getOrderQty()+ba.getPcQty());
bomAccountService.update(ba); bomAccountService.update(ba);
@ -222,7 +222,7 @@ public class PlanPickDetailServiceImpl implements PlanPickDetailService {
pickDetailService.create(ptd); pickDetailService.create(ptd);
orderQty += ptd.getOrderQty(); orderQty += ptd.getOrderQty();
//查询组合物料,数量是否一致,不一致改成一致 //查询组合物料,数量是否一致,不一致改成一致
String largeClass=ba.getItem().getLargeClass(); String largeClass="";
if(largeClass!=null&&!largeClass.equals("")){ if(largeClass!=null&&!largeClass.equals("")){
int maxQty=pickDetailService.getMaxBomQty(pickTicket.getId(),largeClass).intValue(); int maxQty=pickDetailService.getMaxBomQty(pickTicket.getId(),largeClass).intValue();
if(maxQty>0) { if(maxQty>0) {
@ -313,7 +313,7 @@ public class PlanPickDetailServiceImpl implements PlanPickDetailService {
ptd.setPropC4(0d); ptd.setPropC4(0d);
}else{ }else{
//备货需求=(纯需求数/收容数向上取整)*收容数 //备货需求=(纯需求数/收容数向上取整)*收容数
ptd.setOrderQty(Math.ceil(ptd.getPropC4()/ba.getItem().getExtendD3())*ba.getItem().getExtendD3()); ptd.setOrderQty(Math.ceil(ptd.getPropC4()));
} }
ba.setPcQty(ptd.getOrderQty()+ba.getPcQty()); ba.setPcQty(ptd.getOrderQty()+ba.getPcQty());
bomAccountService.update(ba); bomAccountService.update(ba);
@ -330,7 +330,7 @@ public class PlanPickDetailServiceImpl implements PlanPickDetailService {
pickDetailService.create(ptd); pickDetailService.create(ptd);
orderQty += ptd.getOrderQty(); orderQty += ptd.getOrderQty();
//查询组合物料,数量是否一致,不一致改成一致 //查询组合物料,数量是否一致,不一致改成一致
String largeClass=ba.getItem().getLargeClass(); String largeClass="";
if(largeClass!=null&&!largeClass.equals("")){ if(largeClass!=null&&!largeClass.equals("")){
int maxQty=pickDetailService.getMaxBomQty(pickTicket.getId(),largeClass).intValue(); int maxQty=pickDetailService.getMaxBomQty(pickTicket.getId(),largeClass).intValue();
if(maxQty>0) { if(maxQty>0) {