From 67772cc8e6ab3ad78859ada30b55222d637c809c Mon Sep 17 00:00:00 2001 From: zxy Date: Fri, 24 Apr 2026 09:18:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(proorder):=20=E6=96=B0=E5=A2=9E=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/jnpf/service/OrderDetailService.java | 6 +- .../jnpf/service/ProOrderLineService.java | 2 + .../java/jnpf/service/ProOrderService.java | 1 + .../jnpf/service/ProSoRelationService.java | 3 + .../service/impl/OrderDetailServiceImpl.java | 10 +- .../service/impl/ProOrderLineServiceImpl.java | 9 +- .../service/impl/ProOrderServiceImpl.java | 58 ++- .../impl/ProSoRelationServiceImpl.java | 10 + .../controller/ExampleOrderController.java | 2 +- .../jnpf/controller/ProOrderController.java | 12 +- .../java/jnpf/model/order/ProOrderVO.java | 5 + .../src/views/example/proorder/api.js | 63 +++ .../src/views/example/proorder/detail.vue | 207 +++++++++ .../views/example/proorder/generateForm.vue | 85 ++++ .../src/views/example/proorder/index.vue | 399 ++++++++++++++++++ 15 files changed, 856 insertions(+), 16 deletions(-) create mode 100644 jnpf-java-boot/jnpf-web/src/views/example/proorder/api.js create mode 100644 jnpf-java-boot/jnpf-web/src/views/example/proorder/detail.vue create mode 100644 jnpf-java-boot/jnpf-web/src/views/example/proorder/generateForm.vue create mode 100644 jnpf-java-boot/jnpf-web/src/views/example/proorder/index.vue diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/OrderDetailService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/OrderDetailService.java index afb4004..c4fcec4 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/OrderDetailService.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/OrderDetailService.java @@ -1,9 +1,9 @@ package jnpf.service; import com.baomidou.mybatisplus.extension.service.IService; -import jnpf.model.orderdetail.OrderDetailEntity; import jnpf.model.order.OrderItemWithOrderPagination; import jnpf.model.order.OrderItemWithOrderVO; +import jnpf.model.orderdetail.OrderDetailEntity; import jnpf.model.orderdetail.OrderDetailForm; import jnpf.model.orderdetail.OrderDetailPagination; @@ -33,7 +33,9 @@ public interface OrderDetailService extends IService { * @param saleOrdId 销售订单ID * @return 订单明细列表 */ - List getListByOrderId(Long saleOrdId); + List getListBySaleOrderId(Long saleOrdId); + + List getListByOrderId(Long orderId); List getOrderItemWithOrder(OrderItemWithOrderPagination pagination); diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderLineService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderLineService.java index 92ce71c..0ef7fdc 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderLineService.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProOrderLineService.java @@ -30,4 +30,6 @@ public interface ProOrderLineService extends IService { * @return 产线订单列表 */ List getListByProNo(String proNo); + + boolean removeByProId(Integer id); } 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 cf2769f..5c74ee6 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 @@ -38,4 +38,5 @@ public interface ProOrderService extends IService { String generateCheck(ExampleOrderForm proOrderForm); + String removeInfo(ProOrderEntity proOrderEntity); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProSoRelationService.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProSoRelationService.java index 8b355ad..576c2a0 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProSoRelationService.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/ProSoRelationService.java @@ -3,6 +3,8 @@ package jnpf.service; import com.baomidou.mybatisplus.extension.service.IService; import jnpf.model.order.ProSoRelationEntity; +import java.util.List; + /** * 生产订单对应销售订单 Service * @@ -13,4 +15,5 @@ import jnpf.model.order.ProSoRelationEntity; */ public interface ProSoRelationService extends IService { + List getListByProId(Integer id); } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/OrderDetailServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/OrderDetailServiceImpl.java index 4943543..aae32a7 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/OrderDetailServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/OrderDetailServiceImpl.java @@ -31,13 +31,21 @@ public class OrderDetailServiceImpl extends ServiceImpl getListByOrderId(Long saleOrdId) { + public List getListBySaleOrderId(Long saleOrdId) { QueryWrapper query = new QueryWrapper<>(); query.lambda().eq(OrderDetailEntity::getSaleOrdId, saleOrdId); query.lambda().orderByDesc(OrderDetailEntity::getCreatorTime); return this.list(query); } + @Override + public List getListByOrderId(Long orderId) { + QueryWrapper query = new QueryWrapper<>(); + query.lambda().eq(OrderDetailEntity::getId, orderId); + query.lambda().orderByDesc(OrderDetailEntity::getCreatorTime); + return this.list(query); + } + @Override public List getOrderItemWithOrder(OrderItemWithOrderPagination pagination) { Page page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize()); diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderLineServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderLineServiceImpl.java index d2df24f..450ecbe 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderLineServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProOrderLineServiceImpl.java @@ -35,8 +35,15 @@ public class ProOrderLineServiceImpl extends ServiceImpl query = new QueryWrapper<>(); query.lambda().eq(ProOrderLineEntity::getProNo, proNo); query.lambda().and(wrapper -> wrapper.isNull(ProOrderLineEntity::getDeleteMark) - .or().eq(ProOrderLineEntity::getDeleteMark, 1)); + .or().eq(ProOrderLineEntity::getDeleteMark, 0)); query.lambda().orderByAsc(ProOrderLineEntity::getLineCd); return this.list(query); } + + @Override + public boolean removeByProId(Integer id) { + QueryWrapper query = new QueryWrapper<>(); + query.lambda().eq(ProOrderLineEntity::getProId, id); + return this.remove(query); + } } 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 be22eaf..c5f38dc 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,10 +3,9 @@ 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.model.order.ExampleOrderEntity; -import jnpf.model.orderdetail.OrderDetailEntity; import jnpf.mapper.ProOrderMapper; import jnpf.model.order.*; +import jnpf.model.orderdetail.OrderDetailEntity; import jnpf.model.orderdetail.OrderDetailForm; import jnpf.service.*; import jnpf.util.GeneraterSwapUtil; @@ -99,10 +98,22 @@ public class ProOrderServiceImpl extends ServiceImpl lineEntities = proOrderLineService.getListByProId(id); + ProOrderVO proOrderVO = JsonUtil.getJsonToBean(entity, ProOrderVO.class); + proOrderVO.setLineList(lineEntities); + + List soRelationEntities = proSoRelationService.getListByProId(id); +// for (ProSoRelationEntity soRelationEntity : soRelationEntities) { + // 根据销售订单ID查询销售订单信息 +// ExampleOrderEntity orderEntity = orderService.getById(soRelationEntity.getSaleOrdId()); +// List detailEntityList = orderDetailService.getListBySaleOrderId(soRelationEntity.getSaleOrdId()); + // 统计转生成数量 produce_qty 累加 +// BigDecimal produceQty = detailEntityList.stream().map(OrderDetailEntity::getProduceQty).reduce(BigDecimal.ZERO, BigDecimal::add); +// soRelationEntity.setChangProQty(produceQty); +// } + proOrderVO.setOrderList(soRelationEntities); + return proOrderVO; } @Override @@ -175,7 +186,7 @@ public class ProOrderServiceImpl extends ServiceImpl detailEntities = orderDetailService.getListByOrderId(detailEntity.getSaleOrdId()); + List detailEntities = orderDetailService.getListBySaleOrderId(detailEntity.getSaleOrdId()); boolean allProduce = detailEntities.stream().allMatch(item -> "2".equals(item.getOrdItemStatus())); if (allProduce) { orderEntity.setProStatus("2"); @@ -223,4 +234,37 @@ public class ProOrderServiceImpl extends ServiceImpl soRelationEntityList = proSoRelationService.getListByProId(proOrderEntity.getId()); + for (ProSoRelationEntity proSoRelationEntity : soRelationEntityList) { + OrderDetailEntity detailEntity = orderDetailService.getById(proSoRelationEntity.getProItemId()); + detailEntity.setProduceQty(detailEntity.getProduceQty().add(proSoRelationEntity.getChangProQty())); + if (detailEntity.getProduceQty().compareTo(BigDecimal.ZERO) == 0) { + detailEntity.setOrdItemStatus("0"); + } else { + detailEntity.setOrdItemStatus("1"); + } + orderDetailService.updateById(detailEntity); + proSoRelationService.removeById(proSoRelationEntity); + List saleOrderDetailList = orderDetailService.getListBySaleOrderId(proSoRelationEntity.getSaleOrdId()); + for (OrderDetailEntity orderDetailEntity : saleOrderDetailList) { + if ("0".equals(orderDetailEntity.getOrdItemStatus())) { + ExampleOrderEntity orderEntity = orderService.getById(orderDetailEntity.getSaleOrdId()); + orderEntity.setProStatus("0"); + orderService.updateById(orderEntity); + } + } + } + // 产线数据直接删除 + boolean b = proOrderLineService.removeByProId(proOrderEntity.getId()); + if (!b) { + return "删除产线数据失败"; + } + return null; + } } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProSoRelationServiceImpl.java b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProSoRelationServiceImpl.java index 8948609..fb37093 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProSoRelationServiceImpl.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-biz/src/main/java/jnpf/service/impl/ProSoRelationServiceImpl.java @@ -1,11 +1,14 @@ package jnpf.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jnpf.mapper.ProSoRelationMapper; import jnpf.model.order.ProSoRelationEntity; import jnpf.service.ProSoRelationService; import org.springframework.stereotype.Service; +import java.util.List; + /** * 生产订单对应销售订单 ServiceImpl * @@ -17,4 +20,11 @@ import org.springframework.stereotype.Service; @Service public class ProSoRelationServiceImpl extends ServiceImpl implements ProSoRelationService { + @Override + public List getListByProId(Integer id) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(ProSoRelationEntity::getProId, id); + query.eq(ProSoRelationEntity::getDeleteMark, 0); + return baseMapper.selectList(query); + } } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ExampleOrderController.java b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ExampleOrderController.java index 8f225d0..95523e6 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ExampleOrderController.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-controller/src/main/java/jnpf/controller/ExampleOrderController.java @@ -219,7 +219,7 @@ public class ExampleOrderController { } Map ExampleOrderMap=JsonUtil.entityToMap(entity); ExampleOrderMap.put("id", ExampleOrderMap.get("id")); - List orderDetailList = orderDetailService.getListByOrderId(entity.getId()); + List orderDetailList = orderDetailService.getListBySaleOrderId(entity.getId()); for (OrderDetailEntity orderDetailEntity : orderDetailList) { orderDetailEntity.setUnitName("1".equals(orderDetailEntity.getUnit())?"kg":"T"); } 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 dde3288..ed48e28 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 @@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Objects; /** * 生产订单 控制类 @@ -140,11 +141,14 @@ public class ProOrderController { @Operation(summary = "删除生产订单") @DeleteMapping("/delete/{id}") public ActionResult delete(@PathVariable("id") Integer id) { - ProOrderEntity byId = proOrderService.getById(id); - if (ObjectUtil.isNotEmpty(byId)) { - proOrderService.removeById(id); + ProOrderEntity proOrderEntity = proOrderService.getById(id); + if (ObjectUtil.isNotEmpty(proOrderEntity)) { + if (!Objects.equals(proOrderEntity.getPlanStatus(), "0")) { + return ActionResult.fail("该订单产品已下发,不允许删除!"); + } + proOrderService.removeInfo(proOrderEntity); return ActionResult.success("删除成功"); } - return ActionResult.success("数据不存在,请刷新界面!"); + return ActionResult.fail("该订单产品信息不存在,请刷新数据!"); } } diff --git a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProOrderVO.java b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProOrderVO.java index 301fec6..0a45cd7 100644 --- a/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProOrderVO.java +++ b/jnpf-java-boot/jnpf-example/jnpf-example-entity/src/main/java/jnpf/model/order/ProOrderVO.java @@ -6,6 +6,7 @@ import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 生产订单 VO @@ -102,4 +103,8 @@ public class ProOrderVO implements Serializable { @Schema(description = "入库数量") private BigDecimal storeInQty; + + private List lineList; + private List orderList; + } diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proorder/api.js b/jnpf-java-boot/jnpf-web/src/views/example/proorder/api.js new file mode 100644 index 0000000..cbd184d --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/proorder/api.js @@ -0,0 +1,63 @@ +import request from '@/utils/request' + +export function getProOrderList(data) { + return request({ + url: '/api/example/proOrder/getList', + method: 'post', + data + }) +} + +export function getProOrderInfo(id) { + return request({ + url: `/api/example/proOrder/${id}`, + method: 'get' + }) +} + +export function createProOrder(data) { + return request({ + url: '/api/example/proOrder', + method: 'post', + data + }) +} + +export function updateProOrder(id, data) { + return request({ + url: `/api/example/proOrder/${id}`, + method: 'put', + data + }) +} + +export function deleteProOrder(id) { + return request({ + url: `/api/example/proOrder/delete/${id}`, + method: 'delete' + }) +} + +export function generateProOrder(data) { + return request({ + url: '/api/example/proOrder/generate', + method: 'post', + data + }) +} + +export function generateProOrderCheck(data) { + return request({ + url: '/api/example/proOrder/generateCheck', + method: 'post', + data + }) +} + +export function closeProOrder(data) { + return request({ + url: '/api/example/proOrder/close', + method: 'post', + data + }) +} diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proorder/detail.vue b/jnpf-java-boot/jnpf-web/src/views/example/proorder/detail.vue new file mode 100644 index 0000000..b0881a9c --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/proorder/detail.vue @@ -0,0 +1,207 @@ + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proorder/generateForm.vue b/jnpf-java-boot/jnpf-web/src/views/example/proorder/generateForm.vue new file mode 100644 index 0000000..7a2979b --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/proorder/generateForm.vue @@ -0,0 +1,85 @@ + + + diff --git a/jnpf-java-boot/jnpf-web/src/views/example/proorder/index.vue b/jnpf-java-boot/jnpf-web/src/views/example/proorder/index.vue new file mode 100644 index 0000000..081865b --- /dev/null +++ b/jnpf-java-boot/jnpf-web/src/views/example/proorder/index.vue @@ -0,0 +1,399 @@ + + + + +