feat: 仓库简易打印、工作站标签打印、生产订单打印工序修复
- 仓库管理(mom-frontend-vue2): 新增简易标签打印,不依赖MinIO,使用前端qrcode+window.print - 工作站(erp-frontend-vue): 新增WorkstationLabelPrint组件,支持批量打印工作站标签 - 生产订单: handlePrint改用getProcessTasksByWorkorder,从工艺路线获取工序数据,解决无pro_task时打印无数据问题 Made-with: Cursor
This commit is contained in:
@@ -34,6 +34,8 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -117,7 +119,29 @@ public class ProWorkorderController extends BaseController
|
||||
@GetMapping(value = "/{workorderId}")
|
||||
public AjaxResult getInfo(@PathVariable("workorderId") Long workorderId)
|
||||
{
|
||||
return AjaxResult.success(proWorkorderService.selectProWorkorderByWorkorderId(workorderId));
|
||||
ProWorkorder wo = proWorkorderService.selectProWorkorderByWorkorderId(workorderId);
|
||||
if (wo != null) {
|
||||
wo.setProductionLine(wo.getAttr1());
|
||||
if (wo.getAttr2() != null && !wo.getAttr2().isEmpty()) {
|
||||
try {
|
||||
wo.setProcessTime(Integer.parseInt(wo.getAttr2()));
|
||||
} catch (NumberFormatException ignored) {
|
||||
wo.setProcessTime(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
return AjaxResult.success(wo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取工单工序列表(基于工艺路线,不依赖 pro_task)
|
||||
* 用于打印等场景,即使未排产也能显示工序信息
|
||||
*/
|
||||
@GetMapping(value = "/{workorderId}/processTasks")
|
||||
public AjaxResult getProcessTasksByWorkorder(@PathVariable("workorderId") Long workorderId)
|
||||
{
|
||||
List<ProTask> tasks = proTaskService.selectProTaskProcessViewByWorkorder(workorderId);
|
||||
return AjaxResult.success(tasks);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,6 +152,11 @@ public class ProWorkorderController extends BaseController
|
||||
@PostMapping
|
||||
public AjaxResult add(@RequestBody ProWorkorder proWorkorder)
|
||||
{
|
||||
syncAttrFromForm(proWorkorder);
|
||||
// 跟单编号为空时自动生成:XSDD-yyyyMMddHHmmss
|
||||
if (StringUtils.isEmpty(proWorkorder.getPpNumber())) {
|
||||
proWorkorder.setPpNumber("XSDD-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
|
||||
}
|
||||
// 工单编码自动生成(使用统一编码引擎)
|
||||
if(StringUtils.isEmpty(proWorkorder.getWorkorderCode())){
|
||||
proWorkorder.setWorkorderCode(autoCodeUtil.genSerialCode(UserConstants.SCGD_CODE, ""));
|
||||
@@ -162,6 +191,11 @@ public class ProWorkorderController extends BaseController
|
||||
@PutMapping
|
||||
public AjaxResult edit(@RequestBody ProWorkorder proWorkorder)
|
||||
{
|
||||
syncAttrFromForm(proWorkorder);
|
||||
// 跟单编号为空时自动生成:XSDD-yyyyMMddHHmmss
|
||||
if (StringUtils.isEmpty(proWorkorder.getPpNumber())) {
|
||||
proWorkorder.setPpNumber("XSDD-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
|
||||
}
|
||||
if(UserConstants.NOT_UNIQUE.equals(proWorkorderService.checkWorkorderCodeUnique(proWorkorder))){
|
||||
return AjaxResult.error("生产工单编号已存在!");
|
||||
}
|
||||
@@ -206,6 +240,16 @@ public class ProWorkorderController extends BaseController
|
||||
return toAjax(proWorkorderService.deleteProWorkorderByWorkorderIds(workorderIds));
|
||||
}
|
||||
|
||||
/** 将表单字段 productionLine、processTime 同步到 attr1、attr2 以便持久化 */
|
||||
private void syncAttrFromForm(ProWorkorder proWorkorder) {
|
||||
if (proWorkorder.getProductionLine() != null) {
|
||||
proWorkorder.setAttr1(proWorkorder.getProductionLine());
|
||||
}
|
||||
if (proWorkorder.getProcessTime() != null) {
|
||||
proWorkorder.setAttr2(String.valueOf(proWorkorder.getProcessTime()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据生产工单中的产品生成BOM物料行
|
||||
* @param workorderId
|
||||
|
||||
Reference in New Issue
Block a user