From cf5b0c3ca21b3e16328c3782bf9c86c97b6c50b1 Mon Sep 17 00:00:00 2001 From: zxy Date: Fri, 17 Apr 2026 17:51:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(example):=20=E7=94=9F=E4=BA=A7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/jnpf/service/ProOrderService.java | 3 + .../main/java/jnpf/service/ProcService.java | 1 + .../java/jnpf/service/TechProcService.java | 2 + .../jnpf/service/impl/ProLineServiceImpl.java | 8 +- .../service/impl/ProOrderServiceImpl.java | 86 +++++++++- .../jnpf/service/impl/ProcServiceImpl.java | 6 + .../service/impl/TechProcServiceImpl.java | 12 ++ .../jnpf/controller/ProOrderController.java | 14 +- .../jnpf/controller/TechProcController.java | 45 ++++- .../jnpf/model/order/ExampleOrderForm.java | 27 +++ .../java/jnpf/model/order/OrderLineForm.java | 47 ++++++ .../jnpf/model/order/ProSoRelationEntity.java | 4 +- .../model/orderdetail/OrderDetailForm.java | 4 + .../model/techproc/TechProcPagination.java | 2 +- .../src/views/example/proline/select.vue | 3 +- .../src/views/example/supplier/form.vue | 3 +- .../views/example/tsoorder/generate/index.vue | 159 ++++++++++++++---- 17 files changed, 369 insertions(+), 57 deletions(-) create mode 100644 jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/OrderLineForm.java diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderService.java index 3812a59..52cc6e7 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderService.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderService.java @@ -1,6 +1,7 @@ package jnpf.service; import com.baomidou.mybatisplus.extension.service.IService; +import jnpf.model.order.ExampleOrderForm; import jnpf.model.order.ProOrderEntity; import jnpf.model.order.ProOrderPagination; import jnpf.model.order.ProOrderVO; @@ -32,4 +33,6 @@ public interface ProOrderService extends IService { * @return 生产订单信息 */ ProOrderVO getInfoById(Integer id); + + void generate(ExampleOrderForm proOrderForm); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProcService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProcService.java index 4ac6441..84fbb63 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProcService.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProcService.java @@ -29,4 +29,5 @@ public interface ProcService extends IService { String checkForm(ProcForm form, int i); void saveOrUpdate(ProcForm procForm, String id, boolean isSave) throws Exception; + ProcEntity getByProcCd(String s); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TechProcService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TechProcService.java index 5afb67c..a452e06 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TechProcService.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/TechProcService.java @@ -25,4 +25,6 @@ public interface TechProcService extends IService { String checkForm(TechProcForm form, int type); void saveOrUpdate(TechProcForm techProcForm, String id, boolean isSave) throws Exception; + + List getSelectList(String selectKey); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProLineServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProLineServiceImpl.java index f74b430..8500523 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProLineServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProLineServiceImpl.java @@ -143,13 +143,13 @@ public class ProLineServiceImpl extends ServiceImpl getSelectList(String keyWord) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProLineEntity::getDeleteMark, 0); + wrapper.eq(ProLineEntity::getDeleteMark, "0"); wrapper.eq(ProLineEntity::getEnabledStatus, 1); if (ObjectUtil.isNotEmpty(keyWord)) { - wrapper.like(ProLineEntity::getProLineName, keyWord).or() - .like(ProLineEntity::getProLineCd, keyWord); + wrapper.and(w -> w.like(ProLineEntity::getProLineName, keyWord) + .or() + .like(ProLineEntity::getProLineCd, keyWord)); } - wrapper.select(ProLineEntity::getId, ProLineEntity::getProLineName); wrapper.orderByAsc(ProLineEntity::getProLineName); return this.list(wrapper); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderServiceImpl.java index 0e528c1..e08ea08 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderServiceImpl.java @@ -3,13 +3,17 @@ package jnpf.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import jnpf.entity.ExampleOrderEntity; +import jnpf.entity.OrderDetailEntity; import jnpf.mapper.ProOrderMapper; -import jnpf.model.order.ProOrderEntity; -import jnpf.model.order.ProOrderPagination; -import jnpf.model.order.ProOrderVO; -import jnpf.service.ProOrderService; +import jnpf.model.order.*; +import jnpf.model.orderdetail.OrderDetailForm; +import jnpf.service.*; +import jnpf.util.GeneraterSwapUtil; import jnpf.util.JsonUtil; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.List; @@ -23,8 +27,21 @@ import java.util.List; * @日期: 2024-04-17 */ @Service +@RequiredArgsConstructor public class ProOrderServiceImpl extends ServiceImpl implements ProOrderService { + + private final ProSoRelationService proSoRelationService; + + private final ProOrderLineService proOrderLineService; + + private final OrderDetailService orderDetailService; + + private final ExampleOrderService orderService; + + private final GeneraterSwapUtil generaterSwapUtil; + + @Override public List getList(ProOrderPagination proOrderPagination) { QueryWrapper query = new QueryWrapper<>(); @@ -83,4 +100,65 @@ public class ProOrderServiceImpl extends ServiceImpl orderItems = orderForm.getOrderItems(); + for (OrderDetailForm orderItem : orderItems) { + OrderDetailEntity detailEntity = orderDetailService.getById(orderItem.getItemId()); + ExampleOrderEntity orderEntity = orderService.getById(detailEntity.getSaleOrdId()); + if (detailEntity != null) { + ProSoRelationEntity proSoRelationEntity = new ProSoRelationEntity(); + proSoRelationEntity.setProId(proOrder.getId()); + proSoRelationEntity.setProNo(proOrder.getProNo()); + proSoRelationEntity.setSaleOrdId(detailEntity.getSaleOrdId()); + proSoRelationEntity.setSaleOrdNo(orderEntity.getSaleOrdNo()); + proSoRelationEntity.setChangProQty(orderItem.getPlanQty()); + proSoRelationEntity.setProNo(proOrder.getProNo()); + proSoRelationEntity.setCustId(Long.valueOf(orderEntity.getCustId())); + proSoRelationEntity.setCustName(orderEntity.getCustName()); + proSoRelationEntity.setMaterialName(detailEntity.getMaterialName()); + proSoRelationEntity.setMaterialCode(detailEntity.getMaterialCode()); + proSoRelationEntity.setSpec(detailEntity.getSpec()); + proSoRelationEntity.setUnit(detailEntity.getUnit()); + proSoRelationEntity.setMaterialId(detailEntity.getMaterialId()); + proSoRelationService.save(proSoRelationEntity); + } + } + + List proLines = orderForm.getProLines(); + for (OrderLineForm proLine : proLines) { + ProOrderLineEntity lineEntity = JsonUtil.getJsonToBean(proLine, ProOrderLineEntity.class); + lineEntity.setProId(proOrder.getId()); + lineEntity.setProNo(proOrder.getProNo()); + lineEntity.setRemark(proLine.getRemark()); + lineEntity.setProBgDate(proLine.getPlanStartDate()); + lineEntity.setProEndDate(proLine.getPlanEndDate()); +// lineEntity.setLineId(Integer.valueOf(proLine.getLineId())); + lineEntity.setLineCd(proLine.getLineCode()); + lineEntity.setLineName(proLine.getLineName()); + lineEntity.setPlanQty(proLine.getAllocateQty()); + proOrderLineService.save(lineEntity); + } + } } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProcServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProcServiceImpl.java index b8e9342..8b9240b 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProcServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProcServiceImpl.java @@ -139,4 +139,10 @@ public class ProcServiceImpl extends ServiceImpl impleme } } + @Override + public ProcEntity getByProcCd(String s) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcEntity::getProcCd, s); + return this.getOne(wrapper); + } } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TechProcServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TechProcServiceImpl.java index 424acfd..90f909b 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TechProcServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/TechProcServiceImpl.java @@ -136,4 +136,16 @@ public class TechProcServiceImpl extends ServiceImpl getSelectList(String selectKey) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TechProcEntity::getDeleteMark, 0); + wrapper.eq(TechProcEntity::getEnabledStatus, 1); + if (StringUtil.isNotEmpty(selectKey)) { + wrapper.and(w -> w.like(TechProcEntity::getTechProc, selectKey)); + } + wrapper.orderByDesc(TechProcEntity::getId); + return this.list(wrapper); + } } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ProOrderController.java b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ProOrderController.java index e63cc1c..cf4e247 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ProOrderController.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ProOrderController.java @@ -10,10 +10,7 @@ import jnpf.base.ActionResult; import jnpf.base.vo.PageListVO; import jnpf.base.vo.PaginationVO; import jnpf.constant.MsgCode; -import jnpf.model.order.ProOrderEntity; -import jnpf.model.order.ProOrderForm; -import jnpf.model.order.ProOrderPagination; -import jnpf.model.order.ProOrderVO; +import jnpf.model.order.*; import jnpf.service.ProOrderService; import jnpf.util.JsonUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -74,13 +71,12 @@ public class ProOrderController { * @param proOrderForm 实体模型 * @return */ - @Operation(summary = "新建生产订单") + @Operation(summary = "生成生产订单") @SaCheckPermission("example.proOrder") @Parameter(name = "proOrderForm", description = "实体模型", required = true) - @PostMapping() - public ActionResult create(@RequestBody ProOrderForm proOrderForm) { - ProOrderEntity entity = JsonUtil.getJsonToBean(proOrderForm, ProOrderEntity.class); - proOrderService.save(entity); + @PostMapping("/generate") + public ActionResult generate(@RequestBody ExampleOrderForm proOrderForm) { + proOrderService.generate(proOrderForm); return ActionResult.success(MsgCode.SU001.get()); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TechProcController.java b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TechProcController.java index 843c576..885d96e 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TechProcController.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/TechProcController.java @@ -5,11 +5,13 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jnpf.base.ActionResult; import jnpf.base.vo.PageListVO; import jnpf.base.vo.PaginationVO; +import jnpf.model.proc.ProcEntity; import jnpf.model.techproc.TechProcEntity; import jnpf.model.techproc.TechProcForm; import jnpf.model.techproc.TechProcPagination; import jnpf.permission.entity.UserEntity; import jnpf.permission.service.UserService; +import jnpf.service.ProcService; import jnpf.service.TechProcService; import jnpf.util.JsonUtil; import jnpf.util.StringUtil; @@ -17,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -35,8 +38,12 @@ public class TechProcController { @Autowired private UserService userService; + @Autowired + private ProcService procService; + /** * 列表 + * * @param techProcPagination 分页查询对象 * @return 列表结果集 */ @@ -65,6 +72,7 @@ public class TechProcController { /** * 详情 + * * @param id 主键 * @return 详情结果集 */ @@ -80,6 +88,7 @@ public class TechProcController { /** * 新建 + * * @param techProcForm 表单对象 * @return 新建结果 */ @@ -100,7 +109,8 @@ public class TechProcController { /** * 编辑 - * @param id 主键 + * + * @param id 主键 * @param techProcForm 表单对象 * @return 编辑结果 */ @@ -124,4 +134,37 @@ public class TechProcController { return ActionResult.fail("更新失败,数据不存在"); } } + + // 工艺流程下拉框,支持查询 + @Operation(summary = "获取工艺流程下拉框") + @GetMapping("/getSelect") + public ActionResult getSelect(@RequestParam(value = "selectKey", required = false) String selectKey) { + List list = techProcService.getSelectList(selectKey); + for (TechProcEntity techProcEntity : list) { + String name = ""; + String[] split = techProcEntity.getTechProc().split("-"); + for (String s : split) { + ProcEntity procEntity = procService.getByProcCd(s); + if (procEntity != null) { + name += procEntity.getProcName() + "-"; + } + } + if (StringUtil.isNotEmpty(name)) { + techProcEntity.setTechProcName(name.substring(0, name.length() - 1)); + } else { + techProcEntity.setTechProcName(""); + } + } + List> result = list.stream() + .map(entity -> { + Map map = new HashMap<>(3); + map.put("id", entity.getId()); + map.put("code", entity.getTechProc()); + map.put("name", entity.getTechProcName()); + return map; + }) + .collect(Collectors.toList()); + return ActionResult.success(result); + } + } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ExampleOrderForm.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ExampleOrderForm.java index 5603d9b..28821fe 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ExampleOrderForm.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ExampleOrderForm.java @@ -3,6 +3,7 @@ package jnpf.model.order; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jnpf.entity.OrderDetailEntity; +import jnpf.model.orderdetail.OrderDetailForm; import lombok.Data; import java.math.BigDecimal; @@ -130,4 +131,30 @@ public class ExampleOrderForm { @JsonProperty("deliveryStatus") private String deliveryStatus; + + private Date planBgDate; + + private Date planEndDate; + + private BigDecimal planQty; + + private String materialName; + + private String materialCode; + + private String materialId; + + private String spec; + + private String unit; + + private String processFlow; + + private String isAllLine; + + + private List orderItems; + + private List proLines; + } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/OrderLineForm.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/OrderLineForm.java new file mode 100644 index 0000000..5f77513 --- /dev/null +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/OrderLineForm.java @@ -0,0 +1,47 @@ +package jnpf.model.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 生产订单产线信息 Form + * + * @版本: V3.5 + * @版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) + * @作者: JNPF开发平台组 + * @日期: 2024-04-17 + */ +@Data +@Schema(description = "OrderLineForm对象", name = "生产订单产线信息表单对象") +public class OrderLineForm implements Serializable { + + @Schema(description = "主键") + private Integer id; + + @Schema(description = "产线编码") + private String lineCode; + + @Schema(description = "产线名称") + private String lineName; + + @Schema(description = "计划开始日期") + private Date planStartDate; + + @Schema(description = "计划结束日期") + private Date planEndDate; + + @Schema(description = "分配数量") + private BigDecimal allocateQty; + + @Schema(description = "完成数量") + private BigDecimal completedQty; + + @Schema(description = "备注") + private String remark; + + private String lineId; +} diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProSoRelationEntity.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProSoRelationEntity.java index 90a2e90..b67ab0c 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProSoRelationEntity.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProSoRelationEntity.java @@ -58,7 +58,7 @@ public class ProSoRelationEntity { private String remark; @TableField("sale_ord_id") - private Integer saleOrdId; + private Long saleOrdId; @TableField("sale_ord_no") private String saleOrdNo; @@ -67,7 +67,7 @@ public class ProSoRelationEntity { private BigDecimal changProQty; @TableField("cust_id") - private Integer custId; + private Long custId; @TableField("cust_name") private String custName; diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/orderdetail/OrderDetailForm.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/orderdetail/OrderDetailForm.java index 2f7d7b4..1fe4270 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/orderdetail/OrderDetailForm.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/orderdetail/OrderDetailForm.java @@ -82,4 +82,8 @@ public class OrderDetailForm implements Serializable { @Schema(description = "流程任务ID") private String flowTaskId; + private String itemId; + + private BigDecimal planQty; + } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/techproc/TechProcPagination.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/techproc/TechProcPagination.java index 7f750f7..a3cb77a 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/techproc/TechProcPagination.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/techproc/TechProcPagination.java @@ -12,7 +12,7 @@ import lombok.Data; public class TechProcPagination extends Pagination { @Schema(description = "selectKey") - private String[] selectKey; + private String selectKey; @Schema(description = "json") private String json; diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proline/select.vue b/jnpf-java-boot/jnpf-web/src/views/example/proline/select.vue index 9ba49ac..e24979b 100644 --- a/jnpf-java-boot/jnpf-web/src/views/example/proline/select.vue +++ b/jnpf-java-boot/jnpf-web/src/views/example/proline/select.vue @@ -84,7 +84,7 @@ export default { data: { currentPage: this.page.currentPage, pageSize: this.page.pageSize, - selectKey: this.search.selectKey, + // selectKey: this.search.selectKey, dataType: 0, enabledStatus: 1 } @@ -147,6 +147,7 @@ export default { } const selectedData = this.selectedLines.map(line => ({ + lineId: line.id || line.lineId || '', lineCode: line.proLineCd, lineName: line.proLineName, remark: line.remark || "" diff --git a/jnpf-java-boot/jnpf-web/src/views/example/supplier/form.vue b/jnpf-java-boot/jnpf-web/src/views/example/supplier/form.vue index 28582db..d91b9c7 100644 --- a/jnpf-java-boot/jnpf-web/src/views/example/supplier/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/example/supplier/form.vue @@ -1,5 +1,5 @@