Merge remote-tracking branch 'origin/dev-ty1.2' into dev-ty1.2

This commit is contained in:
rcx
2026-08-22 14:10:07 +08:00
41 changed files with 471 additions and 134 deletions
@@ -294,7 +294,7 @@ public class HandoverTaskOrderApplicationService {
.collect(Collectors.toList());
if (!handoverTaskOrderIds.isEmpty()) {
HandoverTaskOrderDO completeDO = new HandoverTaskOrderDO();
completeDO.setHandoverTaskOrderIds(handoverTaskOrderIds);
completeDO.setHandoverTaskOrderIds(handoverTaskOrderIds.stream().map(String::valueOf).collect(Collectors.toList()));
completeDO.setBillingJson(handoverTaskOrderDO.getBillingJson());
handoverTaskOrderDomainService.completeHandover(completeDO);
}
@@ -257,31 +257,33 @@ public class MaterialBaseInfoApplicationService {
}
}
Long shipperId = materialBaseInfoDO.getShipperId();
String customerCodeNcJson = null;
if (shipperId != null) {
customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString());
}
if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) {
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> listNc = null;
try {
listNc = objectMapper.readValue(
customerCodeNcJson,
new com.fasterxml.jackson.core.type.TypeReference<List<Map<String, Object>>>() {}
);
String codeStr = "";
if (listNc != null && listNc.size() > 0) {
// 方式1:Stream拼接,逗号分隔
codeStr = listNc.stream()
.map(map -> map.get("code"))
.filter(Objects::nonNull) // 过滤code为空
.map(Object::toString)
.collect(Collectors.joining(","));
materialBaseInfoDO.setOrgId(codeStr);
if (shipperId != null&&shipperId != 0L) {
String customerCodeNcJson = null;
if (shipperId != null) {
customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString());
}
if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) {
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> listNc = null;
try {
listNc = objectMapper.readValue(
customerCodeNcJson,
new com.fasterxml.jackson.core.type.TypeReference<List<Map<String, Object>>>() {}
);
String codeStr = "";
if (listNc != null && listNc.size() > 0) {
// 方式1:Stream拼接,逗号分隔
codeStr = listNc.stream()
.map(map -> map.get("code"))
.filter(Objects::nonNull) // 过滤code为空
.map(Object::toString)
.collect(Collectors.joining(","));
materialBaseInfoDO.setOrgId(codeStr);
}
// codeStr 就是拼接好的字符串
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
// codeStr 就是拼接好的字符串
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
Long materialBaseInfoId = materialBaseInfoDomainService.insert(materialBaseInfoDO);
@@ -316,30 +318,35 @@ public class MaterialBaseInfoApplicationService {
*/
public Boolean update(MaterialBaseInfoDO materialBaseInfoDO) {
Long shipperId = materialBaseInfoDO.getShipperId();
String customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString());
if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) {
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> listNc = null;
try {
listNc = objectMapper.readValue(
customerCodeNcJson,
new com.fasterxml.jackson.core.type.TypeReference<List<Map<String, Object>>>() {}
);
String codeStr = "";
if (listNc != null && listNc.size() > 0) {
// 方式1:Stream拼接,逗号分隔
codeStr = listNc.stream()
.map(map -> map.get("code"))
.filter(Objects::nonNull) // 过滤code为空
.map(Object::toString)
.collect(Collectors.joining(","));
materialBaseInfoDO.setOrgId(codeStr);
//设置货主信息
shipperParam(materialBaseInfoDO);
if (shipperId != null&&shipperId!=0l) {
String customerCodeNcJson = materialBaseInfoMapper.getCustomerCodeNcJson(shipperId.toString());
if (customerCodeNcJson != null && !customerCodeNcJson.isEmpty()) {
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> listNc = null;
try {
listNc = objectMapper.readValue(
customerCodeNcJson,
new com.fasterxml.jackson.core.type.TypeReference<List<Map<String, Object>>>() {}
);
String codeStr = "";
if (listNc != null && listNc.size() > 0) {
// 方式1:Stream拼接,逗号分隔
codeStr = listNc.stream()
.map(map -> map.get("code"))
.filter(Objects::nonNull) // 过滤code为空
.map(Object::toString)
.collect(Collectors.joining(","));
materialBaseInfoDO.setOrgId(codeStr);
}
// codeStr 就是拼接好的字符串
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
// codeStr 就是拼接好的字符串
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
materialBaseInfoDomainService.update(materialBaseInfoDO);
Long materialBaseInfoId = materialBaseInfoDO.getMaterialBaseInfoId();
// 商品/公共/仓控 子表:Feign/前端常只带业务字段、未带子表主键,需按 material_base_info_id 补全后再 update,否则 WHERE xxx_id=? 为 null 导致 Updates: 0
@@ -381,6 +388,28 @@ public class MaterialBaseInfoApplicationService {
return true;
}
/**
* @description 封装货主信息
* @author ZhouGY
* @date 2024/5/9 20:43
* @param materialBaseInfoDO
*/
private void shipperParam(MaterialBaseInfoDO materialBaseInfoDO){
Long shipperId = materialBaseInfoDO.getShipperId();
if (shipperId != null && shipperId != 0l) {
AjaxResult ajaxResult = userServiceFeign.getInfo(materialBaseInfoDO.getShipperId());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取货主信息失败");
}
UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
// 如果原始shipperName不为空,保留原始值(导入或手动输入时应该保留完整名称)
// 只有在原始shipperName为空时,才使用查询到的userName
if (materialBaseInfoDO.getShipperName() == null || materialBaseInfoDO.getShipperName().trim().isEmpty()) {
materialBaseInfoDO.setShipperName(userPo.getUserName());
}
}
}
/**
* 编辑物料时从库中反查子表主键,避免仅传 batchId 等字段时子表主键为 null 无法 UPDATE。
*/
@@ -112,7 +112,14 @@ public class HandoverTaskOrderImpl extends ServiceImpl<HandoverTaskOrderMapper,
@Override
public boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
List<Long> handoverTaskOrderIds = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<String> handoverTaskOrderIdsStr = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<Long> handoverTaskOrderIds = null;
if (handoverTaskOrderIdsStr != null && !handoverTaskOrderIdsStr.isEmpty()) {
handoverTaskOrderIds = handoverTaskOrderIdsStr.stream()
.filter(str -> str != null && !str.trim().isEmpty())
.map(Long::valueOf)
.collect(Collectors.toList());
}
if (handoverTaskOrderIds == null || handoverTaskOrderIds.isEmpty()) {
return false;
}
@@ -1,6 +1,8 @@
package com.mhd.wms.domain.handoverTaskOrder.repository.po;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModel;
@@ -25,6 +27,7 @@ import java.util.List;
public class HandoverTaskOrderPO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty("交接作业单id")
private Long handoverTaskOrderId;
@@ -130,7 +130,9 @@ public class HandoverTaskOrderDO extends BaseVOEntity {
private Long permissionMenuId;
@ApiModelProperty("交接作业单id")
private List<Long> handoverTaskOrderIds;
private List<String> handoverTaskOrderIds;
@ApiModelProperty("交接作业单id")
private List<String> handoverTaskOrderIdsStr;
@ApiModelProperty("作业人用户ID")
@Excel(name = "作业人用户ID")
@@ -61,6 +61,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -97,7 +98,7 @@ public class HandoverTaskOrderDomainService {
private IStockOutOrderService stockOutOrderService;
@Autowired
private CopyCodeReferenceDomainService copyCodeReferenceDomainService;
@Autowired
@Resource
private OmsServiceFeign omsServiceFeign;
// @Autowired
// private ICustomsDeclarationDetailService customsDeclarationDetailService;
@@ -250,7 +251,14 @@ public class HandoverTaskOrderDomainService {
* @return Boolean
*/
public Boolean allocationPlatform(HandoverTaskOrderDO handoverTaskOrderDO){
List<Long> handoverTaskOrderIds = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<String> handoverTaskOrderIdsStr = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<Long> handoverTaskOrderIds = null;
if (handoverTaskOrderIdsStr != null && !handoverTaskOrderIdsStr.isEmpty()) {
handoverTaskOrderIds = handoverTaskOrderIdsStr.stream()
.filter(str -> str != null && !str.trim().isEmpty())
.map(Long::valueOf)
.collect(Collectors.toList());
}
if (handoverTaskOrderIds == null || handoverTaskOrderIds.isEmpty()) {
return false;
}
@@ -285,7 +293,14 @@ public class HandoverTaskOrderDomainService {
* @return Boolean
*/
public Boolean releasePlatform(HandoverTaskOrderDO handoverTaskOrderDO){
List<Long> handoverTaskOrderIds = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<String> handoverTaskOrderIdsStr = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<Long> handoverTaskOrderIds = null;
if (handoverTaskOrderIdsStr != null && !handoverTaskOrderIdsStr.isEmpty()) {
handoverTaskOrderIds = handoverTaskOrderIdsStr.stream()
.filter(str -> str != null && !str.trim().isEmpty())
.map(Long::valueOf)
.collect(Collectors.toList());
}
if (handoverTaskOrderIds == null || handoverTaskOrderIds.isEmpty()) {
return false;
}
@@ -315,7 +330,15 @@ public class HandoverTaskOrderDomainService {
* @return Boolean
*/
public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO) {
List<Long> handoverTaskOrderIds = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<String> handoverTaskOrderIdsStr = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<Long> handoverTaskOrderIds = null;
if (handoverTaskOrderIdsStr != null && !handoverTaskOrderIdsStr.isEmpty()) {
handoverTaskOrderIds = handoverTaskOrderIdsStr.stream()
.filter(str -> str != null && !str.trim().isEmpty())
.map(Long::valueOf)
.collect(Collectors.toList());
}
System.out.println("handoverTaskOrderIds: " + handoverTaskOrderIds);
if (handoverTaskOrderIds == null || handoverTaskOrderIds.isEmpty()) {
return false;
}
@@ -698,7 +721,14 @@ public class HandoverTaskOrderDomainService {
*/
@Transactional(rollbackFor = Exception.class)
public boolean taskDistribution(HandoverTaskOrderDO handoverTaskOrderDO) {
List<Long> handoverTaskOrderIds = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<String> handoverTaskOrderIdsStr = handoverTaskOrderDO.getHandoverTaskOrderIds();
List<Long> handoverTaskOrderIds = null;
if (handoverTaskOrderIdsStr != null && !handoverTaskOrderIdsStr.isEmpty()) {
handoverTaskOrderIds = handoverTaskOrderIdsStr.stream()
.filter(str -> str != null && !str.trim().isEmpty())
.map(Long::valueOf)
.collect(Collectors.toList());
}
if (handoverTaskOrderIds == null || handoverTaskOrderIds.isEmpty()) {
throw new ServiceException("未选择交接作业单,请重新选择");
}
@@ -710,7 +740,7 @@ public class HandoverTaskOrderDomainService {
throw new ServiceException("交接作业单ID不能为空,请重新选择");
}
// 更新 DO 对象中的列表,确保后续调用使用过滤后的列表
handoverTaskOrderDO.setHandoverTaskOrderIds(handoverTaskOrderIds);
handoverTaskOrderDO.setHandoverTaskOrderIds(handoverTaskOrderIdsStr);
List<HandoverTaskOrder> handoverTaskOrders = handoverTaskOrderService.list(new LambdaQueryWrapper<HandoverTaskOrder>()
.in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderIds)
.eq(HandoverTaskOrder::getTaskDistribution, 2)
@@ -1,9 +1,6 @@
package com.mhd.wms.domain.materialBaseInfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.handler.ListTypeHandler;
@@ -47,14 +44,17 @@ public class MaterialBaseInfo extends BaseVOEntity {
@ApiModelProperty("货主id")
@Excel(name = "货主id")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Long shipperId;
@ApiModelProperty("货主编码")
@Excel(name = "货主编码")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String shipperCode;
@ApiModelProperty("货主名称")
@Excel(name = "货主名称")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String shipperName;
@ApiModelProperty("物料编码")
@@ -240,4 +240,7 @@ public class MaterialBaseInfo extends BaseVOEntity {
@ApiModelProperty(name = "组织(多个用,分开)")
private String orgId;
@ApiModelProperty(name = "是否正常物料: 0-是 1-否")
private Integer isNormalMaterial;
}
@@ -289,4 +289,7 @@ public class MaterialBaseInfoPO extends BaseVOEntity {
@ApiModelProperty(name = "组织(多个用,分开)")
private String orgId;
@ApiModelProperty(name = "是否正常物料: 0-是 1-否")
private Integer isNormalMaterial;
}
@@ -262,4 +262,7 @@ public class MaterialBaseInfoDO extends BaseVOEntity {
@ApiModelProperty(name = "组织(多个用,分开)")
private String orgId;
@ApiModelProperty(name = "是否正常物料: 0-是 1-否")
private Integer isNormalMaterial;
}
@@ -1397,7 +1397,7 @@ public class StockOutOrderDomainService {
handoverTaskOrderDO1.setOperatorsBy(stockOutOrder.getWorkUserId());
List<Long> ids = new ArrayList<>();
ids.add(handoverTaskOrder.getHandoverTaskOrderId());
handoverTaskOrderDO1.setHandoverTaskOrderIds(ids);
handoverTaskOrderDO1.setHandoverTaskOrderIds(ids.stream().map(String::valueOf).collect(Collectors.toList()));
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, handoverTaskOrder.getTaskNumber())
.eq(DeliveTask::getDelFlag, 1));
@@ -1412,7 +1412,7 @@ public class StockOutOrderDomainService {
HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO();
List<Long> handoverTaskOrderId = new ArrayList<>();
handoverTaskOrderId.add(handoverTaskOrder.getHandoverTaskOrderId());
handoverTaskOrderDO.setHandoverTaskOrderIds(handoverTaskOrderId);
handoverTaskOrderDO.setHandoverTaskOrderIds(handoverTaskOrderId.stream().map(String::valueOf).collect(Collectors.toList()));
handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO);
}
//出库交接后生成电子签名记录
@@ -131,36 +131,36 @@ public class HandoverTaskOrderDTO extends BaseVOEntity {
private Long permissionMenuId;
@ApiModelProperty("交接作业单id")
private List<Long> handoverTaskOrderIds;
private List<String> handoverTaskOrderIds;
/**
* 自定义setter方法,支持单个整数和数组两种格式
*/
public void setHandoverTaskOrderIds(Object value) {
if (value == null) {
this.handoverTaskOrderIds = null;
return;
}
List<Long> result = new ArrayList<>();
if (value instanceof List) {
// 如果是列表,遍历并转换
List<?> list = (List<?>) value;
for (Object item : list) {
if (item != null) {
if (item instanceof Number) {
result.add(((Number) item).longValue());
}
}
}
} else if (value instanceof Number) {
// 如果是单个数字,转换为列表
result.add(((Number) value).longValue());
}
this.handoverTaskOrderIds = result.isEmpty() ? null : result;
}
// public void setHandoverTaskOrderIds(Object value) {
// if (value == null) {
// this.handoverTaskOrderIds = null;
// return;
// }
//
// List<Long> result = new ArrayList<>();
//
// if (value instanceof List) {
// // 如果是列表,遍历并转换
// List<?> list = (List<?>) value;
// for (Object item : list) {
// if (item != null) {
// if (item instanceof Number) {
// result.add(((Number) item).longValue());
// }
// }
// }
// } else if (value instanceof Number) {
// // 如果是单个数字,转换为列表
// result.add(((Number) value).longValue());
// }
//
// this.handoverTaskOrderIds = result.isEmpty() ? null : result;
// }
@ApiModelProperty("作业人用户ID")
@Excel(name = "作业人用户ID")
@@ -314,4 +314,6 @@ public class MaterialBaseInfoDTO extends BaseVOEntity {
@ApiModelProperty(name = "组织(多个用,分开)")
private String orgId;
@ApiModelProperty(name = "是否正常物料: 0-是 1-否")
private Integer isNormalMaterial;
}
@@ -111,6 +111,7 @@ public class HandoverTaskOrderApi extends BaseController {
@ApiOperation("完成交接")
@PostMapping("/completeHandover")
public AjaxResult completeHandover(@RequestBody HandoverTaskOrderDTO handoverTaskOrderDTO) {
System.out.println("completeHandover"+handoverTaskOrderDTO.getHandoverTaskOrderIds());
HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDO(handoverTaskOrderDTO);
return toAjax(handoverTaskOrderApplicationService.completeHandover(handoverTaskOrderDO));
}
@@ -125,4 +126,4 @@ public class HandoverTaskOrderApi extends BaseController {
}
}