Merge remote-tracking branch 'origin/master'

This commit is contained in:
sxu 2025-07-15 13:48:49 +08:00
commit 01fd434fd5
9 changed files with 221 additions and 77 deletions

View File

@ -2,10 +2,13 @@ package com.bonus.canteen.core.ims.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.bonus.canteen.core.ims.domain.param.ProductionPurchaseOrderQuery;
import com.bonus.common.log.enums.OperaType;
//import com.bonus.canteen.core.ims.common.annotation.PreventRepeatSubmit;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -43,7 +46,9 @@ public class ProductionPurchaseOrderController extends BaseController {
@ApiOperation(value = "查询生产-采购-订单关联列表")
//@RequiresPermissions("ims:order:list")
@GetMapping("/list")
public TableDataInfo list(ProductionPurchaseOrder productionPurchaseOrder) {
public TableDataInfo list(ProductionPurchaseOrderQuery productionPurchaseOrderQuery) {
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
BeanUtils.copyProperties(productionPurchaseOrderQuery, productionPurchaseOrder);
startPage();
List<ProductionPurchaseOrder> list = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
return getDataTable(list);
@ -52,68 +57,68 @@ public class ProductionPurchaseOrderController extends BaseController {
/**
* 导出生产-采购-订单关联列表
*/
@ApiOperation(value = "导出生产-采购-订单关联列表")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:order:export")
@SysLog(title = "生产-采购-订单关联", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出生产-采购-订单关联")
@PostMapping("/export")
public void export(HttpServletResponse response, ProductionPurchaseOrder productionPurchaseOrder) {
List<ProductionPurchaseOrder> list = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
ExcelUtil<ProductionPurchaseOrder> util = new ExcelUtil<ProductionPurchaseOrder>(ProductionPurchaseOrder.class);
util.exportExcel(response, list, "生产-采购-订单关联数据");
}
// @ApiOperation(value = "导出生产-采购-订单关联列表")
// //@PreventRepeatSubmit
// //@RequiresPermissions("ims:order:export")
// @SysLog(title = "生产-采购-订单关联", businessType = OperaType.EXPORT, logType = 1,module = "仓储管理->导出生产-采购-订单关联")
// @PostMapping("/export")
// public void export(HttpServletResponse response, ProductionPurchaseOrder productionPurchaseOrder) {
// List<ProductionPurchaseOrder> list = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
// ExcelUtil<ProductionPurchaseOrder> util = new ExcelUtil<ProductionPurchaseOrder>(ProductionPurchaseOrder.class);
// util.exportExcel(response, list, "生产-采购-订单关联数据");
// }
/**
* 获取生产-采购-订单关联详细信息
*/
@ApiOperation(value = "获取生产-采购-订单关联详细信息")
//@RequiresPermissions("ims:order:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return success(productionPurchaseOrderService.selectProductionPurchaseOrderById(id));
}
// @ApiOperation(value = "获取生产-采购-订单关联详细信息")
// //@RequiresPermissions("ims:order:query")
// @GetMapping(value = "/{id}")
// public AjaxResult getInfo(@PathVariable("id") Long id) {
// return success(productionPurchaseOrderService.selectProductionPurchaseOrderById(id));
// }
/**
* 新增生产-采购-订单关联
*/
@ApiOperation(value = "新增生产-采购-订单关联")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:order:add")
@SysLog(title = "生产-采购-订单关联", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增生产-采购-订单关联")
@PostMapping
public AjaxResult add(@RequestBody ProductionPurchaseOrder productionPurchaseOrder) {
try {
return toAjax(productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder));
} catch (Exception e) {
return error(e.getMessage());
}
}
// @ApiOperation(value = "新增生产-采购-订单关联")
// //@PreventRepeatSubmit
// //@RequiresPermissions("ims:order:add")
// @SysLog(title = "生产-采购-订单关联", businessType = OperaType.INSERT, logType = 1,module = "仓储管理->新增生产-采购-订单关联")
// @PostMapping
// public AjaxResult add(@RequestBody ProductionPurchaseOrder productionPurchaseOrder) {
// try {
// return toAjax(productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder));
// } catch (Exception e) {
// return error(e.getMessage());
// }
// }
/**
* 修改生产-采购-订单关联
*/
@ApiOperation(value = "修改生产-采购-订单关联")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:order:edit")
@SysLog(title = "生产-采购-订单关联", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改生产-采购-订单关联")
@PostMapping("/edit")
public AjaxResult edit(@RequestBody ProductionPurchaseOrder productionPurchaseOrder) {
try {
return toAjax(productionPurchaseOrderService.updateProductionPurchaseOrder(productionPurchaseOrder));
} catch (Exception e) {
return error(e.getMessage());
}
}
// @ApiOperation(value = "修改生产-采购-订单关联")
// //@PreventRepeatSubmit
// //@RequiresPermissions("ims:order:edit")
// @SysLog(title = "生产-采购-订单关联", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改生产-采购-订单关联")
// @PostMapping("/edit")
// public AjaxResult edit(@RequestBody ProductionPurchaseOrder productionPurchaseOrder) {
// try {
// return toAjax(productionPurchaseOrderService.updateProductionPurchaseOrder(productionPurchaseOrder));
// } catch (Exception e) {
// return error(e.getMessage());
// }
// }
/**
* 删除生产-采购-订单关联
*/
@ApiOperation(value = "删除生产-采购-订单关联")
//@PreventRepeatSubmit
//@RequiresPermissions("ims:order:remove")
@SysLog(title = "生产-采购-订单关联", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除生产-采购-订单关联")
@PostMapping("/del/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(productionPurchaseOrderService.deleteProductionPurchaseOrderByIds(ids));
}
// @ApiOperation(value = "删除生产-采购-订单关联")
// //@PreventRepeatSubmit
// //@RequiresPermissions("ims:order:remove")
// @SysLog(title = "生产-采购-订单关联", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除生产-采购-订单关联")
// @PostMapping("/del/{ids}")
// public AjaxResult remove(@PathVariable Long[] ids) {
// return toAjax(productionPurchaseOrderService.deleteProductionPurchaseOrderByIds(ids));
// }
}

View File

@ -1,8 +1,6 @@
package com.bonus.canteen.core.ims.domain.param;
import com.bonus.canteen.core.ims.domain.OrderGoodsDetail;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -42,9 +40,9 @@ public class OrderGoodsAdd implements Serializable {
@ApiModelProperty(value = "订单总金额")
private Long orderAmount;
@Excel(name = "采购计划Id,逗号分隔存储")
@ApiModelProperty(value = "采购计划Id,逗号分隔存储")
private String purchasePlanId;
@Excel(name = "采购计划编号,逗号分隔存储")
@ApiModelProperty(value = "采购计划编号,逗号分隔存储")
private String purchasePlanCode;
/** 期望交货日期 */
@ApiModelProperty(value = "期望交货日期")

View File

@ -0,0 +1,52 @@
package com.bonus.canteen.core.ims.domain.param;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
* 生产-采购-订单关联对象 ims_production_purchase_order
*
* @author xsheng
* @date 2025-07-14
*/
@Data
@ToString
public class ProductionPurchaseOrderQuery implements Serializable {
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 生产计划ID */
@Excel(name = "生产计划ID")
@ApiModelProperty(value = "生产计划ID")
private String productionPlanId;
/** 采购计划ID */
@Excel(name = "采购计划ID")
@ApiModelProperty(value = "采购计划ID")
private String purchasePlanId;
/** 采购订单ID */
@Excel(name = "采购订单ID")
@ApiModelProperty(value = "采购订单ID")
private String goodsOrderId;
@Excel(name = "验货单ID")
@ApiModelProperty(value = "验货单ID")
private String inspectGoodsId;
/** 订单类型(1-生产计划采购计划2-采购计划采购订单) */
@Excel(name = "订单类型(1-生产计划采购计划2-采购计划采购订单)")
@ApiModelProperty(value = "订单类型(1-生产计划采购计划2-采购计划采购订单)")
private Integer orderType;
}

View File

@ -1,8 +1,6 @@
package com.bonus.canteen.core.ims.domain.param;
import com.bonus.canteen.core.ims.domain.PurchasePlanDetail;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -44,9 +42,9 @@ public class PurchasePlanAdd implements Serializable {
private Long purchaseUserId;
/** 采购计划Id,逗号分隔存储 */
@Excel(name = "生产计划Id,逗号分隔存储")
@ApiModelProperty(value = "生产计划Id,逗号分隔存储")
private String productionPlanId;
@Excel(name = "生产计划编号,逗号分隔存储")
@ApiModelProperty(value = "生产计划编号,逗号分隔存储")
private String productionPlanCode;
/** 采购审批状态(1待审批,2审批中,3审批同意,4审批拒绝) */
@Excel(name = "采购审批状态(1待审批,2审批中,3审批同意,4审批拒绝)")

View File

@ -166,6 +166,14 @@ public class OrderGoodsVO extends BaseEntity {
@ApiModelProperty(value = "档口名称")
private String stallName;
@Excel(name = "生产计划编号列表")
@ApiModelProperty(value = "生产计划编号列表")
private List<String> productPlanCodeList;
@Excel(name = "采购计划编号列表")
@ApiModelProperty(value = "采购计划编号列表")
private List<String> purchasePlanCodeList;
private List<OrderGoodsDetailVO> orderGoodsDetailList;
}

View File

@ -142,5 +142,13 @@ public class PurchasePlanVO extends BaseEntity {
@ApiModelProperty(value = "预计采购数量")
private BigDecimal totalNum;
@ApiModelProperty(value = "是否已分解")
@Excel(name = "是否已分解")
private boolean ifBreakDown;
@ApiModelProperty(value = "生成计划编号列表")
@Excel(name = "生成计划编号列表")
private List<String> productionPlanCodeList;
private List<PurchasePlanDetailVO> purchasePlanDetailList;
}

View File

@ -1,8 +1,8 @@
package com.bonus.canteen.core.ims.service.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import com.bonus.canteen.core.ims.domain.OrderGoodsDetail;
@ -14,7 +14,6 @@ import com.bonus.canteen.core.ims.domain.param.OrderGoodsDetailUpdate;
import com.bonus.canteen.core.ims.domain.param.OrderGoodsUpdate;
import com.bonus.canteen.core.ims.domain.vo.OrderGoodsDetailVO;
import com.bonus.canteen.core.ims.domain.vo.OrderGoodsVO;
import com.bonus.canteen.core.ims.domain.vo.PurchaseContractDetailVO;
import com.bonus.canteen.core.ims.enums.SupplierOrderGenerateTypeEnum;
import com.bonus.canteen.core.ims.service.IOrderGoodsDetailService;
import com.bonus.canteen.core.ims.service.IProductionPurchaseOrderService;
@ -72,7 +71,40 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService {
*/
@Override
public List<OrderGoodsVO> selectOrderGoodsList(OrderGoods orderGoods) {
return orderGoodsMapper.selectOrderGoodsList(orderGoods);
List<OrderGoodsVO> purchasePlanVOList = orderGoodsMapper.selectOrderGoodsList(orderGoods);
if(CollUtil.isNotEmpty(purchasePlanVOList)) {
for(OrderGoodsVO orderGoodsVO : purchasePlanVOList) {
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PURCHASE_TO_ORDER.getKey());
productionPurchaseOrder.setGoodsOrderId(String.valueOf(orderGoodsVO.getOrderGoodsCode()));
List<ProductionPurchaseOrder> productionPurchaseOrderList = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
if(CollUtil.isNotEmpty(productionPurchaseOrderList)) {
List<String> purchaseCodeList = productionPurchaseOrderList.stream()
.map(ProductionPurchaseOrder::getPurchasePlanId)
.distinct()
.sorted()
.collect(Collectors.toList());
orderGoodsVO.setPurchasePlanCodeList(purchaseCodeList);
if(CollUtil.isNotEmpty(purchaseCodeList)) {
for (String purchaseCode : purchaseCodeList) {
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PRODUCTION_TO_PURCHASE.getKey());
productionPurchaseOrder.setPurchasePlanId(purchaseCode);
productionPurchaseOrderList = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
if(CollUtil.isNotEmpty(productionPurchaseOrderList)) {
List<String> productionCodeList = productionPurchaseOrderList.stream()
.map(ProductionPurchaseOrder::getProductionPlanId)
.distinct()
.sorted()
.collect(Collectors.toList());
orderGoodsVO.setProductPlanCodeList(productionCodeList);
}
}
}
}
}
}
return purchasePlanVOList;
}
/**
@ -103,13 +135,13 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService {
inspectGoodsDetailService.insertOrderGoodsDetail(orderGoodsDetail);
}
}
String purchasePlanIdStr = orderGoodsAdd.getPurchasePlanId();
if(StringUtils.isNotBlank(purchasePlanIdStr)) {
String[] purchasePlanIds = purchasePlanIdStr.split(",");
for(String purchasePlanId : purchasePlanIds) {
String purchasePlanCodeStr = orderGoodsAdd.getPurchasePlanCode();
if(StringUtils.isNotBlank(purchasePlanCodeStr)) {
String[] purchasePlanCodes = purchasePlanCodeStr.split(",");
for(String purchasePlanCode : purchasePlanCodes) {
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setPurchasePlanId(purchasePlanId);
productionPurchaseOrder.setGoodsOrderId(String.valueOf(orderGoods.getOrderGoodsId()));
productionPurchaseOrder.setPurchasePlanId(purchasePlanCode);
productionPurchaseOrder.setGoodsOrderId(orderGoods.getOrderGoodsCode());
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PURCHASE_TO_ORDER.getKey());
productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder);
}

View File

@ -57,6 +57,14 @@ public class ProductionPlanServiceImpl implements IProductionPlanService {
public ProductionPlanVO selectProductionPlanByPlanId(Long planId) {
ProductionPlanVO productionPlanVO = productionPlanMapper.selectProductionPlanByPlanId(planId);
if(Objects.nonNull(productionPlanVO)) {
productionPlanVO.setIfBreakDown(false);
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PRODUCTION_TO_PURCHASE.getKey());
productionPurchaseOrder.setProductionPlanId(String.valueOf(productionPlanVO.getProductionPlanCode()));
List<ProductionPurchaseOrder> productionPurchaseOrderList = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
if(CollUtil.isNotEmpty(productionPurchaseOrderList)) {
productionPlanVO.setIfBreakDown(true);
}
productionPlanVO
.setProductionPlanDetailVOList(productionPlanDetailMapper
.selectProductionPlanDetailByProductionId(productionPlanVO.getPlanId(), productionPlanVO.getGoodsType()));
@ -67,7 +75,7 @@ public class ProductionPlanServiceImpl implements IProductionPlanService {
/**
* 查询生产计划主列表
*
* @param productionPlan 生产计划主
* @param productionPlanQuery 生产计划主
* @return 生产计划主
*/
@Override

View File

@ -1,6 +1,5 @@
package com.bonus.canteen.core.ims.service.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@ -62,6 +61,28 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService {
public PurchasePlanVO selectPurchasePlanByPlanId(Long planId) {
PurchasePlanVO purchasePlanVO = purchasePlanMapper.selectPurchasePlanByPlanId(planId);
if(Objects.nonNull(purchasePlanVO)) {
purchasePlanVO.setIfBreakDown(false);
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PURCHASE_TO_ORDER.getKey());
productionPurchaseOrder.setPurchasePlanId(String.valueOf(purchasePlanVO.getPlanCode()));
List<ProductionPurchaseOrder> productionPurchaseOrderList = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
if(CollUtil.isNotEmpty(productionPurchaseOrderList)) {
purchasePlanVO.setIfBreakDown(true);
}
productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PRODUCTION_TO_PURCHASE.getKey());
productionPurchaseOrder.setPurchasePlanId(String.valueOf(purchasePlanVO.getPlanCode()));
productionPurchaseOrderList = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
if(CollUtil.isNotEmpty(productionPurchaseOrderList)) {
List<String> codeList = productionPurchaseOrderList.stream()
.map(ProductionPurchaseOrder::getProductionPlanId)
.distinct()
.sorted()
.collect(Collectors.toList());
purchasePlanVO.setProductionPlanCodeList(codeList);
}
PurchasePlanDetail purchasePlanDetail = new PurchasePlanDetail();
purchasePlanDetail.setPlanId(purchasePlanVO.getPlanId());
getSupplierNames(purchasePlanVO);
@ -79,7 +100,20 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService {
*/
@Override
public List<PurchasePlanVO> selectPurchasePlanList(PurchasePlan purchasePlan) {
return purchasePlanMapper.selectPurchasePlanList(purchasePlan);
List<PurchasePlanVO> list = purchasePlanMapper.selectPurchasePlanList(purchasePlan);
if(CollUtil.isNotEmpty(list)) {
for(PurchasePlanVO planVO : list) {
planVO.setIfBreakDown(false);
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PURCHASE_TO_ORDER.getKey());
productionPurchaseOrder.setPurchasePlanId(String.valueOf(planVO.getPlanCode()));
List<ProductionPurchaseOrder> productionPurchaseOrderList = productionPurchaseOrderService.selectProductionPurchaseOrderList(productionPurchaseOrder);
if(CollUtil.isNotEmpty(productionPurchaseOrderList)) {
planVO.setIfBreakDown(true);
}
}
}
return list;
}
private void getSupplierNames(PurchasePlanVO plan) {
@ -116,6 +150,7 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService {
purchasePlan.setPlanId(null);
purchasePlan.setCreateTime(DateUtils.getNowDate());
purchasePlan.setCreateBy(SecurityUtils.getUsername());
purchasePlan.setProductionPlanId(purchasePlanAdd.getProductionPlanCode());
try {
String purchasePlanCode = generatePurchasePlanCode();
purchasePlan.setPlanCode(purchasePlanCode);
@ -131,13 +166,13 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService {
inspectGoodsDetailService.insertPurchasePlanDetail(purchasePlanDetail);
}
}
String productionPlanIdStr = purchasePlanAdd.getProductionPlanId();
if(StringUtils.isNotBlank(productionPlanIdStr)) {
String[] productionPlanIds = productionPlanIdStr.split(",");
for(String productionPlanId : productionPlanIds) {
String productionPlanCodeStr = purchasePlanAdd.getProductionPlanCode();
if(StringUtils.isNotBlank(productionPlanCodeStr)) {
String[] productionPlanCodes = productionPlanCodeStr.split(",");
for(String productionPlanCode : productionPlanCodes) {
ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder();
productionPurchaseOrder.setProductionPlanId(productionPlanId);
productionPurchaseOrder.setPurchasePlanId(String.valueOf(purchasePlan.getPlanId()));
productionPurchaseOrder.setProductionPlanId(productionPlanCode);
productionPurchaseOrder.setPurchasePlanId(purchasePlan.getPlanCode());
productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PRODUCTION_TO_PURCHASE.getKey());
productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder);
}