批量电子签名
This commit is contained in:
+84
@@ -0,0 +1,84 @@
|
||||
package com.mhd.wms.application.service.signature;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
|
||||
import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService;
|
||||
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
|
||||
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 签名自动任务:超过上架时间/出库交接时间 24 小时的订单自动设为已签名
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SignatureAutoTaskService {
|
||||
|
||||
@Autowired
|
||||
private IStockInOrderService stockInOrderService;
|
||||
@Autowired
|
||||
private IStockOutOrderService stockOutOrderService;
|
||||
|
||||
/** 每30分钟执行一次 */
|
||||
@Scheduled(fixedDelay = 1800000)
|
||||
public void autoSignature() {
|
||||
Date cutoffTime = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000L);
|
||||
int inCount = autoSignInOrders(cutoffTime);
|
||||
int outCount = autoSignOutOrders(cutoffTime);
|
||||
if (inCount > 0 || outCount > 0) {
|
||||
log.info("签名自动任务完成 - 入库签名:{}条,出库签名:{}条", inCount, outCount);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 入库单自动签名:completionTime 超过 24h 且 signatureStatus=1(待签名) 的设为已签名
|
||||
*/
|
||||
private int autoSignInOrders(Date cutoffTime) {
|
||||
List<StockInOrder> list = stockInOrderService.list(
|
||||
new LambdaQueryWrapper<StockInOrder>()
|
||||
.eq(StockInOrder::getSignatureStatus, 1)
|
||||
.eq(StockInOrder::getStatus, 5)
|
||||
.lt(StockInOrder::getCompletionTime, cutoffTime)
|
||||
.isNotNull(StockInOrder::getCompletionTime)
|
||||
);
|
||||
if (list.isEmpty()) return 0;
|
||||
List<Long> ids = list.stream().map(StockInOrder::getInOrderId).collect(Collectors.toList());
|
||||
stockInOrderService.update(new LambdaUpdateWrapper<StockInOrder>()
|
||||
.in(StockInOrder::getInOrderId, ids)
|
||||
.set(StockInOrder::getSignatureStatus, 2)
|
||||
.set(StockInOrder::getSignatureTime, new Date())
|
||||
.set(StockInOrder::getSignatureRemark, "系统自动签名:上架完成超过24小时")
|
||||
);
|
||||
return ids.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* 出库单自动签名:completeTime 超过 24h 且 signatureStatus=1(待签名) 的设为已签名
|
||||
*/
|
||||
private int autoSignOutOrders(Date cutoffTime) {
|
||||
List<StockOutOrder> list = stockOutOrderService.list(
|
||||
new LambdaQueryWrapper<StockOutOrder>()
|
||||
.eq(StockOutOrder::getSignatureStatus, 1)
|
||||
.eq(StockOutOrder::getStatus, 9)
|
||||
.lt(StockOutOrder::getCompleteTime, cutoffTime)
|
||||
.isNotNull(StockOutOrder::getCompleteTime)
|
||||
);
|
||||
if (list.isEmpty()) return 0;
|
||||
List<Long> ids = list.stream().map(StockOutOrder::getOutOrderId).collect(Collectors.toList());
|
||||
stockOutOrderService.update(new LambdaUpdateWrapper<StockOutOrder>()
|
||||
.in(StockOutOrder::getOutOrderId, ids)
|
||||
.set(StockOutOrder::getSignatureStatus, 2)
|
||||
.set(StockOutOrder::getSignatureTime, new Date())
|
||||
.set(StockOutOrder::getSignatureRemark, "系统自动签名:出库交接完成超过24小时")
|
||||
);
|
||||
return ids.size();
|
||||
}
|
||||
}
|
||||
+23
@@ -2816,4 +2816,27 @@ public class StockInOrderApplicationService {
|
||||
}
|
||||
stockInOrderService.updateById(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* PDA批量入库签名
|
||||
*/
|
||||
public AjaxResult batchSignature(com.mhd.wms.interfaces.dto.signature.BatchSignatureDTO dto) {
|
||||
List<Long> inOrderIds = dto.getInOrderIds();
|
||||
if (inOrderIds == null || inOrderIds.isEmpty()) {
|
||||
return AjaxResult.error("请选择需要签名的入库单");
|
||||
}
|
||||
int success = 0;
|
||||
Date now = new Date();
|
||||
for (Long id : inOrderIds) {
|
||||
StockInOrder entity = new StockInOrder();
|
||||
entity.setInOrderId(id);
|
||||
entity.setSignatureStatus(dto.getSignatureStatus() != null ? dto.getSignatureStatus() : 2);
|
||||
entity.setSignatureTime(dto.getSignatureTime() != null ? dto.getSignatureTime() : now);
|
||||
entity.setSignaturePic(dto.getSignaturePic());
|
||||
entity.setSignatureRemark(dto.getSignatureRemark());
|
||||
stockInOrderService.updateById(entity);
|
||||
success++;
|
||||
}
|
||||
return AjaxResult.success("批量签名成功,共" + success + "条");
|
||||
}
|
||||
}
|
||||
+23
@@ -2089,4 +2089,27 @@ public class StockOutOrderApplicationService {
|
||||
stockOutOrderService.updateById(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* PDA批量出库签名
|
||||
*/
|
||||
public AjaxResult batchSignature(com.mhd.wms.interfaces.dto.signature.BatchSignatureDTO dto) {
|
||||
List<Long> outOrderIds = dto.getOutOrderIds();
|
||||
if (outOrderIds == null || outOrderIds.isEmpty()) {
|
||||
return AjaxResult.error("请选择需要签名的出库单");
|
||||
}
|
||||
int success = 0;
|
||||
Date now = new Date();
|
||||
for (Long id : outOrderIds) {
|
||||
StockOutOrder entity = new StockOutOrder();
|
||||
entity.setOutOrderId(id);
|
||||
entity.setSignatureStatus(dto.getSignatureStatus() != null ? dto.getSignatureStatus() : 2);
|
||||
entity.setSignatureTime(dto.getSignatureTime() != null ? dto.getSignatureTime() : now);
|
||||
entity.setSignaturePic(dto.getSignaturePic());
|
||||
entity.setSignatureRemark(dto.getSignatureRemark());
|
||||
stockOutOrderService.updateById(entity);
|
||||
success++;
|
||||
}
|
||||
return AjaxResult.success("批量签名成功,共" + success + "条");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
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("签名备注")
|
||||
private String signatureRemark;
|
||||
|
||||
@ApiModelProperty("签名方式:1-电子签名 2-附件上传 3-扫二维码 4-系统自动")
|
||||
private Integer signatureMode;
|
||||
}
|
||||
+11
@@ -314,4 +314,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);
|
||||
}
|
||||
|
||||
}
|
||||
+11
@@ -589,4 +589,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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user