feat: 一些优化

This commit is contained in:
曹鹏飞 2025-10-21 11:26:08 +08:00
parent d0d74ef354
commit 41275bcb64
56 changed files with 403 additions and 134 deletions

View File

@ -217,6 +217,7 @@ public class InCostCenterBackController extends BaseController {
.setId(IdUtil.getSnowflakeNextId())
.setTicketId(ticket.getId())
.setOrderItemId(item.getId())
.setLgpbe(request.getLgort())
.setLgpbe(StrUtil.join(",", it.getBinNos()))
.setNum(BigDecimal.ZERO);
ticketItems.add(ti);

View File

@ -77,6 +77,15 @@ public class ModelController extends BaseController {
return ApiResult.success(modelControllerService.search(request));
}
/**
* 获取机型详情
* @param id 机型id
*/
@GetMapping("getInfo")
public ApiResult<WmsModel> getInfo(@Valid @RequestParam @NotNull Long id) {
return ApiResult.success(modelControllerService.getInfo(id));
}
/**
* 获取机型列表
*/

View File

@ -242,13 +242,15 @@ public class OutAssistanceController extends BaseController {
.setUniqNo(qrCodeContent.getUniqNo())
.setFactoryNo(order.getWerks())
.setWarehouseNo(order.getLgort1())
.setUnit(item.getMeins())
.setNum(qrNum)
.setEbeln(order.getEbeln())
.setEbelp(item.getEbelp())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(Instant.now())
);
});
outAssistanceItemService.updateBatchById(datas);
outMaterialScanRecordRespository.saveAll(records);
outAssistanceTicketItemService.saveBatch(ticketItems);
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
@ -288,6 +290,7 @@ public class OutAssistanceController extends BaseController {
ticket.setMatDoc(dto.getMatDoc());
ticket.setDocYear(dto.getDocYear());
outAssistanceTicketService.save(ticket);
outMaterialScanRecordRespository.saveAll(records);
return ApiResult.success();
}

View File

@ -241,7 +241,6 @@ public class OutCostCenterController extends BaseController {
);
});
outCostcenterItemService.updateBatchById(datas);
outMaterialScanRecordRespository.saveAll(records);
outCostcenterTicketItemService.saveBatch(ticketItems);
inventoryService.out(records.stream()
.collect(Collectors.groupingBy(OutMaterialScanRecord::getKey))
@ -286,6 +285,7 @@ public class OutCostCenterController extends BaseController {
.set(WmsOutCostcenter::getSapError, "")
.eq(WmsOutCostcenter::getId, order.getId())
.update();
outMaterialScanRecordRespository.saveAll(records);
return ApiResult.success();
}

View File

@ -76,6 +76,15 @@ public class StorageController extends BaseController {
return ApiResult.success(storageControllerService.search(request));
}
/**
* 获取详情
* @param id 存储id
*/
@GetMapping("getInfo")
public ApiResult<StorageVO> getInfo(@Valid @RequestParam @NotNull Long id) {
return ApiResult.success(storageControllerService.getInfo(id));
}
/**
* 导入
* @param file 文件

View File

@ -94,10 +94,10 @@ public class StructuralPackageController extends BaseController {
}
/**
* 导出零件清单
* 导出零件清单packageId为空时导出模板
*/
@GetMapping("exportMaterials")
public void exportMaterials(HttpServletResponse response,@Valid @RequestParam @NotNull Long packageId) throws Exception {
public void exportMaterials(HttpServletResponse response, @Valid @RequestParam(required = false) Long packageId) throws Exception {
packageControllerService.exportMaterials(response,packageId);
}

View File

@ -186,20 +186,22 @@ public class StructuralPackageOrderController extends BaseController {
.setTotalWeight(BigDecimal.ZERO);
trays.add(tray);
}
BigDecimal itemNum = material.getNum();
items.add(new TrayItemVO()
.setNo(tray.getNo())
.setMaterialNo(material.getNo())
.setMaterialDesc(material.getName())
.setVersion(material.getVersion())
.setWeight(material.getWeight())
.setPlanNum(material.getNum().multiply(orderNum))
.setShipmentNum(material.getNum().multiply(num))
.setPlanNum(itemNum.multiply(orderNum))
.setShipmentNum(itemNum.multiply(num))
.setImage(material.getImage())
.setDrawingNo(material.getDrawingNo())
);
if (Objects.nonNull(material.getWeight())) {
tray.setTotalWeight(tray.getTotalWeight().add(material.getWeight()));
totalWeight = totalWeight.add(material.getWeight());
BigDecimal itemWeight = itemNum.multiply(material.getWeight());
tray.setTotalWeight(tray.getTotalWeight().add(itemWeight));
totalWeight = totalWeight.add(itemWeight);
}
}
return new GenerateTrayVO().setTrays(trays).setItems(items).setTotalWeight(totalWeight);

View File

@ -176,7 +176,7 @@ public class TransferCompanyController extends BaseController {
WmsTransferCompany order = transferCompanyService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
TransferCompanyInfoVO vo = Convert.convert(TransferCompanyInfoVO.class, order);
vo.setItems(Convert.toList(TransferCompanyItemVO.class, transferCompanyItemService.getList(id)));
vo.setItems(Convert.toList(TransferCompanyItemVO.class, transferCompanyItemService.getVOList(id)));
return ApiResult.success(vo);
}
@ -378,6 +378,7 @@ public class TransferCompanyController extends BaseController {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(records1)).throwMessage("未找到出库扫码记录");
List<InMaterialScanRecord> records = new ArrayList<>();
records1.forEach(record -> {
InSubmitItemQO itemQo = qo.getItems().stream().filter(item -> Objects.equals(item.getId(), record.getTicketItemId())).findFirst().orElse(null);
records.add(new InMaterialScanRecord()
.setSource(6)
.setSourceId(record.getSourceId())
@ -389,6 +390,7 @@ public class TransferCompanyController extends BaseController {
.setSerialNo(record.getSerialNo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(qo.getLgort1())
.setBinNos(Objects.isNull(itemQo) ? Collections.emptyList() : StrUtil.split(itemQo.getBinNos(), "/"))
.setUniqNo(record.getUniqNo())
.setRspos(record.getRspos())
.setNum(record.getNum())

View File

@ -173,7 +173,7 @@ public class TransferFactoryController extends BaseController {
WmsTransferFactory order = transferFactoryService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
TransferFactoryInfoVO vo = Convert.convert(TransferFactoryInfoVO.class, order);
vo.setItems(Convert.toList(TransferFactoryItemVO.class, transferFactoryItemService.getList(id)));
vo.setItems(Convert.toList(TransferFactoryItemVO.class, transferFactoryItemService.getVOList(id)));
return ApiResult.success(vo);
}
@ -360,6 +360,12 @@ public class TransferFactoryController extends BaseController {
.setSerialNo(record.getSerialNo())
.setFactoryNo(ticket.getWerks())
.setWarehouseNo(qo.getLgort1())
.setBinNos(StrUtil.split(qo.getItems()
.stream()
.filter(it -> Objects.equals(it.getId(), record.getTicketItemId()))
.findFirst()
.orElse(new InSubmitItemQO())
.getBinNos(), "/"))
.setUniqNo(record.getUniqNo())
.setRspos(record.getRspos())
.setNum(record.getNum())
@ -367,6 +373,11 @@ public class TransferFactoryController extends BaseController {
.setCreateTime(Instant.now())
);
});
transferFactoryTicketItemService.updateBatchById(qo.getItems().stream().map(it ->
new WmsTransferFactoryTicketItem()
.setId(it.getId())
.setBinNos1(it.getBinNos())
).toList());
inventoryService.in(records.stream()
.collect(Collectors.groupingBy(InMaterialScanRecord::getKey))
.values()
@ -379,7 +390,6 @@ public class TransferFactoryController extends BaseController {
.setNum(list.stream().map(InMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
);
inMaterialScanRecordRespository.saveAll(records);
List<TransferFactoryItemVO> ticketItems = transferFactoryTicketItemService.getList(ticket.getId());
ZWM00MB113DTO vo = sapService.zwm00_mb113(new ZWM00MB113QO()
.setIRsnum(ticket.getRsnum())
@ -413,6 +423,7 @@ public class TransferFactoryController extends BaseController {
.set(WmsTransferFactoryTicket::getState, 1)
.eq(WmsTransferFactoryTicket::getId, ticket.getId())
.update();
inMaterialScanRecordRespository.saveAll(records);
return ApiResult.success();
}

View File

@ -86,6 +86,15 @@ public class WarehouseController extends BaseController {
return ApiResult.success(warehouseControllerService.search(request));
}
/**
* 获取仓库详情
* @param id 仓库id
*/
@GetMapping("getInfo")
public ApiResult<WarehouseVO> getInfo(@Valid @RequestParam @NotNull Long id) {
return ApiResult.success(warehouseControllerService.getInfo(id));
}
/**
* 导入仓库
* @param file 文件

View File

@ -76,6 +76,15 @@ public class WorkbenchController extends BaseController {
return ApiResult.success(workbenchControllerService.search(request));
}
/**
* 获取机台详情
* @param id 机台id
*/
@GetMapping("getInfo")
public ApiResult<WmsWorkbench> getInfo(@Valid @RequestParam @NotNull Long id) {
return ApiResult.success(workbenchControllerService.getInfo(id));
}
/**
* 导入机台
* @param file 文件

View File

@ -141,17 +141,23 @@ public class BomControllerService {
if (Objects.isNull(pm)) {
sb.append("父级物料编号无效");
} else {
WmsBom pb = bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).eq(WmsBom::getNo, dto.getParentNo()).one();
WmsBom pb = bomForSave.stream()
.filter(it -> Objects.equals(it.getId(), 0L) && StrUtil.equals(it.getNo(), dto.getParentNo()))
.findFirst()
.orElse(null);
if (Objects.isNull(pb)) {
pb = new WmsBom()
.setId(IdUtil.getSnowflakeNextId())
.setNo(dto.getParentNo())
.setDrawingNo(pm.getDrawingNo())
.setDescribe(pm.getMaterialDesc())
.setNum(BigDecimal.ONE)
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
bomForSave.add(pb);
pb = bomService.lambdaQuery().eq(WmsBom::getParentId, 0L).eq(WmsBom::getNo, dto.getParentNo()).one();
if (Objects.isNull(pb)) {
pb = new WmsBom()
.setId(IdUtil.getSnowflakeNextId())
.setNo(dto.getParentNo())
.setDrawingNo(pm.getDrawingNo())
.setDescribe(pm.getMaterialDesc())
.setNum(BigDecimal.ONE)
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
bomForSave.add(pb);
}
}
bom.setParentId(pb.getId());
}

View File

@ -72,6 +72,9 @@ public class MaterialControllerService {
private PowerJobClient powerJobClient;
public void add(@Valid MaterialAddQO request) {
WmsMaterial old = materialService.getCurrent(request.getNo());
VUtil.trueThrowBusinessError(Objects.nonNull(old) && !old.getComplete())
.throwMessage("该物料存在草稿版本");
WmsMaterial wmsMaterial = Convert.convert(WmsMaterial.class, request);
wmsMaterial.setCreateBy(UserUtil.getUserName());
wmsMaterial.setCreateTime(LocalDateTime.now());
@ -82,7 +85,7 @@ public class MaterialControllerService {
WmsMaterial old = materialService.getById(request.getId());
VUtil.trueThrowBusinessError(Objects.isNull(old)).throwMessage("数据不存在!");
WmsMaterial wmsMaterial = Convert.convert(WmsMaterial.class, request);
if (StrUtil.isNotBlank(old.getImage()) && Objects.nonNull(old.getWeight())) {
if (old.getComplete()) {
wmsMaterial.setVersion(old.getVersion() + 1);
wmsMaterial.setCreateBy(UserUtil.getUserName());
wmsMaterial.setCreateTime(LocalDateTime.now());
@ -159,7 +162,7 @@ public class MaterialControllerService {
pics.add(name);
} else {
WmsMaterial wmsMaterial = materialService.getCurrent(materialNo);
if (Objects.isNull(wmsMaterial) || StrUtil.isNotBlank(wmsMaterial.getImage()))
if (Objects.isNull(wmsMaterial) || wmsMaterial.getComplete())
{
wmsMaterial = new WmsMaterial()
.setId(null)
@ -261,9 +264,14 @@ public class MaterialControllerService {
sb.append("SAP料号无效;");
} else {
MaterialVO currentMaterial = dbMaterials.stream().filter(m -> StrUtil.equals(m.getNo(), dto.getNo())).findFirst().orElse(null);
if (Objects.isNull(currentMaterial) || (StrUtil.isNotBlank(currentMaterial.getImage()) && Objects.nonNull(currentMaterial.getWeight()))) {
if (Objects.isNull(currentMaterial) || currentMaterial.getComplete()) {
material.setCreateBy(UserUtil.getUserName());
material.setCreateTime(LocalDateTime.now());
if (Objects.isNull(currentMaterial)) {
material.setVersion(1);
} else {
material.setVersion(currentMaterial.getVersion() + 1);
}
forAdd.add(material);
} else {
material.setId(currentMaterial.getId());

View File

@ -166,4 +166,8 @@ public class ModelControllerService {
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
public WmsModel getInfo(Long id) {
return modelService.getById(id);
}
}

View File

@ -934,8 +934,10 @@ public class SapService {
* @return AllocationOrderDTO对象列表包含查询到的转储清单信息
*/
public List<AllocationOrderDTO> zwm3a15(AllocationOrderQO query) {
// 参数校验检查查询对象和物料明细是否为空
VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(query.getEbeln())
&& (StrUtil.isBlank(query.getWerks()) || Objects.isNull(query.getEndDate())))
.throwMessage("单号为空时,工厂和需求日期不能为空");
// 构造函数调用所需的输入参数
Map<String, Object> parameters = new HashMap<>();
parameters.put("I_WERKS", query.getWerks());
@ -973,8 +975,9 @@ public class SapService {
* @return 调拨订单DTO列表包含查询到的调拨清单信息
*/
public List<TransferOrderDTO> zwm3a16(TransferOrderQO query) {
// 参数校验检查查询对象和物料明细是否为空
VUtil.trueThrowBusinessError(Objects.isNull(query)).throwMessage("查询内容不可以为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(query.getRsnum())
&& (StrUtil.isBlank(query.getWerks()) || Objects.isNull(query.getEndDate())))
.throwMessage("单号为空时,工厂和需求日期不能为空");
// 构造函数调用所需的输入参数
Map<String, Object> parameters = new HashMap<>();

View File

@ -224,4 +224,8 @@ public class StorageControllerService {
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
public StorageVO getInfo(Long id) {
return storageService.getInfo(id);
}
}

View File

@ -178,23 +178,37 @@ public class StructuralPackageControllerService {
}
public void exportMaterials(HttpServletResponse response, Long packageId) throws IOException {
PackageVO vo = packageService.getInfo(packageId);
List<PackageMaterialExcelExportDTO> datas = vo.getMaterialList().stream().map(info -> Convert.convert(PackageMaterialExcelExportDTO.class, info)).collect(Collectors.toList());
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(vo.getNo() + "零件清单导出.xlsx", StandardCharsets.UTF_8));
if (CollectionUtil.isEmpty(datas)) {
datas.add(new PackageMaterialExcelExportDTO()
.setNo("(必填)零件编码")
.setName("(必填)零件名称")
.setStation("(必填)工位序号")
.setTray("(必填)托盘序号")
.setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO)
.setVersion("(必填)图纸版本"));
if (Objects.isNull(packageId)) {
new Workbook()
.addSheet(new ListSheet<>(List.of(new PackageMaterialExcelExportDTO()
.setNo("(必填)零件编码")
.setName("(必填)零件名称")
.setStation("(必填)工位序号")
.setTray("(必填)托盘序号")
.setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO)
.setVersion("(必填)图纸版本"))))
.writeTo(response.getOutputStream());
} else {
PackageVO vo = packageService.getInfo(packageId);
VUtil.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("无效的钢构件");
List<PackageMaterialExcelExportDTO> datas = vo.getMaterialList().stream().map(info -> Convert.convert(PackageMaterialExcelExportDTO.class, info)).collect(Collectors.toList());
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(vo.getNo() + "零件清单导出.xlsx", StandardCharsets.UTF_8));
if (CollectionUtil.isEmpty(datas)) {
datas.add(new PackageMaterialExcelExportDTO()
.setNo("(必填)零件编码")
.setName("(必填)零件名称")
.setStation("(必填)工位序号")
.setTray("(必填)托盘序号")
.setWeight(BigDecimal.ZERO)
.setNum(BigDecimal.ZERO)
.setVersion("(必填)图纸版本"));
}
new Workbook()
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
new Workbook()
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
@Transactional
@ -267,6 +281,8 @@ public class StructuralPackageControllerService {
materialDTO.setVersion(Integer.valueOf(dto.getVersion()));
}
dto.setError(sb.toString());
materialDTO.setCreateBy(UserUtil.getUserName());
materialDTO.setCreateTime(DateTimeUtil.format(LocalDateTime.now()));
materialDTOS.add(materialDTO);
}
if (data.stream().noneMatch(it -> StrUtil.isNotBlank(it.getError()))) {
@ -387,6 +403,7 @@ public class StructuralPackageControllerService {
}
});
VUtil.trueThrowBusinessError(!sb.isEmpty()).throwMessage("数据校验失败:" + sb);
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(materials)).throwMessage("零件不能为空");
packageInfo.setWeight(materials.stream()
.map(m -> m.getWeight().multiply(m.getNum()))
.reduce(BigDecimal.ZERO, BigDecimal::add));

View File

@ -347,4 +347,8 @@ public class WarehouseControllerService {
}
return "共同步" + list.size() + "条数据";
}
public WarehouseVO getInfo(Long id) {
return warehouseService.getInfo(id);
}
}

View File

@ -159,4 +159,8 @@ public class WorkbenchControllerService {
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
public WmsWorkbench getInfo(Long id) {
return workbenchService.getById(id);
}
}

View File

@ -184,7 +184,7 @@
不锈钢304非金属联件和紧固件等
</td>
<td th:text="${item.meins}">PC</td>
<td th:text="${item.sqsl}">12.00</td>
<td th:text="${item.num}">12.00</td>
<td th:text="${item.werks}">1030</td>
<td th:text="${item.lgort}">0081</td>
<td th:text="${item.binNos1}">XL2D</td>

View File

@ -183,10 +183,10 @@
<td th:text="${item.maktx}" class="col-left">非金属联件和紧固件等 M6 DIN 982 不锈钢304</td>
<td th:text="${item.ekgrp}"></td>
<td th:text="${item.meins}">PC</td>
<td th:text="${item.sqsl2}">12.00</td>
<td th:text="${item.left}">12.00</td>
<td th:text="${item.lgpbe}">JGHW-01-0</td>
<td th:text="${item.lgpbe1}">JGHW-01-0</td>
<td th:text="${item.sqsl}">555.00</td>
<td th:text="${item.num}">555.00</td>
</tr>
</table>
</div>

View File

@ -1,6 +1,7 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
@ -26,7 +27,7 @@ public class BinAddQO {
/**
* 是否启用
*/
@NotBlank
@NotNull
private Boolean enable;
/**

View File

@ -2,6 +2,7 @@ package com.nflg.wms.common.pojo.qo;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.util.List;
@ -22,5 +23,6 @@ public class InSubmitQO {
private String lgort1;
@Valid
@NotEmpty
private List<InSubmitItemQO> items;
}

View File

@ -1,6 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@ -15,6 +15,6 @@ public class InventoryCheckTaskScanQO {
/**
* 二维码内容
*/
@NotBlank
@NotEmpty
private List<String> qrCode;
}

View File

@ -16,7 +16,7 @@ public class OutProduceSubmitQO {
/**
* 仓库编号
*/
// @NotBlank
@NotBlank
private String lgort;
/**

View File

@ -9,4 +9,9 @@ public class SearchDeliverOrderQO extends SearchBaseQO {
* 送货单号
*/
private String orderNo;
/**
* 完成状态
*/
private Boolean completed;
}

View File

@ -1,6 +1,5 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@ -15,7 +14,7 @@ public class StorageAddQO {
/**
* 物料id
*/
@NotBlank
@NotNull
private Long materialId;
/**

View File

@ -1,7 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
@ -15,7 +14,6 @@ import java.util.Objects;
public class TransferOrderQO extends PageQO {
//工厂
@NotBlank
private String werks;
//未过账 选中为X否则为空

View File

@ -5,6 +5,7 @@ import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Objects;
@Data
public class MaterialVO {
@ -86,4 +87,13 @@ public class MaterialVO {
}
return image.substring(image.lastIndexOf("."));
}
/**
* 是否完成
*/
private Boolean complete;
public Boolean getComplete() {
return StrUtil.isNotBlank(getImage()) && Objects.nonNull(getWeight());
}
}

View File

@ -81,25 +81,25 @@ public class TransferCompanyItemVO {
*/
private String lgpro;
/**
* 转出库存数量
*/
private BigDecimal labst;
// /**
// * 转出库存数量
// */
// private BigDecimal labst;
/**
* 申请数量
*/
private BigDecimal sqsl;
// /**
// * 申请数量
// */
// private BigDecimal sqsl;
/**
* 未发数量
*/
private BigDecimal sqsl2;
/**
* 实发数量
*/
private BigDecimal wamng;
// /**
// * 实发数量
// */
// private BigDecimal wamng;
/**
* 转出库位
@ -126,6 +126,20 @@ public class TransferCompanyItemVO {
*/
private BigDecimal num;
/**
* 已出库数量
*/
private BigDecimal outNum;
public BigDecimal getOutNum() {
return num.subtract(left);
}
/**
* 已入库数量
*/
private BigDecimal inNum;
/**
* 转入工厂
*/

View File

@ -61,15 +61,15 @@ public class TransferFactoryItemVO {
*/
private BigDecimal bdmng;
/**
* 未过帐数量
*/
private BigDecimal bdmng1;
// /**
// * 未过帐数量
// */
// private BigDecimal bdmng1;
/**
* 总过帐数量
*/
private BigDecimal enmng;
// /**
// * 总过帐数量
// */
// private BigDecimal enmng;
/**
* 项目文本
@ -91,10 +91,10 @@ public class TransferFactoryItemVO {
*/
private String mjahr;
/**
* 过帐数量
*/
private BigDecimal menge;
// /**
// * 过帐数量
// */
// private BigDecimal menge;
/**
* 凭证中的过帐日期
@ -106,6 +106,25 @@ public class TransferFactoryItemVO {
*/
private BigDecimal num;
/**
* 剩余数量
*/
private BigDecimal left;
/**
* 已出库数量
*/
private BigDecimal outNum;
public BigDecimal getOutNum() {
return num.subtract(left);
}
/**
* 已入库数量
*/
private BigDecimal inNum;
/**
* 调出仓
*/

View File

@ -1,6 +1,8 @@
package com.nflg.wms.repository.entity;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Getter;
import lombok.Setter;
@ -10,6 +12,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* <p>
@ -104,4 +107,14 @@ public class WmsMaterial implements Serializable {
* 打包要求
*/
private String requirement;
/**
* 是否完成
*/
@TableField(exist = false)
private Boolean complete;
public Boolean getComplete() {
return StrUtil.isNotBlank(getImage()) && Objects.nonNull(getWeight());
}
}

View File

@ -31,4 +31,6 @@ public interface WmsStorageMapper extends BaseMapper<WmsStorage> {
String getBinNos(String materialNo, String factoryNo, String warehouseNo);
List<StorageVO> searchNonSync();
StorageVO getInfo(Long id);
}

View File

@ -1,8 +1,11 @@
package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.wms.common.pojo.vo.TransferCompanyItemVO;
import com.nflg.wms.repository.entity.WmsTransferCompanyItem;
import java.util.List;
/**
* <p>
* Mapper 接口
@ -12,4 +15,5 @@ import com.nflg.wms.repository.entity.WmsTransferCompanyItem;
*/
public interface WmsTransferCompanyItemMapper extends BaseMapper<WmsTransferCompanyItem> {
List<TransferCompanyItemVO> getVOList(Long id);
}

View File

@ -1,8 +1,11 @@
package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.wms.common.pojo.vo.TransferFactoryItemVO;
import com.nflg.wms.repository.entity.WmsTransferFactoryItem;
import java.util.List;
/**
* <p>
* Mapper 接口
@ -12,4 +15,5 @@ import com.nflg.wms.repository.entity.WmsTransferFactoryItem;
*/
public interface WmsTransferFactoryItemMapper extends BaseMapper<WmsTransferFactoryItem> {
List<TransferFactoryItemVO> getVOList(Long id);
}

View File

@ -30,4 +30,6 @@ public interface WmsWarehouseMapper extends BaseMapper<WmsWarehouse> {
List<WarehouseSimpleVO> getEnableList(String factoryNo);
List<WarehouseVO> getListByIds(List<Long> list);
WarehouseVO getInfo(Long id);
}

View File

@ -42,4 +42,6 @@ public interface IWmsStorageService extends IService<WmsStorage> {
Set<String> getBinNos(String materialNo, @NotBlank String factoryNo, String warehouseNo);
List<StorageVO> searchNonSync();
StorageVO getInfo(Long id);
}

View File

@ -1,9 +1,8 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.vo.TransferCompanyItemVO;
import com.nflg.wms.repository.entity.WmsTransferCompanyItem;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import java.util.List;
@ -16,5 +15,7 @@ import java.util.List;
*/
public interface IWmsTransferCompanyItemService extends IService<WmsTransferCompanyItem> {
List<WmsTransferCompanyItem> getList(@Valid @NotNull Long id);
List<WmsTransferCompanyItem> getList(Long id);
List<TransferCompanyItemVO> getVOList(Long id);
}

View File

@ -1,9 +1,8 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.vo.TransferFactoryItemVO;
import com.nflg.wms.repository.entity.WmsTransferFactoryItem;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import java.util.List;
@ -16,5 +15,7 @@ import java.util.List;
*/
public interface IWmsTransferFactoryItemService extends IService<WmsTransferFactoryItem> {
List<WmsTransferFactoryItem> getList(@Valid @NotNull Long id);
List<WmsTransferFactoryItem> getList(Long id);
List<TransferFactoryItemVO> getVOList(Long id);
}

View File

@ -41,4 +41,6 @@ public interface IWmsWarehouseService extends IService<WmsWarehouse> {
List<WarehouseSimpleVO> getEnableList(String factoryNo);
List<WarehouseVO> getListByIds(List<Long> list);
WarehouseVO getInfo(Long id);
}

View File

@ -93,6 +93,7 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
List<WmsBom> boms = lambdaQuery()
.like(StrUtil.isNotBlank(request.getNo()), WmsBom::getNo, request.getNo())
.like(StrUtil.isNotBlank(request.getDescribe()), WmsBom::getDescribe, request.getDescribe())
.orderByDesc(WmsBom::getId)
.list();
Set<Long> parentIds = boms.stream().map(WmsBom::getParentId).filter(parentId -> !Objects.equals(parentId, 0L)).collect(Collectors.toSet());
if (CollectionUtil.isNotEmpty(parentIds)) {
@ -101,7 +102,7 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
boms.addAll(listByIds(parentIds));
}
}
return boms.stream()
List<BomMaterialVO> all = boms.stream()
.filter(it -> it.getParentId() == 0L)
.sorted(Comparator.comparing(WmsBom::getId))
.skip((long) (request.getPage() - 1) * request.getPageSize())
@ -120,22 +121,38 @@ public class WmsBomServiceImpl extends ServiceImpl<WmsBomMapper, WmsBom> impleme
.setUpdateTime(it.getUpdateTime())
.setChildren(boms.stream()
.filter(child -> child.getParentId().equals(it.getId()))
.map(child -> {
return new BomMaterialVO()
.setId(child.getId())
.setParentId(child.getParentId())
.setMaterialNo(child.getNo())
.setMaterialDesc(child.getDescribe())
.setDrawingNo(child.getDrawingNo())
.setNum(child.getNum())
.setMaterialWeight(child.getWeight())
.setCreateBy(child.getCreateBy())
.setCreateTime(child.getCreateTime())
.setUpdateBy(child.getUpdateBy())
.setUpdateTime(child.getUpdateTime());
})
.map(this::convert)
.toList()
)).toList();
)
)
.toList();
all.forEach(it -> {
if (CollectionUtil.isEmpty(it.getChildren())) {
it.setChildren(lambdaQuery()
.eq(WmsBom::getParentId, it.getId())
.list()
.stream()
.map(this::convert)
.toList()
);
}
});
return all;
}
private BomMaterialVO convert(WmsBom child) {
return new BomMaterialVO()
.setId(child.getId())
.setParentId(child.getParentId())
.setMaterialNo(child.getNo())
.setMaterialDesc(child.getDescribe())
.setDrawingNo(child.getDrawingNo())
.setNum(child.getNum())
.setMaterialWeight(child.getWeight())
.setCreateBy(child.getCreateBy())
.setCreateTime(child.getCreateTime())
.setUpdateBy(child.getUpdateBy())
.setUpdateTime(child.getUpdateTime());
}
@Override

View File

@ -33,6 +33,7 @@ public class WmsSrmOrderServiceImpl extends ServiceImpl<WmsSrmOrderMapper, WmsSr
.eq(StrUtil.isNotBlank(request.getOrderNo()),WmsSrmOrder::getNoteNum, request.getOrderNo())
.ge(Objects.nonNull(request.getStartDate()), WmsSrmOrder::getCreateTime, request.getStartDate())
.le(Objects.nonNull(request.getEndDate()), WmsSrmOrder::getCreateTime, request.getEndDate())
.eq(Objects.nonNull(request.getCompleted()), WmsSrmOrder::getIsCompleted, request.getCompleted())
.orderByDesc(WmsSrmOrder::getId)
.page(new Page<>(request.getPage(),request.getPageSize()));
}

View File

@ -107,4 +107,9 @@ public class WmsStorageServiceImpl extends ServiceImpl<WmsStorageMapper, WmsStor
public List<StorageVO> searchNonSync() {
return baseMapper.searchNonSync();
}
@Override
public StorageVO getInfo(Long id) {
return baseMapper.getInfo(id);
}
}

View File

@ -29,7 +29,10 @@ public class WmsStructuralPackageOrderTrayItemServiceImpl extends ServiceImpl<Wm
@Override
public List<WmsStructuralPackageOrderTrayItem> getList(Long id) {
return lambdaQuery().eq(WmsStructuralPackageOrderTrayItem::getOrderId, id).list();
return lambdaQuery()
.eq(WmsStructuralPackageOrderTrayItem::getOrderId, id)
.orderByAsc(WmsStructuralPackageOrderTrayItem::getId)
.list();
}
@Override

View File

@ -1,6 +1,7 @@
package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.vo.TransferCompanyItemVO;
import com.nflg.wms.repository.entity.WmsTransferCompanyItem;
import com.nflg.wms.repository.mapper.WmsTransferCompanyItemMapper;
import com.nflg.wms.repository.service.IWmsTransferCompanyItemService;
@ -22,4 +23,9 @@ public class WmsTransferCompanyItemServiceImpl extends ServiceImpl<WmsTransferCo
public List<WmsTransferCompanyItem> getList(Long id) {
return lambdaQuery().eq(WmsTransferCompanyItem::getOrderId, id).list();
}
@Override
public List<TransferCompanyItemVO> getVOList(Long id) {
return baseMapper.getVOList(id);
}
}

View File

@ -1,6 +1,7 @@
package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.vo.TransferFactoryItemVO;
import com.nflg.wms.repository.entity.WmsTransferFactoryItem;
import com.nflg.wms.repository.mapper.WmsTransferFactoryItemMapper;
import com.nflg.wms.repository.service.IWmsTransferFactoryItemService;
@ -22,4 +23,9 @@ public class WmsTransferFactoryItemServiceImpl extends ServiceImpl<WmsTransferFa
public List<WmsTransferFactoryItem> getList(Long id) {
return lambdaQuery().eq(WmsTransferFactoryItem::getOrderId, id).list();
}
@Override
public List<TransferFactoryItemVO> getVOList(Long id) {
return baseMapper.getVOList(id);
}
}

View File

@ -115,4 +115,9 @@ public class WmsWarehouseServiceImpl extends ServiceImpl<WmsWarehouseMapper, Wms
public List<WarehouseVO> getListByIds(List<Long> list) {
return baseMapper.getListByIds(list);
}
@Override
public WarehouseVO getInfo(Long id) {
return baseMapper.getInfo(id);
}
}

View File

@ -10,7 +10,8 @@
</select>
<select id="search" resultType="com.nflg.wms.common.pojo.vo.InCostcenterBackVO">
SELECT icbt.id,icbt."no" AS "ticket_no",icbt.create_by,icbt.create_time,icbt.mat_doc,icbt.doc_year,icb.*
SELECT icbt.id,icbt."no" AS "ticket_no",icbt.create_by,icbt.create_time,icbt.mat_doc,icbt.doc_year,icbt.lgort
,icb.*
FROM wms_in_costcenter_back_ticket icbt
INNER JOIN wms_in_costcenter_back icb ON icbt.order_id=icb."id"
<where>
@ -21,19 +22,19 @@
and icbt.create_time &lt;= #{request.endDate}
</if>
<if test="request.no != null and request.no!=''">
AND icb."no" LIKE CONCAT('%',#{request.no},'%')
AND icb."no" ilike CONCAT('%',#{request.no},'%')
</if>
<if test="request.aufnr != null and request.aufnr!=''">
AND icb."aufnr" LIKE CONCAT('%',#{request.aufnr},'%')
AND icb."aufnr" ilike CONCAT('%',#{request.aufnr},'%')
</if>
<if test="request.werks != null and request.werks!=''">
AND icb."werks" LIKE CONCAT('%',#{request.werks},'%')
AND icb."werks" ilike CONCAT('%',#{request.werks},'%')
</if>
<if test="request.rsnum != null and request.rsnum!=''">
AND icb."rsnum" LIKE CONCAT('%',#{request.rsnum},'%')
AND icb."rsnum" ilike CONCAT('%',#{request.rsnum},'%')
</if>
<if test="request.kostl != null and request.kostl!=''">
AND icb."kostl" LIKE CONCAT('%',#{request.kostl},'%')
AND icb."kostl" ilike CONCAT('%',#{request.kostl},'%')
</if>
</where>
order by icbt.id desc

View File

@ -8,10 +8,10 @@
INNER JOIN wms_in_produce_back ipb ON ipbt.produce_back_id=ipb."id"
<where>
<if test="request.no != null and request.no!=''">
AND ipb."no" LIKE CONCAT('%',#{request.no},'%')
AND ipb."no" ilike CONCAT('%',#{request.no},'%')
</if>
<if test="request.aufnr != null and request.aufnr!=''">
AND ipb."aufnr" LIKE CONCAT('%',#{request.aufnr},'%')
AND ipb."aufnr" ilike CONCAT('%',#{request.aufnr},'%')
</if>
<if test="request.startDate!=null">
and ipbt.create_time >= #{request.startDate}

View File

@ -34,10 +34,10 @@
</foreach>
</if>
<if test="request.serialNumber != null and request.serialNumber != ''">
AND serial_numbers LIKE CONCAT('%', #{request.serialNumber}, '%')
AND serial_numbers ilike CONCAT('%', #{request.serialNumber}, '%')
</if>
<if test="request != null and request.materialDes != null and request.materialDes != ''">
AND material_des LIKE CONCAT('%', #{request.materialDes}, '%')
AND material_des ilike CONCAT('%', #{request.materialDes}, '%')
</if>
<if test="request != null and request.startDate != null">
AND create_time >= #{request.startDate}

View File

@ -3,8 +3,10 @@
<mapper namespace="com.nflg.wms.repository.mapper.WmsMaterialMapper">
<select id="search" resultType="com.nflg.wms.common.pojo.vo.MaterialVO">
SELECT DISTINCT ON ("no") *
FROM wms_material
SELECT *
FROM (
SELECT DISTINCT ON ("no") *
FROM wms_material
<where>
<if test="request.no!=null and request.no!=''">
and "no" ilike concat('%', #{request.no}, '%')
@ -13,7 +15,9 @@
and describe ilike concat('%', #{request.describe}, '%')
</if>
</where>
ORDER BY "no",id DESC
ORDER BY "no", id DESC
) t
ORDER BY id DESC
</select>
<select id="getHistory" resultType="com.nflg.wms.common.pojo.vo.MaterialVO">
@ -35,26 +39,34 @@
</select>
<select id="searchNonPage" resultType="com.nflg.wms.common.pojo.vo.MaterialVO">
SELECT DISTINCT ON ("no") *
FROM wms_material
<where>
<if test="request.no!=null and request.no!=''">
and "no" ilike concat('%', #{request.no}, '%')
</if>
<if test="request.describe!=null and request.describe!=''">
and describe ilike concat('%', #{request.describe}, '%')
</if>
</where>
ORDER BY "no",id DESC
SELECT *
FROM (
SELECT DISTINCT ON ("no") *
FROM wms_material
<where>
<if test="request.no!=null and request.no!=''">
and "no" ilike concat('%', #{request.no}, '%')
</if>
<if test="request.describe!=null and request.describe!=''">
and describe ilike concat('%', #{request.describe}, '%')
</if>
</where>
ORDER BY "no", id DESC
) t
ORDER BY id DESC
</select>
<select id="getMaterials" resultType="com.nflg.wms.repository.entity.WmsMaterial">
SELECT DISTINCT ON ("no") *
FROM wms_material
where "no" in
<foreach item="item" collection="nos" separator="," open="(" close=")">
#{item}
</foreach>
ORDER BY "no",id DESC
SELECT *
FROM (
SELECT DISTINCT ON ("no") *
FROM wms_material
where "no" in
<foreach item="item" collection="nos" separator="," open="(" close=")">
#{item}
</foreach>
ORDER BY "no", id DESC
) t
ORDER BY id DESC
</select>
</mapper>

View File

@ -100,4 +100,14 @@
where s.sap_state != 1
order by s.id desc
</select>
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.StorageVO">
SELECT
s.*,
wh.no AS "warehouseNo",
get_binnos(s.id) AS "binNos"
FROM wms_storage s
LEFT JOIN wms_warehouse wh ON s.warehouse_id = wh.id
where s.id = #{id}
</select>
</mapper>

View File

@ -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.WmsTransferCompanyItemMapper">
<select id="getVOList" resultType="com.nflg.wms.common.pojo.vo.TransferCompanyItemVO">
SELECT *
,COALESCE((SELECT SUM(tcti.num) FROM wms_transfer_company_ticket_item tcti INNER JOIN wms_transfer_company_ticket tct ON tcti.ticket_id=tct."id" WHERE tct."state"=1 AND tcti.order_item_id=tci."id"),0) AS "in_num"
FROM wms_transfer_company_item tci
WHERE order_id = #{id}
</select>
</mapper>

View File

@ -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.WmsTransferFactoryItemMapper">
<select id="getVOList" resultType="com.nflg.wms.common.pojo.vo.TransferFactoryItemVO">
SELECT *
,COALESCE((SELECT SUM(tfti.num) FROM wms_transfer_factory_ticket_item tfti INNER JOIN wms_transfer_factory_ticket tft ON tfti.ticket_id=tft."id" WHERE tft."state"=1 AND tfti.order_item_id=tfi."id"),0) AS "in_num"
FROM wms_transfer_factory_item tfi
WHERE order_id = #{id}
</select>
</mapper>

View File

@ -70,4 +70,11 @@
</foreach>
order by w.id desc
</select>
<select id="getInfo" resultType="com.nflg.wms.common.pojo.vo.WarehouseVO">
select w.*, di.name as factory_name
from wms_warehouse w
left join dictionary_item di on w.factory_id = di.id
where w.id = #{id}
</select>
</mapper>

View File

@ -69,7 +69,7 @@ public class MaterialZipImportProcessor implements BasicProcessor {
omsLogger.error("主数据中未查找到该物料:{}", materialNo);
} else {
WmsMaterial wmsMaterial = materialService.getCurrent(materialNo);
if (Objects.isNull(wmsMaterial) || StrUtil.isNotBlank(wmsMaterial.getImage())) {
if (Objects.isNull(wmsMaterial) || wmsMaterial.getComplete()) {
omsLogger.info("添加图纸");
wmsMaterial = new WmsMaterial()
.setId(null)