Merge branch 'develop' into dev_zhangke

This commit is contained in:
zhangke 2025-10-11 22:57:58 +08:00
commit 7b0734bb32
18 changed files with 119 additions and 84 deletions

View File

@ -93,7 +93,7 @@ public class InventoryController extends BaseController {
@GetMapping("check/getTaskItems") @GetMapping("check/getTaskItems")
public ApiResult<List<InventoryCheckTaskItemVO>> getTaskItems(@Valid @RequestParam(required = false) Long id) { public ApiResult<List<InventoryCheckTaskItemVO>> getTaskItems(@Valid @RequestParam(required = false) Long id) {
List<WmsInventoryCheckTaskItem> taskItems = Objects.isNull(id) ? Collections.emptyList() : inventoryCheckTaskItemService.lambdaQuery().eq(WmsInventoryCheckTaskItem::getTaskId, id).list(); List<WmsInventoryCheckTaskItem> taskItems = Objects.isNull(id) ? Collections.emptyList() : inventoryCheckTaskItemService.lambdaQuery().eq(WmsInventoryCheckTaskItem::getTaskId, id).list();
List<WarehouseVO> warehouseVOS = warehouseService.getEnableList(null); List<WarehouseSimpleVO> warehouseVOS = warehouseService.getEnableList(null);
List<InventoryCheckTaskItemVO> vos = new ArrayList<>(); List<InventoryCheckTaskItemVO> vos = new ArrayList<>();
warehouseVOS.forEach(warehouseVO -> { warehouseVOS.forEach(warehouseVO -> {
WmsInventoryCheckTaskItem item = taskItems.stream().filter(taskItem -> Objects.equals(taskItem.getWarehouseId(), warehouseVO.getId())).findFirst().orElse(null); WmsInventoryCheckTaskItem item = taskItems.stream().filter(taskItem -> Objects.equals(taskItem.getWarehouseId(), warehouseVO.getId())).findFirst().orElse(null);
@ -107,8 +107,8 @@ public class InventoryController extends BaseController {
.setChargeUserId(Objects.isNull(item) ? null : item.getChargeUserId()) .setChargeUserId(Objects.isNull(item) ? null : item.getChargeUserId())
.setChargeUserName(Objects.isNull(item) ? "" : item.getChargeUserName()) .setChargeUserName(Objects.isNull(item) ? "" : item.getChargeUserName())
.setAddress(warehouseVO.getAddress()) .setAddress(warehouseVO.getAddress())
.setUserName(warehouseVO.getUserName()) // .setUserName(warehouseVO.getUserName())
.setPhone(warehouseVO.getPhone()) // .setPhone(warehouseVO.getPhone())
); );
}); });
return ApiResult.success(vos); return ApiResult.success(vos);

View File

@ -78,7 +78,7 @@ public class OutPurchaseController extends BaseController {
public ApiResult<ZWM3A05VO> searchSAP(@Valid @RequestBody @NotNull zwm3A05QO request) { public ApiResult<ZWM3A05VO> searchSAP(@Valid @RequestBody @NotNull zwm3A05QO request) {
ZWM3A05VO result = sapService.zwm3A05(request); ZWM3A05VO result = sapService.zwm3A05(request);
result.getItems().parallelStream().forEach(it -> { result.getItems().parallelStream().forEach(it -> {
it.setBinNos(binService.getBinNos(it.getMatnr(), it.getWerks(), it.getLgort())); it.setBinNos(binService.getBinNos(it.getMatnr(), result.getWerks(), it.getLgort()));
}); });
return ApiResult.success(result); return ApiResult.success(result);
} }
@ -107,14 +107,15 @@ public class OutPurchaseController extends BaseController {
item.setId(IdUtil.getSnowflakeNextId()); item.setId(IdUtil.getSnowflakeNextId());
item.setOrderId(order.getId()); item.setOrderId(order.getId());
item.setNum(BigDecimal.ZERO); item.setNum(BigDecimal.ZERO);
item.setWerks(request.getWerks());
if (CollectionUtil.isNotEmpty(it.getQrCodes())) { if (CollectionUtil.isNotEmpty(it.getQrCodes())) {
it.getQrCodes().forEach(qrCode -> { it.getQrCodes().forEach(qrCode -> {
MaterialQRCodeContentDTO dto = NoUtil.getMaterialQRCodeContent(qrCode); MaterialQRCodeContentDTO dto = NoUtil.getMaterialQRCodeContent(qrCode.getContent());
VUtil.trueThrowBusinessError(!StrUtil.equals(dto.getMaterialNo(), it.getMatnr())) VUtil.trueThrowBusinessError(!StrUtil.equals(dto.getMaterialNo(), it.getMatnr()))
.throwMessage("物料" + it.getMatnr() + "与二维码不匹配"); .throwMessage("物料" + it.getMatnr() + "与二维码不匹配");
VUtil.trueThrowBusinessError(!check(dto, it.getCharg(), it.getSernrs())) VUtil.trueThrowBusinessError(!check(dto, it.getCharg(), it.getSernrs()))
.throwMessage("物料" + it.getMatnr() + "包含不符合批次号和序列号的扫码记录"); .throwMessage("物料" + it.getMatnr() + "包含不符合批次号和序列号的扫码记录");
item.setNum(item.getNum().add(dto.getNum())); item.setNum(item.getNum().add(qrCode.getNum()));
records.add(new OutMaterialScanRecord() records.add(new OutMaterialScanRecord()
.setSource(6) .setSource(6)
.setSourceId(order.getId()) .setSourceId(order.getId())
@ -122,7 +123,7 @@ public class OutPurchaseController extends BaseController {
.setTicketId(order.getId()) .setTicketId(order.getId())
.setTicketItemId(item.getId()) .setTicketItemId(item.getId())
.setMaterialNo(dto.getMaterialNo()) .setMaterialNo(dto.getMaterialNo())
.setContent(qrCode) .setContent(qrCode.getContent())
.setBatchNo(dto.getBatchNo()) .setBatchNo(dto.getBatchNo())
.setSerialNo(dto.getSerialNo()) .setSerialNo(dto.getSerialNo())
.setUniqNo(dto.getUniqNo()) .setUniqNo(dto.getUniqNo())
@ -137,10 +138,10 @@ public class OutPurchaseController extends BaseController {
); );
}); });
} }
VUtil.trueThrowBusinessError(it.getNum().compareTo(item.getTemng()) > 0) // VUtil.trueThrowBusinessError(it.getNum().compareTo(item.getTemng()) > 0)
.throwMessage("物料" + it.getMatnr() + "的扫码数量大于退货数量"); // .throwMessage("物料" + it.getMatnr() + "的扫码数量大于退货数量");
VUtil.trueThrowBusinessError(item.getNum().compareTo(it.getNum()) != 0) // VUtil.trueThrowBusinessError(item.getNum().compareTo(it.getNum()) != 0)
.throwMessage("物料" + it.getMatnr() + "的扫码数量不一致"); // .throwMessage("物料" + it.getMatnr() + "的扫码数量不一致");
items.add(item); items.add(item);
if (item.getNum().compareTo(BigDecimal.ZERO) > 0) { if (item.getNum().compareTo(BigDecimal.ZERO) > 0) {
input1.add(new ZWM3A06Input1DTO() input1.add(new ZWM3A06Input1DTO()
@ -148,10 +149,10 @@ public class OutPurchaseController extends BaseController {
.setRetpo(it.getRetpo()) .setRetpo(it.getRetpo())
.setMatnr(it.getMatnr()) .setMatnr(it.getMatnr())
.setMaktx(it.getMaktx()) .setMaktx(it.getMaktx())
.setErfmg(it.getNum()) .setErfmg(item.getNum())
.setMeins(it.getMeins()) .setMeins(it.getMeins())
.setCharg(it.getCharg()) .setCharg(it.getCharg())
.setWerks(it.getWerks()) .setWerks(item.getWerks())
.setLgort(it.getLgort()) .setLgort(it.getLgort())
.setLfbja(it.getLfbja()) .setLfbja(it.getLfbja())
.setLfbnr(it.getLfbnr()) .setLfbnr(it.getLfbnr())

View File

@ -7,6 +7,7 @@ import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.WarehouseAddQO; import com.nflg.wms.common.pojo.qo.WarehouseAddQO;
import com.nflg.wms.common.pojo.qo.WarehouseSearchQO; import com.nflg.wms.common.pojo.qo.WarehouseSearchQO;
import com.nflg.wms.common.pojo.qo.WarehouseUpdateQO; import com.nflg.wms.common.pojo.qo.WarehouseUpdateQO;
import com.nflg.wms.common.pojo.vo.WarehouseSimpleVO;
import com.nflg.wms.common.pojo.vo.WarehouseVO; import com.nflg.wms.common.pojo.vo.WarehouseVO;
import com.nflg.wms.repository.entity.DictionaryItem; import com.nflg.wms.repository.entity.DictionaryItem;
import com.nflg.wms.starter.BaseController; import com.nflg.wms.starter.BaseController;
@ -118,7 +119,7 @@ public class WarehouseController extends BaseController {
* @param factoryNo 工厂编号 * @param factoryNo 工厂编号
*/ */
@GetMapping("getEnableList") @GetMapping("getEnableList")
public ApiResult<List<WarehouseVO>> getEnableList(@Valid @RequestParam(required = false) String factoryNo) { public ApiResult<List<WarehouseSimpleVO>> getEnableList(@Valid @RequestParam(required = false) String factoryNo) {
return ApiResult.success(warehouseControllerService.getEnableList(factoryNo)); return ApiResult.success(warehouseControllerService.getEnableList(factoryNo));
} }

View File

@ -149,7 +149,10 @@ public class SapService {
JCoTable ot1 = function.getTableParameterList().getTable("OUTPUT1"); JCoTable ot1 = function.getTableParameterList().getTable("OUTPUT1");
VUtil.trueThrowBusinessError(ot1.getNumRows() == 0).throwMessage("没有订单数据"); VUtil.trueThrowBusinessError(ot1.getNumRows() == 0).throwMessage("没有订单数据");
ot1.setRow(0); ot1.setRow(0);
ZWM3A05VO vo = new ZWM3A05VO().setEbeln(ot1.getString("EBELN")).setLifnr(ot1.getString("LIFNR")); ZWM3A05VO vo = new ZWM3A05VO()
.setEbeln(ot1.getString("EBELN"))
.setLifnr(ot1.getString("LIFNR"))
.setWerks(ot1.getString("WERKS"));
vo.setItems(JCoUtil.toBeanList(ot1, ZWM3A05ItemVO.class)); vo.setItems(JCoUtil.toBeanList(ot1, ZWM3A05ItemVO.class));
JCoTable ot2 = function.getTableParameterList().getTable("OUTPUT2"); JCoTable ot2 = function.getTableParameterList().getTable("OUTPUT2");

View File

@ -16,6 +16,7 @@ import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.WarehouseAddQO; import com.nflg.wms.common.pojo.qo.WarehouseAddQO;
import com.nflg.wms.common.pojo.qo.WarehouseSearchQO; import com.nflg.wms.common.pojo.qo.WarehouseSearchQO;
import com.nflg.wms.common.pojo.qo.WarehouseUpdateQO; import com.nflg.wms.common.pojo.qo.WarehouseUpdateQO;
import com.nflg.wms.common.pojo.vo.WarehouseSimpleVO;
import com.nflg.wms.common.pojo.vo.WarehouseVO; import com.nflg.wms.common.pojo.vo.WarehouseVO;
import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.DateTimeUtil;
import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.EecExcelUtil;
@ -217,7 +218,7 @@ public class WarehouseControllerService {
.writeTo(response.getOutputStream()); .writeTo(response.getOutputStream());
} }
public List<WarehouseVO> getEnableList(String factoryNo) { public List<WarehouseSimpleVO> getEnableList(String factoryNo) {
return warehouseService.getEnableList(factoryNo); return warehouseService.getEnableList(factoryNo);
} }

View File

@ -1,8 +1,10 @@
package com.nflg.wms.admin.util; package com.nflg.wms.admin.util;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.nflg.wms.common.util.BeanUtil; import com.nflg.wms.common.util.BeanUtil;
import com.sap.conn.jco.*; import com.sap.conn.jco.*;
@ -11,8 +13,10 @@ import java.util.stream.Collectors;
public class JCoUtil { public class JCoUtil {
private static final ObjectMapper MAPPER = new ObjectMapper() private static final ObjectMapper MAPPER = JsonMapper.builder()
.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); .enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
/** /**
* JCoTable 转换为 Java Bean 列表 * JCoTable 转换为 Java Bean 列表

View File

@ -1,6 +1,7 @@
package com.nflg.wms.common.pojo.dto; package com.nflg.wms.common.pojo.dto;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.nflg.wms.common.util.BomUtil; import com.nflg.wms.common.util.BomUtil;
import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.DateTimeUtil;
import lombok.Data; import lombok.Data;
@ -118,6 +119,7 @@ public class DepartmentMaterialReturnSlipDTO {
return Objects.isNull(num) ? bdmng : num; return Objects.isNull(num) ? bdmng : num;
} }
@JsonIgnore
private String key; private String key;
public String getKey() { public String getKey() {

View File

@ -1,29 +1,14 @@
package com.nflg.wms.common.pojo.qo; package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class QRCodeQO { public class QRCodeQO extends QRCodeQO1 {
/** /**
* 项id * 项id
*/ */
@NotNull @NotNull
private Long itemId; private Long itemId;
/**
* 二维码内容
*/
@NotBlank
private String content;
/**
* 数量
*/
@NotNull
private BigDecimal num;
} }

View File

@ -0,0 +1,23 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class QRCodeQO1 {
/**
* 二维码内容
*/
@NotBlank
private String content;
/**
* 数量
*/
@NotNull
private BigDecimal num;
}

View File

@ -74,13 +74,13 @@ public class InventoryCheckTaskItemVO {
*/ */
private String address; private String address;
/** // /**
* 责任人 // * 责任人
*/ // */
private String userName; // private String userName;
/** // /**
* 联系电话 // * 联系电话
*/ // */
private String phone; // private String phone;
} }

View File

@ -0,0 +1,29 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
@Data
public class WarehouseSimpleVO {
private Long id;
/**
* 仓库编码
*/
private String no;
/**
* 仓库名称
*/
private String name;
/**
* 所属工厂名称
*/
private String factoryName;
/**
* 所在地点
*/
private String address;
}

View File

@ -5,19 +5,7 @@ import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
public class WarehouseVO { public class WarehouseVO extends WarehouseSimpleVO {
private Long id;
/**
* 仓库编码
*/
private String no;
/**
* 仓库名称
*/
private String name;
/** /**
* 责任人 * 责任人
@ -34,11 +22,6 @@ public class WarehouseVO {
*/ */
private String phone; private String phone;
/**
* 所在地点
*/
private String address;
/** /**
* 是否启用 * 是否启用
*/ */
@ -83,9 +66,4 @@ public class WarehouseVO {
* 所属工厂 * 所属工厂
*/ */
private Long factoryId; private Long factoryId;
/**
* 所属工厂名称
*/
private String factoryName;
} }

View File

@ -1,13 +1,14 @@
package com.nflg.wms.common.pojo.vo; package com.nflg.wms.common.pojo.vo;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.nflg.wms.common.pojo.qo.QRCodeQO1;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
@Data @Data
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
@ -18,6 +19,10 @@ public class ZWM3A05ItemVO {
*/ */
private String ebelp; private String ebelp;
public String getEbelp() {
return StrUtil.removeAllPrefix(ebelp, "0");
}
/** /**
* 退货项目 * 退货项目
*/ */
@ -74,11 +79,6 @@ public class ZWM3A05ItemVO {
*/ */
private String lgort; private String lgort;
/**
* 工厂
*/
private String werks;
/** /**
* 批次号列表 * 批次号列表
*/ */
@ -89,17 +89,17 @@ public class ZWM3A05ItemVO {
*/ */
private String binNos; private String binNos;
/** // /**
* 实际退货数量扫码后计算 // * 实际退货数量扫码后计算
*/ // */
private BigDecimal num; // private BigDecimal num;
//
public BigDecimal getNum() { // public BigDecimal getNum() {
return Optional.ofNullable(num).orElse(BigDecimal.ZERO); // return Optional.ofNullable(num).orElse(BigDecimal.ZERO);
} // }
/** /**
* 二维码列表 * 二维码列表
*/ */
private List<String> qrCodes = new ArrayList<>(); private List<QRCodeQO1> qrCodes = new ArrayList<>();
} }

View File

@ -21,6 +21,11 @@ public class ZWM3A05VO {
*/ */
private String lifnr; private String lifnr;
/**
* 工厂
*/
private String werks;
@Valid @Valid
private List<ZWM3A05ItemVO> items = new ArrayList<>(); private List<ZWM3A05ItemVO> items = new ArrayList<>();
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.qo.WarehouseSearchQO; import com.nflg.wms.common.pojo.qo.WarehouseSearchQO;
import com.nflg.wms.common.pojo.vo.WarehouseSimpleVO;
import com.nflg.wms.common.pojo.vo.WarehouseVO; import com.nflg.wms.common.pojo.vo.WarehouseVO;
import com.nflg.wms.repository.entity.WmsWarehouse; import com.nflg.wms.repository.entity.WmsWarehouse;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -26,7 +27,7 @@ public interface WmsWarehouseMapper extends BaseMapper<WmsWarehouse> {
List<WarehouseVO> searchNonPage(@Param("request") WarehouseSearchQO request); List<WarehouseVO> searchNonPage(@Param("request") WarehouseSearchQO request);
List<WarehouseVO> getEnableList(String factoryNo); List<WarehouseSimpleVO> getEnableList(String factoryNo);
List<WarehouseVO> getListByIds(List<Long> list); List<WarehouseVO> getListByIds(List<Long> list);
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.qo.EnableQO; import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.WarehouseSearchQO; import com.nflg.wms.common.pojo.qo.WarehouseSearchQO;
import com.nflg.wms.common.pojo.vo.WarehouseSimpleVO;
import com.nflg.wms.common.pojo.vo.WarehouseVO; import com.nflg.wms.common.pojo.vo.WarehouseVO;
import com.nflg.wms.repository.entity.WmsWarehouse; import com.nflg.wms.repository.entity.WmsWarehouse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@ -37,7 +38,7 @@ public interface IWmsWarehouseService extends IService<WmsWarehouse> {
List<WarehouseVO> searchNonPage(@Valid WarehouseSearchQO request); List<WarehouseVO> searchNonPage(@Valid WarehouseSearchQO request);
List<WarehouseVO> getEnableList(String factoryNo); List<WarehouseSimpleVO> getEnableList(String factoryNo);
List<WarehouseVO> getListByIds(List<Long> list); List<WarehouseVO> getListByIds(List<Long> list);
} }

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.qo.EnableQO; import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.WarehouseSearchQO; import com.nflg.wms.common.pojo.qo.WarehouseSearchQO;
import com.nflg.wms.common.pojo.vo.WarehouseSimpleVO;
import com.nflg.wms.common.pojo.vo.WarehouseVO; import com.nflg.wms.common.pojo.vo.WarehouseVO;
import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil; import com.nflg.wms.common.util.VUtil;
@ -106,7 +107,7 @@ public class WmsWarehouseServiceImpl extends ServiceImpl<WmsWarehouseMapper, Wms
} }
@Override @Override
public List<WarehouseVO> getEnableList(String factoryNo) { public List<WarehouseSimpleVO> getEnableList(String factoryNo) {
return baseMapper.getEnableList(factoryNo); return baseMapper.getEnableList(factoryNo);
} }

View File

@ -49,7 +49,7 @@
order by w.id desc order by w.id desc
</select> </select>
<select id="getEnableList" resultType="com.nflg.wms.common.pojo.vo.WarehouseVO"> <select id="getEnableList" resultType="com.nflg.wms.common.pojo.vo.WarehouseSimpleVO">
select w.*, di.name as factory_name select w.*, di.name as factory_name
from wms_warehouse w from wms_warehouse w
left join dictionary_item di on w.factory_id = di.id left join dictionary_item di on w.factory_id = di.id