Merge branch 'dev' into dev-ty1.2

# Conflicts:
#	mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java
#	mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java
#	mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderDO.java
#	mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java
#	mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java
This commit is contained in:
王奎兴
2026-08-13 16:46:09 +08:00
156 changed files with 6740 additions and 731 deletions
@@ -387,6 +387,23 @@ public class InMaterialDetailDTO extends BaseVOEntity {
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date drinkDate;
@ApiModelProperty("来货验收是否合格;1 合格,0 不合格")
@Excel(name = "来货验收是否合格;1 合格,0 不合格")
private String arrivalAcceptQualified;
@ApiModelProperty("包装是否破损;1 破损,0 完好")
@Excel(name = "包装是否破损;1 破损,0 完好")
private String packageDamaged;
@ApiModelProperty("是否解冻 / 水渍;1 是,0 否")
@Excel(name = "是否解冻 / 水渍;1 是,0 否")
private String isThawWaterstain;
@ApiModelProperty("问题货是否已通知客户;1 已通知,0 未通知")
@Excel(name = "问题货是否已通知客户;1 已通知,0 未通知")
private String notifyCustomerAbnormal;
//订单行号
private String lineNumGw;
//物料规格
@@ -0,0 +1,44 @@
package com.mhd.wms.interfaces.dto.signature;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* PDA批量签名请求DTO
*
* <p>支持四种签名方式:电子签名、附件上传、扫二维码、系统自动。</p>
*/
@Data
public class BatchSignatureDTO {
@ApiModelProperty("入库单ID列表")
private List<Long> inOrderIds;
@ApiModelProperty("出库单ID列表")
private List<Long> outOrderIds;
@ApiModelProperty("签名状态:2-已签名(PDA端直接传2表示签完)")
private Integer signatureStatus;
@ApiModelProperty("签名时间(PDA端可传当前时间)")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date signatureTime;
@ApiModelProperty("手写签名图片(base64或URL,单张)")
private String signaturePic;
@ApiModelProperty("拍照取证图片列表(base64或URL,多张)")
private List<String> evidencePics;
@ApiModelProperty("签名备注")
private String signatureRemark;
@ApiModelProperty("签名方式:1-扫描二维码 2-电子签名 3-打印手写签名 4-超时自动签名")
private Integer signatureMode;
}
@@ -448,4 +448,24 @@ public class StockInOrderDTO extends StockInOrderBaseDTO {
@ApiModelProperty("是否返回物料明细(导出时传 true")
private Boolean needDetail;
// ========== PDA入库签名字段 ==========
@ApiModelProperty("签名状态:1-待签名 2-已签名")
private Integer signatureStatus;
@ApiModelProperty("签名时间起")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date signatureTimeFrom;
@ApiModelProperty("签名时间止")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date signatureTimeTo;
/**
* PDA入库签名列表专用:作业任务人员模糊查询字段。
*/
@ApiModelProperty("作业任务人员(模糊查询)")
private String workUserNameLike;
}
@@ -505,4 +505,12 @@ public class StockOutOrderDTO extends StockOutOrderBaseDTO {
@ApiModelProperty("是否返回物料明细(导出时传 true")
private Boolean needDetail;
// ========== PDA出库签名字段 ==========
@ApiModelProperty("签名状态:1-待签名 2-已签名")
private Integer signatureStatus;
/** PDA出库签名列表专用:作业任务人员模糊查询字段 */
@ApiModelProperty("作业任务人员(模糊查询)")
private String workUserNameLike;
}
@@ -64,6 +64,25 @@ public class StockInOrderApi extends BaseController {
return getDataTable(list);
}
/**
* PDA入库签名列表查询
*
* <p>查询入库单状态「已入库」(status=5) 的入库单列表,
* 同时支持「作业任务人员」(workUserName) like 模糊查询,
* 参照简易模式快捷入库列表实现。响应中包含签名相关字段(签名状态、签名时间、签名图片、签名备注)。</p>
*/
@ApiOperation("PDA入库签名列表查询")
@GetMapping("/signatureList")
public TableDataInfo signatureList(StockInOrderDTO stockInOrderDTO) {
//转换实体
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
startPage();
List<StockInOrderPO> list = stockInOrderApplicationService.querySignatureList(stockInOrderDO);
return getDataTable(list);
}
/**
* 编辑入库单
*/
@@ -219,6 +238,28 @@ public class StockInOrderApi extends BaseController {
return AjaxResult.success(stockInOrderApplicationService.receiptEasyMode(stockInOrderDO));
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式调整备注")
@PostMapping(value = "/remarkEasyMode")
public AjaxResult remarkEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
List<InMaterialDetailDTO> materialDetailList = stockInOrderDTO.getMaterialDetailList();
if (materialDetailList != null && !materialDetailList.isEmpty()) {
List<InMaterialDetailDO> inMaterialDetailDOList = new ArrayList<>();
for (InMaterialDetailDTO dto : materialDetailList) {
InMaterialDetailDO detailDO = new InMaterialDetailDO();
BeanUtils.copyProperties(dto, detailDO);
inMaterialDetailDOList.add(detailDO);
}
stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList);
}
return AjaxResult.success(stockInOrderApplicationService.remarkEasyMode(stockInOrderDO));
}
@ApiOperation("pda简易模式修改计划数量")
@GetMapping(value = "/updateQuantity")
public AjaxResult updateQuantity(@RequestParam BigDecimal quantity,
@@ -295,4 +336,15 @@ public class StockInOrderApi extends BaseController {
return stockInOrderApplicationService.batchPush(idList);
}
/**
* PDA批量入库签名
*
* <p>勾选多条入库记录批量签名,更新入库表的签名状态、签名时间、签名图片、签名备注。</p>
*/
@ApiOperation("PDA批量入库签名")
@PostMapping("/batchSignature")
public AjaxResult batchSignature(@RequestBody com.mhd.wms.interfaces.dto.signature.BatchSignatureDTO dto) {
return stockInOrderApplicationService.batchSignature(dto);
}
}
@@ -116,6 +116,22 @@ public class StockOutOrderApi extends BaseController {
return handoverTaskOrderDomainService.customsConfirmOut(outOrderNumbers);
}
/**
* PDA出库签名列表查询
*
* <p>查询出库单状态「已出库」(status=9) 的出库单列表,
* 支持「作业任务人员」(workUserName) like 模糊查询,
* 参照简易模式快捷出库列表实现。</p>
*/
@ApiOperation("PDA出库签名列表查询")
@GetMapping("/signatureList")
public TableDataInfo signatureList(StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO);
startPage();
List<StockOutOrderPO> list = stockOutOrderApplicationService.querySignatureList(stockOutOrderDO);
return getDataTable(list);
}
/**
* 上传并解析出仓委托单Excel
*/
@@ -582,4 +598,15 @@ public class StockOutOrderApi extends BaseController {
}
return stockOutOrderApplicationService.batchPush(idList);
}
/**
* PDA批量出库签名
*
* <p>勾选多条出库记录批量签名,更新出库表的签名状态、签名时间、签名图片、签名备注。</p>
*/
@ApiOperation("PDA批量出库签名")
@PostMapping("/batchSignature")
public AjaxResult batchSignature(@RequestBody com.mhd.wms.interfaces.dto.signature.BatchSignatureDTO dto) {
return stockOutOrderApplicationService.batchSignature(dto);
}
}
@@ -0,0 +1,85 @@
package com.mhd.wms.interfaces.facadeApi.stockSignature;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.system.api.domain.SignatureBatchFeignDTO;
import com.mhd.wms.application.service.stockInOrder.StockInOrderApplicationService;
import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService;
import com.mhd.wms.interfaces.dto.signature.BatchSignatureDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 库存签名API(供OMS端Feign调用,统一更新WMS入/出库单签名字段)
*
* <p>OMS端批量签名后,通过Feign调用此API,
* 更新WMS stock_in_order / stock_out_order 表的签名状态、签名时间、签名图片、签名备注。</p>
*/
@Slf4j
@RestController
@RequestMapping("/stockSignatureApi")
@Api(tags = "库存签名(OMS→WMS")
public class StockSignatureApi extends BaseController {
@Autowired
private StockInOrderApplicationService stockInOrderApplicationService;
@Autowired
private StockOutOrderApplicationService stockOutOrderApplicationService;
/**
* 批量签名(OMS→WMS
*
* <p>接收SignatureBatchFeignDTO,映射为BatchSignatureDTO后,分别调用
* StockInOrderApplicationService.batchSignature 和
* StockOutOrderApplicationService.batchSignature。</p>
*/
@ApiOperation("OMS批量签名-更新WMS入/出库单签名字段")
@PostMapping("/batchSign")
public AjaxResult batchSign(@RequestBody SignatureBatchFeignDTO dto) {
if (dto == null) {
return AjaxResult.error("请求参数不能为空");
}
boolean hasIn = dto.getInOrderIds() != null && !dto.getInOrderIds().isEmpty();
boolean hasOut = dto.getOutOrderIds() != null && !dto.getOutOrderIds().isEmpty();
if (!hasIn && !hasOut) {
return AjaxResult.error("请指定入库单ID列表或出库单ID列表");
}
// 映射 SignatureBatchFeignDTO → BatchSignatureDTO
BatchSignatureDTO batchDTO = new BatchSignatureDTO();
batchDTO.setInOrderIds(dto.getInOrderIds());
batchDTO.setOutOrderIds(dto.getOutOrderIds());
batchDTO.setSignatureStatus(dto.getSignatureStatus() != null ? dto.getSignatureStatus() : 2);
batchDTO.setSignatureTime(dto.getSignatureTime());
batchDTO.setSignaturePic(dto.getSignaturePic());
batchDTO.setSignatureRemark(dto.getSignatureRemark());
// evidencePics: Feign DTO中是comma-separated String → List<String>
if (dto.getEvidencePics() != null && !dto.getEvidencePics().isEmpty()) {
batchDTO.setEvidencePics(java.util.Arrays.asList(dto.getEvidencePics().split(",")));
}
String msg = "";
if (hasIn) {
AjaxResult inResult = stockInOrderApplicationService.batchSignature(batchDTO);
log.info("OMS→WMS批量入库签名完成:{}条,结果:{}", dto.getInOrderIds().size(),
inResult != null ? inResult.get("msg") : "OK");
msg += "入库签名完成";
}
if (hasOut) {
AjaxResult outResult = stockOutOrderApplicationService.batchSignature(batchDTO);
log.info("OMS→WMS批量出库签名完成:{}条,结果:{}", dto.getOutOrderIds().size(),
outResult != null ? outResult.get("msg") : "OK");
if (!msg.isEmpty()) msg += "";
msg += "出库签名完成";
}
return AjaxResult.success(msg);
}
}