1.库存管理,出入库流水

master
董哲奇 1 year ago
parent ed5d9d2985
commit 214702748e

@ -0,0 +1,84 @@
package com.dsic.gj_erp.bean.zyjh;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* 余料出入口流水
*/
@Getter
@Setter
@TableName("dm_yl_in_out")
public class DmYlInOut {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
private String 余料编号;//余料编号,套料图中存在编号时产生
private String 规格;
private String 炉批号;
private String 重量;
private String 数量="1";
private String 来源船号;//来源船号
private String 来源批量;//来源批量
private String 来源图纸;//来源图纸
private String 物品型号;
private String 物品规格;
private String 切割日期;
private String 使用船号;//使用船号
private String 使用批量;//使用批量
private String 使用分段;//使用分段
private String 使用图纸;//使用图纸
private String 使用日期;//同打印日期
private BigDecimal 板厚;
private BigDecimal 板宽;
private BigDecimal 板长;
private String 出入库日期;
private String 出入库人;
private String 出入库;//出库,入库
public static DmYlInOut 入库流水(DmYlInfo item, String userCode){
DmYlInOut dmYlInOut = new DmYlInOut();
BeanUtil.copyProperties(item,dmYlInOut);
dmYlInOut.setId(null);
dmYlInOut.set出入库("入库");
dmYlInOut.set出入库人(userCode);
dmYlInOut.set出入库日期(item.get入库日期());
return dmYlInOut;
}
public static DmYlInOut 出库流水(DmYlInfo item, String userCode, String 出库日期){
DmYlInOut dmYlInOut = new DmYlInOut();
BeanUtil.copyProperties(item,dmYlInOut);
dmYlInOut.set出入库("出库");
dmYlInOut.set出入库人(userCode);
dmYlInOut.set出入库日期(出库日期);
return dmYlInOut;
}
}

@ -61,7 +61,14 @@ public class DmYlInfo {
private String 使用日期;//同打印日期 private String 使用日期;//同打印日期
private int 使用状态;//0:未使用;1:已使用;2:已打印;3:已切割 private String 入库日期;
private String 入库人;
private String 编制人;
private String 编制日期;
private Integer 使用状态;//0:未入库;1:未使用;2:已匹配;3:已打印;4:已切割
public boolean 指定余料编号的上料匹配(String 余料编号){ public boolean 指定余料编号的上料匹配(String 余料编号){
return StrUtil.isNotEmpty(this.余料编号) && this.余料编号.equals(余料编号); return StrUtil.isNotEmpty(this.余料编号) && this.余料编号.equals(余料编号);
@ -86,12 +93,25 @@ public class DmYlInfo {
&&new BigDecimal(split[1]).compareTo(板长)<=0; &&new BigDecimal(split[1]).compareTo(板长)<=0;
} }
public void 修正上料信息(DmYdjh ydjh){ public static DmYlInfo 入库(DmYlInfo item,String userCode,String 编制日期){
DmYlInfo dmYlInfo = new DmYlInfo();
dmYlInfo.setId(item.getId());
dmYlInfo.set垛位(item.get垛位());
dmYlInfo.set层数(item.get层数());
dmYlInfo.set入库人(userCode);
dmYlInfo.set入库日期(item.get入库日期());
dmYlInfo.set编制人(userCode);
dmYlInfo.set编制日期(编制日期);
dmYlInfo.set使用状态(UseStatus.未使用.ordinal());
return dmYlInfo;
}
public void 修正匹配信息(DmYdjh ydjh){
使用船号=ydjh.getDcCh(); 使用船号=ydjh.getDcCh();
使用批量=ydjh.getDcPl(); 使用批量=ydjh.getDcPl();
使用分段=ydjh.getDcFd(); 使用分段=ydjh.getDcFd();
使用图纸=ydjh.getTzbh(); 使用图纸=ydjh.getTzbh();
使用状态=UseStatus.已使用.ordinal(); 使用状态=UseStatus.已匹配.ordinal();
} }
public void 修正退回信息(){ public void 修正退回信息(){
@ -146,11 +166,11 @@ public class DmYlInfo {
dmYlInfo.物品型号=bchxylp.getWpxh(); dmYlInfo.物品型号=bchxylp.getWpxh();
dmYlInfo.物品规格=ydjh.getWpgg(); dmYlInfo.物品规格=ydjh.getWpgg();
dmYlInfo.切割日期= DateUtil.date().toString("yyyy/MM/dd"); dmYlInfo.切割日期= DateUtil.date().toString("yyyy/MM/dd");
dmYlInfo.使用状态=UseStatus.未使用.ordinal(); dmYlInfo.使用状态=UseStatus.未入库.ordinal();
return dmYlInfo; return dmYlInfo;
} }
public enum UseStatus{ public enum UseStatus{
未使用,已使用,已打印,已切割 未入库,未使用,已匹配,已打印,已切割
} }
} }

@ -4,17 +4,22 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.annotation.Authorization;
import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmYdjh; import com.dsic.gj_erp.bean.jhgk.DmYdjh;
import com.dsic.gj_erp.bean.zyjh.DmYlInOut;
import com.dsic.gj_erp.bean.zyjh.DmYlInfo; import com.dsic.gj_erp.bean.zyjh.DmYlInfo;
import com.dsic.gj_erp.controller.zyjh.dto.YlSlDto; import com.dsic.gj_erp.controller.zyjh.dto.YlSlDto;
import com.dsic.gj_erp.exception.ServiceException; import com.dsic.gj_erp.exception.ServiceException;
import com.dsic.gj_erp.service.jhgk.DmYdjhService; import com.dsic.gj_erp.service.jhgk.DmYdjhService;
import com.dsic.gj_erp.service.zyjh.DmYlInOutService;
import com.dsic.gj_erp.service.zyjh.DmYlInfoService; import com.dsic.gj_erp.service.zyjh.DmYlInfoService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -29,6 +34,7 @@ public class YlController {
private final DmYlInfoService ylInfoService; private final DmYlInfoService ylInfoService;
private final DmYdjhService ydjhService; private final DmYdjhService ydjhService;
private final DmYlInOutService dmYlInOutService;
@PostMapping("list") @PostMapping("list")
public ResultBean<?> list(@RequestBody YlSlDto dto){ public ResultBean<?> list(@RequestBody YlSlDto dto){
@ -45,12 +51,39 @@ public class YlController {
); );
} }
/**
* 入库
*/
@AuthFunction
@PostMapping("rk")
@Transactional(rollbackFor = Exception.class)
public ResultBean<?> rk(@RequestBody List<DmYlInfo> list, HttpServletRequest request){
String userCode=(String) request.getAttribute("yhdm");
String 编制日期=DateUtil.date().toString("yyyy/MM/dd");
List<DmYlInOut> ylInOutList=new ArrayList<>();
List<DmYlInfo> updateList=list.stream().map(item->{
DmYlInOut dmYlInOut = DmYlInOut.入库流水(item,userCode);
ylInOutList.add(dmYlInOut);
return DmYlInfo.入库(item,userCode,编制日期);
}).collect(Collectors.toList());
ylInfoService.updateBatchById(updateList);
dmYlInOutService.saveBatch(ylInOutList);
return new ResultBean<>();
}
/** /**
* 保存功能 * 保存功能
*/ */
@AuthFunction
@PostMapping("edit") @PostMapping("edit")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBean<?> edit(@RequestBody List<DmYlInfo> list){ public ResultBean<?> edit(@RequestBody List<DmYlInfo> list, HttpServletRequest request){
String userCode=(String) request.getAttribute("yhdm");
String 编制日期=DateUtil.date().toString("yyyy/MM/dd");
list.forEach(item->{
item.set编制人(userCode);
item.set编制日期(编制日期);
});
ylInfoService.updateBatchById(list); ylInfoService.updateBatchById(list);
return new ResultBean<>(); return new ResultBean<>();
} }
@ -61,7 +94,6 @@ public class YlController {
@PostMapping("rollback") @PostMapping("rollback")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBean<?> rollback(@RequestBody List<DmYlInfo> list){ public ResultBean<?> rollback(@RequestBody List<DmYlInfo> list){
List<DmYdjh> updateList=new ArrayList<>();
list.stream() list.stream()
.filter(item->item.get使用状态()<=2) .filter(item->item.get使用状态()<=2)
.forEach(item->{ .forEach(item->{
@ -70,30 +102,41 @@ public class YlController {
.eq(DmYdjh::getTzbh, item.get使用图纸()) .eq(DmYdjh::getTzbh, item.get使用图纸())
); );
//退回作业计划 //退回作业计划
//fixme 修正作业计划,余料上料相关属性
if (ObjectUtil.isNotEmpty(one)){ if (ObjectUtil.isNotEmpty(one)){
ydjhService.update(Wrappers.<DmYdjh>update()
.set("yl_ch",null)
.set("yl_ph",null)
.set("yl_th",null)
.set("ylbh",null)
.set("sllph",null)
.set("slfkrq",null)
.set("zt","2")
.eq("id",one.getId()));
} }
//退回余料库存信息 //退回余料库存信息
item.修正退回信息(); item.修正退回信息();
}); });
ydjhService.updateBatchById(updateList); ylInfoService.updateBatchById(list);
this.edit(list);
return new ResultBean<>(); return new ResultBean<>();
} }
/** /**
* 打印 * 打印
*/ */
@AuthFunction
@PostMapping("print") @PostMapping("print")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ResultBean<?> print(@RequestBody List<DmYlInfo> list){ public ResultBean<?> print(@RequestBody List<DmYlInfo> list,HttpServletRequest request){
String userCode=(String) request.getAttribute("yhdm");
String 出库日期=DateUtil.date().toString("yyyy/MM/dd");
ArrayList<DmYdjh> updateList = new ArrayList<>(); ArrayList<DmYdjh> updateList = new ArrayList<>();
ArrayList<DmYlInOut> 出库流水数据 = new ArrayList<>();
list.forEach(item->{ list.forEach(item->{
if (StrUtil.isAllNotEmpty(item.get使用船号(),item.get使用船号())){ if (StrUtil.isAllNotEmpty(item.get使用船号(),item.get使用图纸())){
String date = DateUtil.date().toString("yyyy/MM/dd"); String date = DateUtil.date().toString("yyyy/MM/dd");
item.set使用日期(date); item.set使用日期(date);
item.set使用状态(2);//已打印 item.set使用状态(DmYlInfo.UseStatus.已打印.ordinal());//已打印
List<DmYdjh> ydjhList = ydjhService.list(Wrappers.<DmYdjh>lambdaQuery() List<DmYdjh> ydjhList = ydjhService.list(Wrappers.<DmYdjh>lambdaQuery()
.eq(DmYdjh::getDcCh, item.get使用船号()) .eq(DmYdjh::getDcCh, item.get使用船号())
.eq(DmYdjh::getTzbh,item.get使用图纸()) .eq(DmYdjh::getTzbh,item.get使用图纸())
@ -114,11 +157,15 @@ public class YlController {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
updateList.addAll(collect); updateList.addAll(collect);
DmYlInOut 出库流水 = DmYlInOut.出库流水(item, userCode, 出库日期);
出库流水数据.add(出库流水);
} }
}); });
ydjhService.updateBatchById(updateList); ydjhService.updateBatchById(updateList);
ylInfoService.updateBatchById(list); ylInfoService.updateBatchById(list);
dmYlInOutService.saveBatch(出库流水数据);
return new ResultBean<>(); return new ResultBean<>();
} }
@ -151,14 +198,14 @@ public class YlController {
for (DmYdjh ydjh:list){ for (DmYdjh ydjh:list){
for(DmYlInfo ylInfo:dto.getYlList()){ for(DmYlInfo ylInfo:dto.getYlList()){
if (ylInfo.指定余料编号的上料匹配(ydjh.getJhsyylbh())&&ylInfo.上料匹配(ydjh)){//暂时不支持,仅保留分支流程 if (ylInfo.指定余料编号的上料匹配(ydjh.getJhsyylbh())&&ylInfo.上料匹配(ydjh)){//暂时不支持,仅保留分支流程
ylInfo.修正上料信息(ydjh); ylInfo.修正匹配信息(ydjh);
匹配成功的余料信息.add(ylInfo); 匹配成功的余料信息.add(ylInfo);
continue out; continue out;
} }
} }
for (DmYlInfo ylInfo:dto.getYlList()){ for (DmYlInfo ylInfo:dto.getYlList()){
if (ylInfo.上料匹配(ydjh)){ if (ylInfo.上料匹配(ydjh)){
ylInfo.修正上料信息(ydjh); ylInfo.修正匹配信息(ydjh);
匹配成功的余料信息.add(ylInfo); 匹配成功的余料信息.add(ylInfo);
continue out; continue out;
} }
@ -195,14 +242,14 @@ public class YlController {
for (DmYdjh ydjh:list){ for (DmYdjh ydjh:list){
for(DmYlInfo ylInfo:dto.getYlList()){ for(DmYlInfo ylInfo:dto.getYlList()){
if (ylInfo.指定余料编号的上料匹配(ydjh.getJhsyylbh())&&ylInfo.上料匹配(ydjh)){//暂时不支持,仅保留分支流程 if (ylInfo.指定余料编号的上料匹配(ydjh.getJhsyylbh())&&ylInfo.上料匹配(ydjh)){//暂时不支持,仅保留分支流程
ylInfo.修正上料信息(ydjh); ylInfo.修正匹配信息(ydjh);
匹配成功的余料信息.add(ylInfo); 匹配成功的余料信息.add(ylInfo);
continue out; continue out;
} }
} }
for (DmYlInfo ylInfo:dto.getYlList()){ for (DmYlInfo ylInfo:dto.getYlList()){
if (ylInfo.上料匹配(ydjh)){ if (ylInfo.上料匹配(ydjh)){
ylInfo.修正上料信息(ydjh); ylInfo.修正匹配信息(ydjh);
匹配成功的余料信息.add(ylInfo); 匹配成功的余料信息.add(ylInfo);
continue out; continue out;
} }

@ -0,0 +1,11 @@
package com.dsic.gj_erp.mapper.zyjh;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.zyjh.DmYlInOut;
import com.dsic.gj_erp.bean.zyjh.DmYlInfo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DmYlInOutMapper extends BaseMapper<DmYlInOut> {
}

@ -0,0 +1,12 @@
package com.dsic.gj_erp.service.zyjh;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.zyjh.DmYlInOut;
import com.dsic.gj_erp.bean.zyjh.DmYlInfo;
import com.dsic.gj_erp.mapper.zyjh.DmYlInOutMapper;
import com.dsic.gj_erp.mapper.zyjh.DmYlInfoMapper;
import org.springframework.stereotype.Service;
@Service
public class DmYlInOutService extends ServiceImpl<DmYlInOutMapper, DmYlInOut> {
}
Loading…
Cancel
Save