添加生产入库单功能
This commit is contained in:
parent
85c653e9dc
commit
3d5c33eb40
|
|
@ -0,0 +1,327 @@
|
|||
package com.nflg.wms.admin.controller;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.idev.excel.EasyExcel;
|
||||
import cn.idev.excel.enums.CellDataTypeEnum;
|
||||
import cn.idev.excel.metadata.data.ImageData;
|
||||
import cn.idev.excel.metadata.data.WriteCellData;
|
||||
import cn.idev.excel.write.metadata.WriteSheet;
|
||||
import cn.idev.excel.write.metadata.fill.FillConfig;
|
||||
import com.nflg.wms.admin.service.SapService;
|
||||
import com.nflg.wms.admin.util.NoUtil;
|
||||
import com.nflg.wms.admin.util.PdfGeneratorUtil;
|
||||
import com.nflg.wms.admin.util.QRCodeUtil;
|
||||
import com.nflg.wms.admin.util.ThymeleafUtil;
|
||||
import com.nflg.wms.common.pojo.ApiResult;
|
||||
import com.nflg.wms.common.pojo.PageData;
|
||||
import com.nflg.wms.common.pojo.dto.DeliverNormalOrderItemDTO;
|
||||
import com.nflg.wms.common.pojo.dto.ZWM00MB007DTO;
|
||||
import com.nflg.wms.common.pojo.qo.InProduceOrderGenerateMaterialsQO;
|
||||
import com.nflg.wms.common.pojo.qo.InProduceOrderSaveQO;
|
||||
import com.nflg.wms.common.pojo.qo.InProduceOrderSearchQO;
|
||||
import com.nflg.wms.common.pojo.vo.InProduceOrderMaterialVO;
|
||||
import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO;
|
||||
import com.nflg.wms.common.util.DateTimeUtil;
|
||||
import com.nflg.wms.common.util.UserUtil;
|
||||
import com.nflg.wms.common.util.VUtil;
|
||||
import com.nflg.wms.repository.entity.WmsBom;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrder;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrderItem;
|
||||
import com.nflg.wms.repository.service.IWmsBomService;
|
||||
import com.nflg.wms.repository.service.IWmsInProduceOrderItemService;
|
||||
import com.nflg.wms.repository.service.IWmsInProduceOrderService;
|
||||
import com.nflg.wms.starter.BaseController;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 生产订单入库管理
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/in/produce")
|
||||
public class InProduceOrderController extends BaseController {
|
||||
|
||||
private static final DecimalFormat DF = new DecimalFormat("0.00");
|
||||
@Resource
|
||||
private SapService sapService;
|
||||
@Resource
|
||||
private IWmsInProduceOrderService produceOrderService;
|
||||
@Resource
|
||||
private IWmsInProduceOrderItemService produceOrderItemService;
|
||||
@Resource
|
||||
private IWmsBomService bomService;
|
||||
|
||||
/**
|
||||
* 从SAP查询生产订单信息
|
||||
* @param no 生产订单号
|
||||
* @return 订单信息
|
||||
*/
|
||||
@GetMapping("searchFromSAP")
|
||||
public ApiResult<ZWM00MB007DTO> searchFromSAP(@Valid @RequestParam @NotBlank String no){
|
||||
return ApiResult.success(sapService.zwm00Mb007(no));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成物料列表
|
||||
* @param request 请求参数
|
||||
* @return 生成结果
|
||||
*/
|
||||
@PostMapping("generateMaterials")
|
||||
public ApiResult<InProduceOrderMaterialVO> generateMaterials(@Valid @RequestBody InProduceOrderGenerateMaterialsQO request) {
|
||||
InProduceOrderMaterialVO vo=new InProduceOrderMaterialVO()
|
||||
.setMaterialNo(request.getMATNR())
|
||||
.setMaterialDesc(request.getMAKTX())
|
||||
.setUnit(request.getMEINS())
|
||||
.setNum(request.getNum())
|
||||
.setFactoryNo(request.getPWERK())
|
||||
.setWarehouseNo(request.getLGORT())
|
||||
.setOderNum(request.getPSMNG());
|
||||
if (request.getList()){
|
||||
List<WmsBom> children = bomService.getChildren(request.getMATNR());
|
||||
vo.setChildren(children.stream().map(it -> new InProduceOrderMaterialVO()
|
||||
.setMaterialNo(it.getNo())
|
||||
.setMaterialDesc(it.getDescribe())
|
||||
.setUnit(request.getMEINS())
|
||||
.setNum(request.getNum().multiply(it.getNum()))
|
||||
.setFactoryNo(request.getPWERK())
|
||||
.setWarehouseNo(request.getLGORT())
|
||||
.setOderNum(request.getPSMNG())
|
||||
).toList()
|
||||
);
|
||||
}
|
||||
return ApiResult.success(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存
|
||||
* @param request 请求参数
|
||||
*/
|
||||
@Transactional
|
||||
@PostMapping("save")
|
||||
public ApiResult<Void> save(@Valid @RequestBody InProduceOrderSaveQO request){
|
||||
if (Objects.isNull(request.getId())){
|
||||
WmsInProduceOrder order=new WmsInProduceOrder()
|
||||
.setNo(NoUtil.getInProduceNo())
|
||||
.setOrderNo(request.getAUFNR())
|
||||
.setList(request.getList())
|
||||
.setCreateBy(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
produceOrderService.save(order);
|
||||
request.setId(order.getId());
|
||||
}else {
|
||||
WmsInProduceOrder order=produceOrderService.getById(request.getId());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
VUtil.trueThrowBusinessError(!Objects.equals(order.getState(),(short)0))
|
||||
.throwMessage("保存失败:非待收货状态");
|
||||
order.setUpdateBy(UserUtil.getUserName());
|
||||
order.setUpdateTime(LocalDateTime.now());
|
||||
produceOrderService.updateById(order);
|
||||
produceOrderItemService.deleteByOrderId(order.getId());
|
||||
}
|
||||
WmsInProduceOrderItem parent=new WmsInProduceOrderItem()
|
||||
.setOrderId(request.getId())
|
||||
.setParentId(0L)
|
||||
.setNum(request.getNum())
|
||||
.setMaterialNo(request.getMATNR())
|
||||
.setMaterialDesc(request.getMAKTX())
|
||||
.setUnit(request.getMEINS())
|
||||
.setFactoryNo(request.getPWERK())
|
||||
.setWarehouseNo(request.getLGORT())
|
||||
.setOrderNum(request.getPSMNG());
|
||||
// .setBatchNo(NoUtil.getBatchNo(""));
|
||||
produceOrderItemService.save(parent);
|
||||
if (request.getList()){
|
||||
List<WmsBom> children = bomService.getChildren(request.getMATNR());
|
||||
produceOrderItemService.saveBatch(children.stream().map(it -> new WmsInProduceOrderItem()
|
||||
.setOrderId(request.getId())
|
||||
.setParentId(parent.getId())
|
||||
.setNum(request.getNum().multiply(it.getNum()))
|
||||
.setMaterialNo(it.getNo())
|
||||
.setMaterialDesc(it.getDescribe())
|
||||
.setUnit(request.getMEINS())
|
||||
.setFactoryNo(request.getPWERK())
|
||||
.setWarehouseNo(request.getLGORT())
|
||||
.setOrderNum(request.getPSMNG())
|
||||
// .setBatchNo(NoUtil.getBatchNo(""))
|
||||
).toList()
|
||||
);
|
||||
}
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
* @param request 搜索参数
|
||||
* @return 搜索结果
|
||||
*/
|
||||
@PostMapping("search")
|
||||
public ApiResult<PageData<WmsInProduceOrder>> search(@Valid @RequestBody InProduceOrderSearchQO request){
|
||||
return ApiResult.success(produceOrderService.search(request));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单的物料列表
|
||||
* @param id 订单ID
|
||||
* @return 列表
|
||||
*/
|
||||
@GetMapping("getList")
|
||||
public ApiResult<InProduceOrderMaterialVO> getList(@Valid @RequestParam @NotNull Long id){
|
||||
List<WmsInProduceOrderItem> list=produceOrderItemService.getByOrderId(id);
|
||||
WmsInProduceOrderItem parent=list.stream().filter(item -> Objects.equals(item.getParentId(), 0L)).findFirst().get();
|
||||
InProduceOrderMaterialVO vo=new InProduceOrderMaterialVO()
|
||||
.setMaterialNo(parent.getMaterialNo())
|
||||
.setMaterialDesc(parent.getMaterialDesc())
|
||||
.setUnit(parent.getUnit())
|
||||
.setNum(parent.getNum())
|
||||
.setFactoryNo(parent.getFactoryNo())
|
||||
.setWarehouseNo(parent.getWarehouseNo())
|
||||
.setOderNum(parent.getOrderNum());
|
||||
vo.setChildren(list.stream()
|
||||
.filter(item -> Objects.equals(item.getParentId(), parent.getId()))
|
||||
.map(item -> new InProduceOrderMaterialVO()
|
||||
.setMaterialNo(item.getMaterialNo())
|
||||
.setMaterialDesc(item.getMaterialDesc())
|
||||
.setUnit(item.getUnit())
|
||||
.setNum(item.getNum())
|
||||
.setFactoryNo(item.getFactoryNo())
|
||||
.setWarehouseNo(item.getWarehouseNo())
|
||||
.setOderNum(item.getOrderNum())
|
||||
).toList()
|
||||
);
|
||||
return ApiResult.success(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @param id 订单ID
|
||||
*/
|
||||
@Transactional
|
||||
@GetMapping("delete")
|
||||
public ApiResult<Void> delete(@Valid @RequestParam @NotNull Long id){
|
||||
WmsInProduceOrder order=produceOrderService.getById(id);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
VUtil.trueThrowBusinessError(!Objects.equals(order.getState(),(short)0))
|
||||
.throwMessage("删除失败:非待收货状态");
|
||||
produceOrderService.removeById(id);
|
||||
produceOrderItemService.deleteByOrderId(id);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出物料条码pdf(逐个)
|
||||
* @param id 订单ID
|
||||
* @param type 1:逐个,2:一页
|
||||
*/
|
||||
@GetMapping("exportMaterialsPdf")
|
||||
public void exportMaterials(HttpServletResponse response, @Valid @RequestParam @NotNull Long id,@Valid @RequestParam @NotNull Integer type) throws Exception {
|
||||
WmsInProduceOrder order = produceOrderService.getById(id);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
List<WmsInProduceOrderItem> list = produceOrderItemService.getByOrderId(id);
|
||||
if (order.getList()) {
|
||||
list.removeIf(item -> Objects.equals(item.getParentId(), 0L));
|
||||
}
|
||||
List<DeliverNormalOrderItemDTO> datas = new ArrayList<>();
|
||||
for (WmsInProduceOrderItem item : list) {
|
||||
BigDecimal[] result = item.getNum().divideAndRemainder(BigDecimal.ONE);
|
||||
for (int i = 0, count = result[0].intValue(); i < count; i++) {
|
||||
DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO();
|
||||
dto.setMaterialNo(item.getMaterialNo());
|
||||
dto.setMaterialDesc(item.getMaterialDesc());
|
||||
dto.setExternalOrderNo(order.getOrderNo());
|
||||
dto.setRowNo("");
|
||||
dto.setIndex(i);
|
||||
dto.setPrintNo(IdUtil.getSnowflakeNextIdStr());
|
||||
if (i == count - 1 && result[1].compareTo(BigDecimal.ZERO) > 0) {
|
||||
dto.setPrintNum(DF.format(result[1]));
|
||||
} else {
|
||||
dto.setPrintNum(DF.format(BigDecimal.ONE));
|
||||
}
|
||||
dto.setBatchNo("");//NoUtil.getBatchNo("")
|
||||
dto.setQrCode("data:image/png;base64," + Base64.getEncoder().encodeToString(QRCodeUtil.generateQRCode(generateQRContent(dto, ""), 100, 100)));
|
||||
datas.add(dto);
|
||||
}
|
||||
}
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put("list", datas);
|
||||
if (Objects.equals(type,1)) {
|
||||
String html = ThymeleafUtil.generator("/template/qrcode/", "dp-1", ".html", variables);
|
||||
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
|
||||
PdfGeneratorUtil.generatePdf("普通物料条码(逐个)", html, baseUrl.toString(), response);
|
||||
}else {
|
||||
String html = ThymeleafUtil.generator("/template/qrcode/", "dp-2", ".html", variables);
|
||||
URL baseUrl = new ClassPathResource("template/qrcode/").getURL();
|
||||
PdfGeneratorUtil.generatePdf("普通物料条码(整张)", html, baseUrl.toString(), response);
|
||||
}
|
||||
}
|
||||
|
||||
private String generateQRContent(DeliverNormalOrderItemDTO order,String indexNo){
|
||||
String content= StrUtil.format("{}${}${}${}${}${}${}${}"
|
||||
, order.getPrintNo(), order.getExternalOrderNo(),order.getRowNo(),order.getMaterialNo(),order.getPrintNum()
|
||||
,order.getMaterialDesc(),order.getBatchNo(),Optional.ofNullable(indexNo).orElse(""));
|
||||
log.debug("二维码内容:"+ content);
|
||||
return content;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出报工单PDF
|
||||
* @param id 订单id
|
||||
*/
|
||||
@GetMapping("exportOrderPdf")
|
||||
public void exportDeliverOrder(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception {
|
||||
WmsInProduceOrder order = produceOrderService.getById(id);
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
List<WmsInProduceOrderItemVO> list = produceOrderItemService.getVOByOrderId(id);
|
||||
if (order.getList()) {
|
||||
list.removeIf(item -> Objects.equals(item.getParentId(), 0L));
|
||||
}
|
||||
WmsInProduceOrderItemVO first=list.get(0);
|
||||
Map<String, Object> info = new HashMap<>();
|
||||
info.put("no", order.getNo());
|
||||
info.put("factory", first.getFactoryNo());
|
||||
info.put("warehouse", first.getWarehouseNo());
|
||||
info.put("today", DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd"));
|
||||
WriteCellData<Void> writeCellData = new WriteCellData<>();
|
||||
writeCellData.setType(CellDataTypeEnum.EMPTY);
|
||||
ImageData imageData = new ImageData();
|
||||
imageData.setImageType(ImageData.ImageType.PICTURE_TYPE_PNG);
|
||||
imageData.setImage(QRCodeUtil.generateQRCode(order.getNo(), 100, 100));
|
||||
imageData.setTop(5);
|
||||
imageData.setRight(5);
|
||||
imageData.setBottom(5);
|
||||
imageData.setLeft(5);
|
||||
imageData.setRelativeFirstRowIndex(0);
|
||||
imageData.setRelativeFirstColumnIndex(0);
|
||||
imageData.setRelativeLastRowIndex(2);
|
||||
imageData.setRelativeLastColumnIndex(2);
|
||||
writeCellData.setImageDataList(List.of(imageData));
|
||||
info.put("qrCodeUrl", writeCellData);
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(order.getNo() + "生产入库单.xlsx", StandardCharsets.UTF_8));
|
||||
try (cn.idev.excel.ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(new ClassPathResource("template/生产入库单模版.xlsx").getInputStream()).build()) {
|
||||
WriteSheet writeSheet = EasyExcel.writerSheet().build();
|
||||
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
|
||||
excelWriter.fill(list, fillConfig, writeSheet);
|
||||
excelWriter.fill(info, writeSheet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -301,6 +301,8 @@ public class NormalOrderController extends BaseController {
|
|||
DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO();
|
||||
dto.setMaterialNo(order.getItemCode());
|
||||
dto.setMaterialDesc(order.getItemName());
|
||||
dto.setExternalOrderNo(order.getPoNum());
|
||||
dto.setRowNo(order.getPoLineNumber());
|
||||
dto.setIndex(0);
|
||||
dto.setPrintNo(order.getId() + "-" + 0);
|
||||
dto.setPrintNum(DF.format(order.getOrderQty()));
|
||||
|
|
|
|||
|
|
@ -93,13 +93,17 @@ public class SapService {
|
|||
|
||||
JCoFunction function = exec("ZWM00_MB107", parameters, tables);
|
||||
|
||||
JCoStructure sreturn = function.getExportParameterList().getStructure("E_RETURN");
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(sreturn.getString("TYPE"), "S"))
|
||||
.throwMessage("SAP错误:" + sreturn.getString("MSG"));
|
||||
JCoParameterList pl = function.getExportParameterList();
|
||||
VUtil.trueThrowBusinessError(StrUtil.isBlank(pl.getString("E_MBLNR")))
|
||||
.throwMessage("SAP错误");
|
||||
VUtil.trueHandle(StrUtil.isBlank(pl.getString("E_MBLNR"))).trueHandle(() -> {
|
||||
JCoTable table = function.getTableParameterList().getTable("T_RETURN");
|
||||
log.error("SAP错误信息:{}", table);
|
||||
});
|
||||
|
||||
return new Zwm00Mb107DTO()
|
||||
.setE_MBLNR(function.getExportParameterList().getString("E_MBLNR"))
|
||||
.setE_MJAHR(function.getExportParameterList().getString("E_MJAHR"));
|
||||
.setE_MBLNR(pl.getString("E_MBLNR"))
|
||||
.setE_MJAHR(pl.getString("E_MJAHR"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -32,4 +32,12 @@ public class NoUtil {
|
|||
public static String getOutPurchaseNo(){
|
||||
return "OP"+DateTimeUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss");
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成生产入库订单单号
|
||||
* @return 单号
|
||||
*/
|
||||
public static String getInProduceNo(){
|
||||
return "IP"+DateTimeUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,25 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import com.nflg.wms.common.pojo.dto.ZWM00MB007DTO;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class InProduceOrderGenerateMaterialsQO extends ZWM00MB007DTO {
|
||||
|
||||
/**
|
||||
* 是否清单件
|
||||
*/
|
||||
@NotNull
|
||||
private Boolean list;
|
||||
|
||||
/**
|
||||
* 收货数量
|
||||
*/
|
||||
@NotNull
|
||||
private BigDecimal num;
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class InProduceOrderSaveQO extends InProduceOrderGenerateMaterialsQO{
|
||||
|
||||
private Long id;
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package com.nflg.wms.common.pojo.qo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class InProduceOrderSearchQO extends SearchBaseQO{
|
||||
|
||||
/**
|
||||
* 报工单号或生产订单号
|
||||
*/
|
||||
private String no;
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class InProduceOrderMaterialVO {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 订单id
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 父级id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 物料编号
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 物料描述
|
||||
*/
|
||||
private String materialDesc;
|
||||
|
||||
/**
|
||||
* 订单数量
|
||||
*/
|
||||
private BigDecimal oderNum;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 工厂
|
||||
*/
|
||||
private String factoryNo;
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
private String batchNo;
|
||||
|
||||
private List<InProduceOrderMaterialVO> children;
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
package com.nflg.wms.common.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class WmsInProduceOrderItemVO {
|
||||
|
||||
/**
|
||||
* 父级id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 生产订单号
|
||||
*/
|
||||
private String orderNo;
|
||||
|
||||
/**
|
||||
* 物料编号
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 物料描述
|
||||
*/
|
||||
private String materialDesc;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 工厂
|
||||
*/
|
||||
private String factoryNo;
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String warehouseNo;
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package com.nflg.wms.repository.entity;
|
||||
|
||||
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 lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产入库订单
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("wms_in_produce_order")
|
||||
public class WmsInProduceOrder implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据号
|
||||
*/
|
||||
private String no;
|
||||
|
||||
/**
|
||||
* 生产订单号
|
||||
*/
|
||||
private String orderNo;
|
||||
|
||||
/**
|
||||
* 是否清单件
|
||||
*/
|
||||
private Boolean list;
|
||||
|
||||
/**
|
||||
* 状态,0:待收货;1:已收货;
|
||||
*/
|
||||
private Short state;
|
||||
|
||||
/**
|
||||
* 物料凭证编号
|
||||
*/
|
||||
private String mblnr;
|
||||
|
||||
/**
|
||||
* 物料凭证年度
|
||||
*/
|
||||
private String mjahr;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 最后更新人
|
||||
*/
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 最后更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package com.nflg.wms.repository.entity;
|
||||
|
||||
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 lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Accessors(chain = true)
|
||||
@TableName("wms_in_produce_order_item")
|
||||
public class WmsInProduceOrderItem implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 订单id
|
||||
*/
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 父级id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 物料编号
|
||||
*/
|
||||
private String materialNo;
|
||||
|
||||
/**
|
||||
* 物料描述
|
||||
*/
|
||||
private String materialDesc;
|
||||
|
||||
/**
|
||||
* 订单数量
|
||||
*/
|
||||
private BigDecimal orderNum;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal num;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 工厂
|
||||
*/
|
||||
private String factoryNo;
|
||||
|
||||
/**
|
||||
* 仓库
|
||||
*/
|
||||
private String warehouseNo;
|
||||
|
||||
/**
|
||||
* 批次号
|
||||
*/
|
||||
private String batchNo;
|
||||
}
|
||||
|
|
@ -3,6 +3,8 @@ package com.nflg.wms.repository.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nflg.wms.repository.entity.WmsBom;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 齐套 Mapper 接口
|
||||
|
|
@ -13,4 +15,5 @@ import com.nflg.wms.repository.entity.WmsBom;
|
|||
*/
|
||||
public interface WmsBomMapper extends BaseMapper<WmsBom> {
|
||||
|
||||
List<WmsBom> getChildren(String materialNo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.nflg.wms.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrderItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
public interface WmsInProduceOrderItemMapper extends BaseMapper<WmsInProduceOrderItem> {
|
||||
|
||||
List<WmsInProduceOrderItemVO> getVOByOrderId(Long id);
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.nflg.wms.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrder;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产入库订单 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
public interface WmsInProduceOrderMapper extends BaseMapper<WmsInProduceOrder> {
|
||||
|
||||
}
|
||||
|
|
@ -26,4 +26,6 @@ public interface IWmsBomService extends IService<WmsBom> {
|
|||
PageData<BomMaterialVO> search(@Valid BomSearchQO request);
|
||||
|
||||
List<BomMaterialVO> searchNonPage(@Valid BomSearchQO request);
|
||||
|
||||
List<WmsBom> getChildren(String materialNo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.nflg.wms.repository.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrderItem;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
public interface IWmsInProduceOrderItemService extends IService<WmsInProduceOrderItem> {
|
||||
|
||||
void deleteByOrderId(Long id);
|
||||
|
||||
List<WmsInProduceOrderItem> getByOrderId(@Valid @NotNull Long id);
|
||||
|
||||
List<WmsInProduceOrderItemVO> getVOByOrderId(@Valid @NotNull Long id);
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.nflg.wms.repository.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.nflg.wms.common.pojo.qo.InProduceOrderSearchQO;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrder;
|
||||
import jakarta.validation.Valid;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产入库订单 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
public interface IWmsInProduceOrderService extends IService<WmsInProduceOrder> {
|
||||
|
||||
IPage<WmsInProduceOrder> search(@Valid InProduceOrderSearchQO request);
|
||||
}
|
||||
|
|
@ -105,4 +105,9 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
|
|||
.toList()
|
||||
)).toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsBom> getChildren(String materialNo) {
|
||||
return baseMapper.getChildren(materialNo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
package com.nflg.wms.repository.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrderItem;
|
||||
import com.nflg.wms.repository.mapper.WmsInProduceOrderItemMapper;
|
||||
import com.nflg.wms.repository.service.IWmsInProduceOrderItemService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
@Service
|
||||
public class WmsInProduceOrderItemServiceImpl extends ServiceImpl<WmsInProduceOrderItemMapper, WmsInProduceOrderItem> implements IWmsInProduceOrderItemService {
|
||||
|
||||
@Override
|
||||
public void deleteByOrderId(Long id) {
|
||||
remove(new LambdaQueryWrapper<WmsInProduceOrderItem>().eq(WmsInProduceOrderItem::getOrderId, id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsInProduceOrderItem> getByOrderId(Long id) {
|
||||
return lambdaQuery().eq(WmsInProduceOrderItem::getOrderId, id).list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsInProduceOrderItemVO> getVOByOrderId(Long id) {
|
||||
return baseMapper.getVOByOrderId(id);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package com.nflg.wms.repository.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.nflg.wms.common.pojo.qo.InProduceOrderSearchQO;
|
||||
import com.nflg.wms.repository.entity.WmsInProduceOrder;
|
||||
import com.nflg.wms.repository.mapper.WmsInProduceOrderMapper;
|
||||
import com.nflg.wms.repository.service.IWmsInProduceOrderService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产入库订单 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
@Service
|
||||
public class WmsInProduceOrderServiceImpl extends ServiceImpl<WmsInProduceOrderMapper, WmsInProduceOrder> implements IWmsInProduceOrderService {
|
||||
|
||||
@Override
|
||||
public IPage<WmsInProduceOrder> search(InProduceOrderSearchQO request) {
|
||||
return lambdaQuery()
|
||||
.and(StrUtil.isNotBlank(request.getNo()),wrapper ->
|
||||
wrapper.like(WmsInProduceOrder::getNo, request.getNo())
|
||||
.or()
|
||||
.like(WmsInProduceOrder::getOrderNo, request.getNo())
|
||||
)
|
||||
.ge(Objects.nonNull(request.getStartDate()), WmsInProduceOrder::getCreateTime, request.getStartDate())
|
||||
.le(Objects.nonNull(request.getEndDate()), WmsInProduceOrder::getCreateTime, request.getEndDate())
|
||||
.page(new Page<>(request.getPage(), request.getPageSize()));
|
||||
}
|
||||
}
|
||||
|
|
@ -2,4 +2,10 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.wms.repository.mapper.WmsBomMapper">
|
||||
|
||||
<select id="getChildren" resultType="com.nflg.wms.repository.entity.WmsBom">
|
||||
SELECT b2.*
|
||||
FROM wms_bom b1
|
||||
INNER JOIN wms_bom b2 ON b2.parent_id=b1."id"
|
||||
WHERE b1."no"=#{materialNo}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<?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="com.nflg.wms.repository.mapper.WmsInProduceOrderItemMapper">
|
||||
|
||||
<select id="getVOByOrderId" resultType="com.nflg.wms.common.pojo.vo.WmsInProduceOrderItemVO">
|
||||
SELECT ipoi.*,ipo.order_no
|
||||
FROM wms_in_produce_order ipo
|
||||
INNER JOIN wms_in_produce_order_item ipoi ON ipo."id"=ipoi.order_id
|
||||
WHERE ipo."id"=#{id}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -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="com.nflg.wms.repository.mapper.WmsInProduceOrderMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -33,7 +33,7 @@ public class CodeGeneratorTest {
|
|||
)
|
||||
.strategyConfig(builder -> {
|
||||
builder
|
||||
.addInclude("basde_serial_number") //只生成指定表
|
||||
.addInclude("wms_in_produce_order_item") //只生成指定表
|
||||
.entityBuilder().idType(IdType.ASSIGN_ID)
|
||||
.enableLombok()
|
||||
.enableChainModel()
|
||||
|
|
|
|||
Loading…
Reference in New Issue