no message

main
暴炳林 2024-06-07 14:42:35 +08:00
parent 6884b7b96a
commit a10f08b432
11 changed files with 155 additions and 69 deletions

View File

@ -5,9 +5,9 @@ import lombok.Data;
@Data
public class ItemDate {
@ApiModelProperty(value ="物料代码",required = true,example = "xxx")
@ApiModelProperty(value ="物料代码",required = true,example = "物料代码")
String itemCode;
@ApiModelProperty(value ="物料名称",required = true,example = "xxx")
@ApiModelProperty(value ="物料名称",required = true,example = "物料名称")
String itemName;
@ApiModelProperty(value ="物料数量",required = true,example = "1")
Double itemQty=0d;

View File

@ -16,6 +16,7 @@
package com.youchain.basicdata.domain;
import com.youchain.base.BaseEntity;
import com.youchain.modules.system.domain.Dept;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
@ -54,11 +55,12 @@ public class BigBom extends BaseEntity implements Serializable {
@Column(name = "`quantity`")
@ApiModelProperty(value = "数量")
private Float quantity;
private Double quantity;
@Column(name = "`dept_id`")
@ApiModelProperty(value = "仓库ID")
private Long deptId;
@OneToOne
@JoinColumn(name = "dept_id")
@ApiModelProperty(value = "仓库")
private Dept dept;

View File

@ -16,8 +16,12 @@
package com.youchain.basicdata.repository;
import com.youchain.basicdata.domain.BigBom;
import com.youchain.basicdata.domain.Item;
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 +29,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @date 2024-02-21
**/
public interface BigBomRepository extends JpaRepository<BigBom, Long>, JpaSpecificationExecutor<BigBom> {
@Query(value = "SELECT b FROM BigBom b WHERE b.bigItem.id = ?1 and b.item.id=?2", nativeQuery = false)
List<BigBom> findRepeat(Long bigItemId, Long itemId);
}

View File

@ -16,8 +16,12 @@
package com.youchain.basicdata.repository;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
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 +29,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @date 2024-02-21
**/
public interface BigItemRepository extends JpaRepository<BigItem, Long>, JpaSpecificationExecutor<BigItem> {
@Query(value = "SELECT i FROM BigItem i WHERE i.code = ?1 and i.name=?2", nativeQuery = false)
List<BigItem> findRepeat(String completeCode, String completeName);
}

View File

@ -44,22 +44,6 @@ public class Gd extends BaseEntity implements Serializable {
@ApiModelProperty(value = "ID")
private Long id;
@Column(name = "`create_by`")
@ApiModelProperty(value = "创建人")
private String createBy;
@Column(name = "`update_by`")
@ApiModelProperty(value = "修改人")
private String updateBy;
@Column(name = "`create_time`")
@ApiModelProperty(value = "创建时间")
private Timestamp createTime;
@Column(name = "`update_time`")
@ApiModelProperty(value = "修改时间")
private Timestamp updateTime;
@Column(name = "`code`")
@ApiModelProperty(value = "工单编号")
private String code;

View File

@ -16,6 +16,10 @@
package com.youchain.businessdata.domain;
import com.youchain.base.BaseEntity;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
import com.youchain.basicdata.domain.Point;
import com.youchain.modules.system.domain.Dept;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
@ -41,47 +45,37 @@ public class GdDetail extends BaseEntity implements Serializable {
@Column(name = "`id`")
@ApiModelProperty(value = "ID")
private Long id;
@Column(name = "`create_by`")
@ApiModelProperty(value = "创建人")
private String createBy;
@Column(name = "`update_by`")
@ApiModelProperty(value = "修改人")
private String updateBy;
@Column(name = "`create_time`")
@ApiModelProperty(value = "创建时间")
private Timestamp createTime;
@Column(name = "`update_time`")
@ApiModelProperty(value = "修改时间")
private Timestamp updateTime;
@OneToOne
@JoinColumn(name = "`gd_id`",nullable = false)
@ApiModelProperty(value = "工单")
private Gd gd;
@Column(name = "`line_no`")
@ApiModelProperty(value = "行号")
private Long lineNo;
@Column(name = "`item_id`")
@ApiModelProperty(value = "关联物料")
private Long itemId;
@OneToOne
@JoinColumn(name = "`item_id`",nullable = false)
@ApiModelProperty(value = "单品物料")
private Item item;
@Column(name = "`item_qty`")
@ApiModelProperty(value = "订单数量")
private Long itemQty;
@Column(name = "`big_item_id`")
@ApiModelProperty(value = "总成代码")
private Long bigItemId;
private Double itemQty=0d;
@OneToOne
@JoinColumn(name = "`big_item_id`",nullable = true)
@ApiModelProperty(value = "成套物料")
private BigItem bigItem;
@Column(name = "`big_item_qty`")
@ApiModelProperty(value = "总成套数")
private Long bigItemQty;
private Double bigItemQty=0d;
@Column(name = "`order_type`")
@ApiModelProperty(value = "单据类型")
private Long orderType;
private String orderType;
@OneToOne
@JoinColumn(name = "`dept_id`",nullable = false)
@ApiModelProperty(value = "仓库")
private Dept dept;
public void copy(GdDetail source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}

View File

@ -15,9 +15,13 @@
*/
package com.youchain.businessdata.repository;
import com.youchain.businessdata.domain.Gd;
import com.youchain.businessdata.domain.GdDetail;
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 +29,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
* @date 2024-06-06
**/
public interface GdDetailRepository extends JpaRepository<GdDetail, Long>, JpaSpecificationExecutor<GdDetail> {
@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);
}

View File

@ -3,8 +3,13 @@ package com.youchain.businessdata.rest;
import com.youchain.RequestData.*;
import com.youchain.annotation.AnonymousAccess;
import com.youchain.annotation.Log;
import com.youchain.basicdata.domain.BigBom;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
import com.youchain.basicdata.repository.BigBomRepository;
import com.youchain.basicdata.repository.BigItemRepository;
import com.youchain.basicdata.repository.ItemRepository;
import com.youchain.basicdata.service.BigBomService;
import com.youchain.businessdata.domain.Gd;
import com.youchain.businessdata.domain.GdDetail;
import com.youchain.businessdata.service.GdDetailService;
@ -12,6 +17,7 @@ import com.youchain.businessdata.service.GdService;
import com.youchain.businessdata.service.dto.TaskQueryCriteria;
import com.youchain.exception.BadRequestException;
import com.youchain.exception.handler.ApiResult;
import com.youchain.modules.system.service.DeptService;
import com.youchain.utils.BaseStatus;
import com.youchain.utils.BizStatus;
import io.swagger.annotations.Api;
@ -34,7 +40,12 @@ import java.util.Set;
@Slf4j
public class MesController {
private final GdService gdService;
private final GdDetailService gdDetailService;
private final DeptService deptService;
private final BigBomService bigBomService;
private final ItemRepository itemRepository;
private final BigBomRepository bigBomRepository;
private final BigItemRepository bigItemRepository;
@PostMapping("/yclbl")
@Log("mes-原材料备料")
@ApiOperation("mes-原材料备料")
@ -43,22 +54,34 @@ public class MesController {
/* 添加工单单头*/
Gd gd = gdService.save(yclbl.getOrderNo(),yclbl.getTaskCode(),yclbl.getStation());
if (yclbl.getBlzc()!=null){
/*String orderType = BaseStatus.GD_TYPE_CT;
String orderType = BaseStatus.GD_TYPE_CT;
Set<ZcData> blzc = yclbl.getBlzc();
for (ZcData zcData : blzc) {
*//* 验证成套 物料*//*
Item bigItem=verifiedBigItem(zcData.getCompleteCode(),zcData.getCompleteName());
/* 验证成套 物料*/
BigItem bigItem=verifiedBigItem(zcData.getCompleteCode(),zcData.getCompleteName());
Set<ItemDate> itemDates=zcData.getBlzcmx();
for (ItemDate itemDate : itemDates) {
*//* 验证单品 物料*//*
/* 验证单品 物料*/
Item item=verifiedItem(itemDate.getItemCode(),itemDate.getItemName());
*//* 添加工单明细*//*
// GdDetail gdDetail = gdDetailService.save(gd.getId(),yc(),yclbl.getStation());
/* 验证BOM*/
BigBom bigBom=verifiedBigBom(bigItem,item,itemDate.getItemQty());
/* 添加工单明细*/
GdDetail gdDetail = gdDetailService.save(gd,orderType,bigItem,zcData.getCompleteQty(),item,itemDate.getItemQty());
}
}*/
}else if (yclbl.getBlzcmx()!=null){
String orderType = BaseStatus.GD_TYPE_DP;
}
}
if (yclbl.getBlzcmx()!=null){
String orderType = BaseStatus.GD_TYPE_DP;
Set<ItemDate> itemDateList=yclbl.getBlzcmx();
for (ItemDate itemDate:itemDateList){
/* 验证单品物料*/
Item item=verifiedItem(itemDate.getItemCode(),itemDate.getItemName());
/* 添加工单明细*/
GdDetail gdDetail = gdDetailService.save(gd,orderType,null,null,item,itemDate.getItemQty());
}
}
/* 生成 出库明细*/
addPickDetail(gd);
ApiResult apiResult=ApiResult.result(200,"成功",null);
return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus()));
}
@ -106,10 +129,10 @@ public class MesController {
}
/** 验证成套物料*/
private Item verifiedBigItem(String completeCode, String completeName) {
List<Item> itemList = itemRepository.findRepeat(completeCode,completeName);
if (itemList.size()>0){
return itemList.get(0);
private BigItem verifiedBigItem(String completeCode, String completeName) {
List<BigItem> bigItemList = bigItemRepository.findRepeat(completeCode,completeName);
if (bigItemList.size()>0){
return bigItemList.get(0);
}else {
throw new BadRequestException(HttpStatus.INTERNAL_SERVER_ERROR, "未维护成套物料"+completeCode);
}
@ -122,4 +145,24 @@ public class MesController {
throw new BadRequestException(HttpStatus.INTERNAL_SERVER_ERROR, "未维护单品物料"+itemCode);
}
}
private BigBom verifiedBigBom(BigItem bigItem, Item item, Double itemQty) {
List<BigBom> bigBomList = bigBomRepository.findRepeat(bigItem.getId(),item.getId());
if (bigBomList.size()>0){
return bigBomList.get(0);
}else {
// 添加BOM
BigBom bigBom= new BigBom();
bigBom.setBigItem(bigItem);
bigBom.setItem(item);
bigBom.setQuantity(itemQty);
bigBom.setDept(deptService.isDept());
bigBomRepository.save(bigBom);
return bigBom;
}
}
/** 拆分工单*/
private void splitGd(Gd gd) {
List<GdDetail> gdDetailList=gdDetailService.fingByDg(gd.getId());
}
}

View File

@ -15,6 +15,9 @@
*/
package com.youchain.businessdata.service;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
import com.youchain.businessdata.domain.Gd;
import com.youchain.businessdata.domain.GdDetail;
import com.youchain.businessdata.service.dto.GdDetailDto;
import com.youchain.businessdata.service.dto.GdDetailQueryCriteria;
@ -80,4 +83,16 @@ public interface GdDetailService {
* @throws IOException /
*/
void download(List<GdDetailDto> all, HttpServletResponse response) throws IOException;
/**
*
* @param gd
* @param orderType
* @param bigItem
* @param completeQty
* @param item
* @param itemQty
* @return
*/
GdDetail save(Gd gd, String orderType, BigItem bigItem, Double completeQty, Item item, Double itemQty);
}

View File

@ -15,6 +15,8 @@
*/
package com.youchain.businessdata.service.dto;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
@ -48,16 +50,18 @@ public class GdDetailDto implements Serializable {
/** 关联物料 */
private Long itemId;
private Item item;
/** 订单数量 */
private Long itemQty;
/** 总成代码 */
private Long bigItemId;
private BigItem bigItem;
/** 总成套数 */
private Long bigItemQty;
/** 单据类型 */
private Long orderType;
private String orderType;
}

View File

@ -15,11 +15,12 @@
*/
package com.youchain.businessdata.service.impl;
import com.youchain.basicdata.domain.BigItem;
import com.youchain.basicdata.domain.Item;
import com.youchain.businessdata.domain.Gd;
import com.youchain.businessdata.domain.GdDetail;
import com.youchain.utils.FileUtil;
import com.youchain.utils.PageUtil;
import com.youchain.utils.QueryHelp;
import com.youchain.utils.ValidationUtil;
import com.youchain.modules.system.service.DeptService;
import com.youchain.utils.*;
import lombok.RequiredArgsConstructor;
import com.youchain.businessdata.repository.GdDetailRepository;
import com.youchain.businessdata.service.GdDetailService;
@ -49,6 +50,7 @@ public class GdDetailServiceImpl implements GdDetailService {
private final GdDetailRepository gdDetailRepository;
private final GdDetailMapper gdDetailMapper;
private final DeptService deptService;
@Override
public Map<String,Object> queryAll(GdDetailQueryCriteria criteria, Pageable pageable){
@ -110,4 +112,27 @@ public class GdDetailServiceImpl implements GdDetailService {
}
FileUtil.downloadExcel(list, response);
}
@Override
public GdDetail save(Gd gd, String orderType, BigItem bigItem, Double completeQty, Item item, Double itemQty) {
GdDetail gdDetail= new GdDetail();
List<GdDetail> gdList;
if (orderType.equals(BaseStatus.GD_TYPE_DP)){
gdList=gdDetailRepository.findRepeat(gd.getId(),null,item.getId(),BaseStatus.GD_TYPE_DP);
}else {
gdList=gdDetailRepository.findRepeat(gd.getId(),bigItem.getId(),item.getId(),BaseStatus.GD_TYPE_CT);
}
if (gdList.size()>0){
gdDetail=gdList.get(0);
}
gdDetail.setGd(gd);
gdDetail.setItem(item);
gdDetail.setItemQty(itemQty);
gdDetail.setBigItem(bigItem);
gdDetail.setBigItemQty(completeQty);
gdDetail.setDept(deptService.isDept());
gdDetail.setOrderType(orderType);
gdDetailRepository.save(gdDetail);
return gdDetail;
}
}