no message

main
暴炳林 2024-06-13 16:02:33 +08:00
parent 9b9453fe11
commit bcef8c2859
20 changed files with 148 additions and 42 deletions

View File

@ -5,6 +5,8 @@ import lombok.Data;
@Data
public class ItemDate {
@ApiModelProperty(value ="行号",required = true,example = "行号")
int lineNo;
@ApiModelProperty(value ="物料代码",required = true,example = "物料代码")
String itemCode;
@ApiModelProperty(value ="物料名称",required = true,example = "物料名称")

View File

@ -8,12 +8,15 @@ import java.util.Set;
@Data
public class ZcData {
@ApiModelProperty(value ="行号",required = true,example = "行号")
int lineNo;
@ApiModelProperty(value ="总成代码",required = true,example = "总成代码")
String completeCode;
@ApiModelProperty(value ="总成名称",required = true,example = "总成名称")
String completeName;
@ApiModelProperty(value ="总成套数",required = true,example = "总成套数")
double completeQty=0d;
@ApiModelProperty(value ="总成明细",required = true)
Set<ItemDate> blzcmx;

View File

@ -51,15 +51,18 @@ public class GdDetail extends BaseEntity implements Serializable {
private Gd gd;
@Column(name = "`line_no`")
@ApiModelProperty(value = "行号")
private Long lineNo;
private int lineNo;
@OneToOne
@JoinColumn(name = "`item_id`",nullable = false)
@ApiModelProperty(value = "单品物料")
private Item item;
@Column(name = "`item_qty`")
@ApiModelProperty(value = "单数量")
@ApiModelProperty(value = "数量")
private Double itemQty=0d;
@Column(name = "`order_qty`")
@ApiModelProperty(value = "未拆分数量")
private Double orderQty=0d;
@OneToOne
@JoinColumn(name = "`big_item_id`",nullable = true)

View File

@ -45,9 +45,11 @@ public class PickDetail extends BaseEntity implements Serializable {
@ApiModelProperty(value = "ID")
private Long id;
@Column(name = "`pick_id`")
@ApiModelProperty(value = "订单序号")
private Long pickId;
@OneToOne
@JoinColumn(name = "`pick_id`",nullable = false)
@NotNull
@ApiModelProperty(value = "出库单")
private Pick pick;
@OneToOne
@JoinColumn(name = "`item_id`",nullable = false)
@ -56,8 +58,8 @@ public class PickDetail extends BaseEntity implements Serializable {
private Item item;
@Column(name = "`line_no`")
@ApiModelProperty(value = "行号")
private Long lineNo;
@ApiModelProperty(value = "封包系数")
private int lineNo;
@Column(name = "`po`")
@ApiModelProperty(value = "po订单号")

View File

@ -32,6 +32,8 @@ public interface GdDetailRepository extends JpaRepository<GdDetail, Long>, JpaSp
@Query(value = "SELECT g FROM GdDetail g WHERE g.gd.id=?1 " +
" and (?2=null or g.bigItem.id=?2) and g.item.id=?3 and g.orderType=?4", nativeQuery = false)
List<GdDetail> findRepeat(Long gdId, Long bigItemId, Long itemId,String orderType);
@Query(value = "SELECT g FROM GdDetail g WHERE g.gd.id=?1 ", nativeQuery = false)
List<GdDetail> findByGd(Long gdId);
@Query(value = "SELECT g FROM GdDetail g WHERE g.gd.id=?1 and g.orderQty>0", nativeQuery = false)
List<GdDetail> findByGdAndQty(Long gdId);
@Query(value = "SELECT g FROM GdDetail g WHERE g.bigItem.id=?1 ", nativeQuery = false)
List<GdDetail> findByBigItem(Long bigItemId);
}

View File

@ -52,4 +52,6 @@ public interface PickDetailRepository extends JpaRepository<PickDetail, Long>, J
" UNION select a.* from data_pick_detail a INNER JOIN base_item b on a.item_id = b.id " +
"WHERE b.name = '前桶' and a.create_time > :time ", nativeQuery = true)
List<PickDetail> queryOutQHAllData(String time);
@Query(value = "SELECT p FROM PickDetail p WHERE p.pick.id=?1 and p.item.id=?2", nativeQuery = false)
List<PickDetail> findRepeat(Long pickId, Long itemId);
}

View File

@ -18,6 +18,9 @@ package com.youchain.businessdata.repository;
import com.youchain.businessdata.domain.Pick;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* @website https://eladmin.vip
@ -25,4 +28,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @date 2024-06-11
**/
public interface PickRepository extends JpaRepository<Pick, Long>, JpaSpecificationExecutor<Pick> {
@Query(value = "SELECT p FROM Pick p WHERE p.gdDetail.id=?1 and p.lineNo=?2", nativeQuery = false)
List<Pick> findRepeat(long gdDetailId,int no);
}

View File

@ -66,7 +66,7 @@ public class MesController {
/* 验证BOM*/
BigBom bigBom=verifiedBigBom(bigItem,item,itemDate.getItemQty());
/* 添加工单明细*/
GdDetail gdDetail = gdDetailService.save(gd,orderType,bigItem,zcData.getCompleteQty(),item,itemDate.getItemQty());
GdDetail gdDetail = gdDetailService.save(zcData.getLineNo(),gd,orderType,bigItem,zcData.getCompleteQty(),item,itemDate.getItemQty(),itemDate.getItemQty()*zcData.getCompleteQty());
}
}
}
@ -77,7 +77,7 @@ public class MesController {
/* 验证单品物料*/
Item item=verifiedItem(itemDate.getItemCode(),itemDate.getItemName());
/* 添加工单明细*/
GdDetail gdDetail = gdDetailService.save(gd,orderType,null,null,item,itemDate.getItemQty());
GdDetail gdDetail = gdDetailService.save(itemDate.getLineNo(),gd,orderType,null,null,item,itemDate.getItemQty(),itemDate.getItemQty());
}
}
/* 生成 出库明细*/

View File

@ -86,13 +86,15 @@ public interface GdDetailService {
/**
*
* @param lineNo
* @param gd
* @param orderType
* @param bigItem
* @param completeQty
* @param item
* @param itemQty
* @param orderQty
* @return
*/
GdDetail save(Gd gd, String orderType, BigItem bigItem, Double completeQty, Item item, Double itemQty);
GdDetail save(int lineNo,Gd gd, String orderType, BigItem bigItem, Double completeQty, Item item, Double itemQty,Double orderQty);
}

View File

@ -17,6 +17,7 @@ package com.youchain.businessdata.service.dto;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
import com.youchain.businessdata.domain.Gd;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
@ -46,7 +47,7 @@ public class GdDetailDto implements Serializable {
private Timestamp updateTime;
/** 行号 */
private Long lineNo;
private int lineNo;
/** 关联物料 */
private Long itemId;
@ -61,6 +62,8 @@ public class GdDetailDto implements Serializable {
/** 总成套数 */
private Long bigItemQty;
private Gd gd;
private Double orderQty;
/** 单据类型 */
private String orderType;

View File

@ -17,6 +17,7 @@ package com.youchain.businessdata.service.dto;
import com.youchain.basicdata.service.dto.ItemDto;
import com.youchain.basicdata.service.dto.ItemSmallDto;
import com.youchain.businessdata.domain.Pick;
import com.youchain.modules.system.domain.Dept;
import lombok.Data;
import java.sql.Timestamp;
@ -35,13 +36,13 @@ public class PickDetailDto implements Serializable {
private Long id;
/** 订单序号 */
private Long pickId;
private PickDto pick;
/** 物料序号 */
private ItemDto item;
/** 行号 */
private Long lineNo;
/** 封包系数 */
private int lineNo;
/** po订单号 */
private String po;
@ -100,7 +101,7 @@ public class PickDetailDto implements Serializable {
/** 来源名称 */
private String sourceName;
/** 来源序号 */
/** 封包系数 */
private Long sourceId;
/** 创建人 */

View File

@ -15,6 +15,8 @@
*/
package com.youchain.businessdata.service.dto;
import com.youchain.businessdata.domain.GdDetail;
import com.youchain.modules.system.service.dto.DeptDto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
@ -45,6 +47,7 @@ public class PickDto implements Serializable {
/** 仓库ID */
private Long deptId;
private DeptDto dept;
/** 出库单头 */
private String code;
@ -56,5 +59,6 @@ public class PickDto implements Serializable {
private String status;
/** 关联工单明细 */
private String gdDetaiId;
private Long gdDetailId;
private GdDetail gdDetail;
}

View File

@ -114,7 +114,7 @@ public class GdDetailServiceImpl implements GdDetailService {
}
@Override
public GdDetail save(Gd gd, String orderType, BigItem bigItem, Double completeQty, Item item, Double itemQty) {
public GdDetail save(int lineNo,Gd gd, String orderType, BigItem bigItem, Double completeQty, Item item, Double itemQty,Double orderQty) {
GdDetail gdDetail= new GdDetail();
List<GdDetail> gdList;
if (orderType.equals(BaseStatus.GD_TYPE_DP)){
@ -126,8 +126,10 @@ public class GdDetailServiceImpl implements GdDetailService {
gdDetail=gdList.get(0);
}
gdDetail.setGd(gd);
gdDetail.setLineNo(lineNo);
gdDetail.setItem(item);
gdDetail.setItemQty(itemQty);
gdDetail.setOrderQty(orderQty);
gdDetail.setBigItem(bigItem);
gdDetail.setBigItemQty(completeQty);
gdDetail.setDept(deptService.isDept());

View File

@ -34,12 +34,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap;
/**
* @website https://eladmin.vip
@ -137,13 +135,26 @@ public class GdServiceImpl implements GdService {
@Override
public void addPickDetail(Gd gd) {
int no=1;// 序号
List<GdDetail> gdDetailList=gdDetailRepository.findByGd(gd.getId());
for(GdDetail gdDetail : gdDetailList) {
/*生成出库单*/
Pick pick = pickService.save(gdDetail,no);
no=no+1;
/*生成出库明细*/
pickDetailService.save(pick);
while (true){
List<GdDetail> gdDetailList=gdDetailRepository.findByGdAndQty(gd.getId());
if (gdDetailList.size()<1){
break;
}else {
List<Integer> arr=new ArrayList<Integer>();//已分配过的行号
for (GdDetail gdDetail : gdDetailList) {
/*本次循环已拆分过 工单明细行*/
if (arr.contains(gdDetail.getLineNo())){
continue;
}
/*生成出库单*/
Pick pick = pickService.save(gdDetail, no);
/* 去重*/
arr.add(gdDetail.getLineNo());
no=no+1;
/*生成出库明细*/
pickDetailService.save(pick);
}
}
}
}
}

View File

@ -25,9 +25,7 @@ import com.youchain.basicdata.service.ItemService;
import com.youchain.basicdata.service.PointService;
import com.youchain.basicdata.service.dto.ItemDto;
import com.youchain.businessdata.domain.*;
import com.youchain.businessdata.repository.AgvTaskRepository;
import com.youchain.businessdata.repository.InventoryRepository;
import com.youchain.businessdata.repository.TaskRepository;
import com.youchain.businessdata.repository.*;
import com.youchain.businessdata.service.InventoryService;
import com.youchain.businessdata.service.TaskService;
import com.youchain.businessdata.service.dto.InventoryDto;
@ -36,7 +34,6 @@ import com.youchain.modules.quartz.utils.TimeNumberUtils;
import com.youchain.modules.system.domain.Dept;
import com.youchain.utils.*;
import lombok.RequiredArgsConstructor;
import com.youchain.businessdata.repository.PickDetailRepository;
import com.youchain.businessdata.service.PickDetailService;
import com.youchain.businessdata.service.dto.PickDetailDto;
import com.youchain.businessdata.service.dto.PickDetailQueryCriteria;
@ -67,6 +64,7 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST;
@RequiredArgsConstructor
public class PickDetailServiceImpl implements PickDetailService {
private final PickDetailRepository pickDetailRepository;
private final GdDetailRepository gdDetailRepository;
private final PickDetailMapper pickDetailMapper;
private final InventoryService inventoryService;
private final BoxRepository boxRepository;
@ -320,7 +318,7 @@ public class PickDetailServiceImpl implements PickDetailService {
public PickDetail createPickDetail(Item item,String po) {
PickDetail d= new PickDetail();
d.setItem(item);
d.setLineNo(1l);
d.setLineNo(1);
d.setStatus(BizStatus.OPEN);
d.setOrderQty(item.getExtendD1());
d.setDept(item.getDept());
@ -334,7 +332,37 @@ public class PickDetailServiceImpl implements PickDetailService {
@Override
public void save(Pick pick) {
GdDetail gdDetail=pick.getGdDetail();
gdDetail.getItem();
List<GdDetail> gdDetailList;
if (pick.getGdDetail().getBigItem()!=null) {
/* 成套物料 */
gdDetailList = gdDetailRepository.findByBigItem(pick.getGdDetail().getBigItem().getId());
}else {
/* 单品物料*/
gdDetailList=new ArrayList<>();
gdDetailList.add(pick.getGdDetail());
}
for (GdDetail gdDetail:gdDetailList){
int fb=1;//封包系数
PickDetail pickDetail=new PickDetail();
List<PickDetail> pickDetailList = pickDetailRepository.findRepeat(pick.getId(),gdDetail.getItem().getId());
if (pickDetailList.size()>0){
pickDetail=pickDetailList.get(0);
}
pickDetail.setDept(UserUtils.isDept);
pickDetail.setPick(pick);
pickDetail.setItem(gdDetail.getItem());
if (gdDetail.getBigItem()==null){
/*如果为单品物料 默认封包系数10*/
fb=10;
pickDetail.setOrderQty(1d*fb);
}else {
pickDetail.setOrderQty(gdDetail.getItemQty()*fb);
}
pickDetail.setLineNo(fb);
pickDetailRepository.save(pickDetail);
/*更新待拆分数量*/
gdDetail.setOrderQty(gdDetail.getOrderQty()-pickDetail.getOrderQty());
gdDetailRepository.save(gdDetail);
}
}
}

View File

@ -98,11 +98,9 @@ public class PickServiceImpl implements PickService {
map.put("修改人", pick.getUpdateBy());
map.put("创建时间", pick.getCreateTime());
map.put("修改时间", pick.getUpdateTime());
map.put("仓库ID", pick.getDeptId());
map.put("出库单头", pick.getCode());
map.put("序号", pick.getLineNo());
map.put("状态", pick.getStatus());
map.put("关联工单明细", pick.getGdDetaiId());
list.add(map);
}
FileUtil.downloadExcel(list, response);
@ -111,11 +109,17 @@ public class PickServiceImpl implements PickService {
@Override
public Pick save(GdDetail gdDetail, int no) {
Pick pick=new Pick();
List<Pick> pickList = pickRepository.findRepeat(gdDetail.getId(),no);
if (pickList.size()>0){
pick=pickList.get(0);
}
pick.setGdDetail(gdDetail);
pick.setLineNo(no);
pick.setStatus(BizStatus.OPEN);
pick.setCode(gdDetail.getGd().getName()+"_"+no);
pick.setDept(UserUtils.getDept());
pick.setDept(UserUtils.isDept);
pickRepository.save(pick);
return pick;
}
}

View File

@ -0,0 +1,23 @@
package com.youchain.config.thread;
import com.youchain.modules.system.domain.Dept;
import com.youchain.modules.system.repository.DeptRepository;
import com.youchain.utils.BaseStatus;
import com.youchain.utils.UserUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class BaseComponent {
@Autowired
private DeptRepository deptRepository;
public BaseComponent(){
}
@PostConstruct
public void configUrlApi(){
UserUtils.isDept=deptRepository.findById(7l);
}
}

View File

@ -16,6 +16,7 @@
package com.youchain.modules.system.repository;
import com.youchain.modules.system.domain.Dept;
import com.youchain.modules.system.domain.Dict;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
@ -28,7 +29,8 @@ import java.util.Set;
* @date 2019-03-25
*/
public interface DeptRepository extends JpaRepository<Dept, Long>, JpaSpecificationExecutor<Dept> {
@Query(value = "SELECT d.* FROM sys_dept d WHERE d.dept_id = ?1 ", nativeQuery = true)
Dept findById(long id);
/**
* PID
* @param id pid

View File

@ -1,10 +1,15 @@
package com.youchain.utils;
import com.youchain.modules.system.domain.Dept;
import org.springframework.stereotype.Service;
/**
* @website https://eladmin.vip
* @author houjianlan
* @date 2023-08-16
**/
public interface BaseStatus {
@Service
public class BaseStatus {
/**
*
*/

View File

@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
public class UserUtils {
public static Dept isDept=null;
public static Dept getDept(){
List<Long> dataScopes = SecurityUtils.getCurrentUserDataScope();
Dept dept=new Dept();
@ -20,5 +21,6 @@ public class UserUtils {
dept.setId(0L);
}
return dept;
}
}