refactor(wms): 移除产品BOM相关模块和采购计划功能模块
- 删除产品BOM(Bill of Materials)相关的控制器、服务、实体类及映射文件 - 移除了WmsProductBomController控制器及相关接口实现 - 清理了IWmsProductBomService服务接口与WmsProductBomServiceImpl实现类 - 移除了WmsProductBom实体类及其对应的BO/VO对象- 删除WmsProductBomMapper接口及XML配置文件 - 更新WmsMaterialCoilServiceImpl依赖注入,移除对IWmsProductBomService的引用 - 调整WmsCoilPendingActionMapper.xml路径从wms目录迁移至klp目录下 - 整理采购计划相关模块代码结构,确保模块清晰分离
This commit is contained in:
@@ -1,100 +0,0 @@
|
|||||||
package com.klp.controller;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import com.klp.common.annotation.RepeatSubmit;
|
|
||||||
import com.klp.common.annotation.Log;
|
|
||||||
import com.klp.common.core.controller.BaseController;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
import com.klp.common.core.domain.R;
|
|
||||||
import com.klp.common.core.validate.AddGroup;
|
|
||||||
import com.klp.common.core.validate.EditGroup;
|
|
||||||
import com.klp.common.enums.BusinessType;
|
|
||||||
import com.klp.common.utils.poi.ExcelUtil;
|
|
||||||
import com.klp.domain.vo.WmsProductBomVo;
|
|
||||||
import com.klp.domain.bo.WmsProductBomBo;
|
|
||||||
import com.klp.service.IWmsProductBomService;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Validated
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/wms/productBom")
|
|
||||||
public class WmsProductBomController extends BaseController {
|
|
||||||
|
|
||||||
private final IWmsProductBomService iWmsProductBomService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo<WmsProductBomVo> list(WmsProductBomBo bo, PageQuery pageQuery) {
|
|
||||||
return iWmsProductBomService.queryPageList(bo, pageQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
@Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(WmsProductBomBo bo, HttpServletResponse response) {
|
|
||||||
List<WmsProductBomVo> list = iWmsProductBomService.queryList(bo);
|
|
||||||
ExcelUtil.exportExcel(list, "产品BOM(产品-原材料清单)", WmsProductBomVo.class, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取产品BOM(产品-原材料清单)详细信息
|
|
||||||
*
|
|
||||||
* @param bomId 主键
|
|
||||||
*/
|
|
||||||
@GetMapping("/{bomId}")
|
|
||||||
public R<WmsProductBomVo> getInfo(@NotNull(message = "主键不能为空")
|
|
||||||
@PathVariable Long bomId) {
|
|
||||||
return R.ok(iWmsProductBomService.queryById(bomId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
@Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.INSERT)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PostMapping()
|
|
||||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsProductBomBo bo) {
|
|
||||||
return toAjax(iWmsProductBomService.insertByBo(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
@Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.UPDATE)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PutMapping()
|
|
||||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsProductBomBo bo) {
|
|
||||||
return toAjax(iWmsProductBomService.updateByBo(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除产品BOM(产品-原材料清单)
|
|
||||||
*
|
|
||||||
* @param bomIds 主键串
|
|
||||||
*/
|
|
||||||
@Log(title = "产品BOM(产品-原材料清单)", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{bomIds}")
|
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
|
||||||
@PathVariable Long[] bomIds) {
|
|
||||||
return toAjax(iWmsProductBomService.deleteWithValidByIds(Arrays.asList(bomIds), true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,143 +0,0 @@
|
|||||||
package com.klp.controller;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.klp.domain.vo.RecognizeTextVo;
|
|
||||||
import com.klp.service.ITesseractOcrService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import com.klp.common.annotation.RepeatSubmit;
|
|
||||||
import com.klp.common.annotation.Log;
|
|
||||||
import com.klp.common.core.controller.BaseController;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
import com.klp.common.core.domain.R;
|
|
||||||
import com.klp.common.core.validate.AddGroup;
|
|
||||||
import com.klp.common.core.validate.EditGroup;
|
|
||||||
import com.klp.common.enums.BusinessType;
|
|
||||||
import com.klp.common.utils.poi.ExcelUtil;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanVo;
|
|
||||||
import com.klp.domain.bo.WmsPurchasePlanBo;
|
|
||||||
import com.klp.service.IWmsPurchasePlanService;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Validated
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/wms/purchasePlan")
|
|
||||||
public class WmsPurchasePlanController extends BaseController {
|
|
||||||
|
|
||||||
private final IWmsPurchasePlanService iWmsPurchasePlanService;
|
|
||||||
private final ITesseractOcrService iTesseractOcrService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划(含明细)
|
|
||||||
*/
|
|
||||||
@PostMapping("/addWithDetails")
|
|
||||||
public R<Void> addPurchasePlan(@RequestBody WmsPurchasePlanVo planVo) {
|
|
||||||
return toAjax(iWmsPurchasePlanService.insertWithDetails(planVo));
|
|
||||||
}
|
|
||||||
// /**
|
|
||||||
// * 根据订单ID生成推荐采购计划(只返回,不落库)
|
|
||||||
// */
|
|
||||||
// @GetMapping("/recommend/{orderId}")
|
|
||||||
// public R<WmsPurchasePlanVo> recommendPurchasePlan(@PathVariable Long orderId) {
|
|
||||||
// WmsPurchasePlanVo planVo = iWmsPurchasePlanService.recommendPurchasePlanByOrder(orderId);
|
|
||||||
// return R.ok(planVo);
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 识别图片中的文字
|
|
||||||
* @param request 图片地址
|
|
||||||
* @return 识别出的文字
|
|
||||||
*/
|
|
||||||
@PostMapping("/recognizeText")
|
|
||||||
public R<RecognizeTextVo> recognize(@RequestBody Map<String, String> request) {
|
|
||||||
String imgUrl = request.get("imgUrl");
|
|
||||||
String text = iTesseractOcrService.recognizeText(imgUrl);
|
|
||||||
return R.ok(new RecognizeTextVo(text));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 识别PDF文件中的文字
|
|
||||||
* @param request PDF文件地址
|
|
||||||
* @return 识别出的文字
|
|
||||||
*/
|
|
||||||
@PostMapping("/recognizePdfText")
|
|
||||||
public R<RecognizeTextVo> recognizePdf(@RequestBody Map<String, String> request) {
|
|
||||||
String pdfUrl = request.get("pdfUrl");
|
|
||||||
String text = iTesseractOcrService.recognizePdfText(pdfUrl);
|
|
||||||
return R.ok(new RecognizeTextVo(text));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主列表
|
|
||||||
*/
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo<WmsPurchasePlanVo> list(WmsPurchasePlanBo bo, PageQuery pageQuery) {
|
|
||||||
return iWmsPurchasePlanService.queryPageList(bo, pageQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出采购计划主列表
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划主", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(WmsPurchasePlanBo bo, HttpServletResponse response) {
|
|
||||||
List<WmsPurchasePlanVo> list = iWmsPurchasePlanService.queryList(bo);
|
|
||||||
ExcelUtil.exportExcel(list, "采购计划主", WmsPurchasePlanVo.class, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取采购计划主详细信息
|
|
||||||
*
|
|
||||||
* @param planId 主键
|
|
||||||
*/
|
|
||||||
@GetMapping("/{planId}")
|
|
||||||
public R<WmsPurchasePlanVo> getInfo(@NotNull(message = "主键不能为空")
|
|
||||||
@PathVariable Long planId) {
|
|
||||||
return R.ok(iWmsPurchasePlanService.queryById(planId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划主
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划主", businessType = BusinessType.INSERT)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PostMapping()
|
|
||||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsPurchasePlanBo bo) {
|
|
||||||
return toAjax(iWmsPurchasePlanService.insertByBo(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购计划主
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划主", businessType = BusinessType.UPDATE)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PutMapping()
|
|
||||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsPurchasePlanBo bo) {
|
|
||||||
return toAjax(iWmsPurchasePlanService.updateByBo(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除采购计划主
|
|
||||||
*
|
|
||||||
* @param planIds 主键串
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划主", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{planIds}")
|
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
|
||||||
@PathVariable Long[] planIds) {
|
|
||||||
return toAjax(iWmsPurchasePlanService.deleteWithValidByIds(Arrays.asList(planIds), true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
package com.klp.controller;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import com.klp.common.annotation.RepeatSubmit;
|
|
||||||
import com.klp.common.annotation.Log;
|
|
||||||
import com.klp.common.core.controller.BaseController;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
import com.klp.common.core.domain.R;
|
|
||||||
import com.klp.common.core.validate.AddGroup;
|
|
||||||
import com.klp.common.core.validate.EditGroup;
|
|
||||||
import com.klp.common.enums.BusinessType;
|
|
||||||
import com.klp.common.utils.poi.ExcelUtil;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanDetailVo;
|
|
||||||
import com.klp.domain.bo.WmsPurchasePlanDetailBo;
|
|
||||||
import com.klp.service.IWmsPurchasePlanDetailService;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Validated
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/wms/purchasePlanDetail")
|
|
||||||
public class WmsPurchasePlanDetailController extends BaseController {
|
|
||||||
|
|
||||||
private final IWmsPurchasePlanDetailService iWmsPurchasePlanDetailService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细列表
|
|
||||||
*/
|
|
||||||
@GetMapping("/list")
|
|
||||||
public TableDataInfo<WmsPurchasePlanDetailVo> list(WmsPurchasePlanDetailBo bo, PageQuery pageQuery) {
|
|
||||||
return iWmsPurchasePlanDetailService.queryPageList(bo, pageQuery);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出采购计划明细列表
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划明细", businessType = BusinessType.EXPORT)
|
|
||||||
@PostMapping("/export")
|
|
||||||
public void export(WmsPurchasePlanDetailBo bo, HttpServletResponse response) {
|
|
||||||
List<WmsPurchasePlanDetailVo> list = iWmsPurchasePlanDetailService.queryList(bo);
|
|
||||||
ExcelUtil.exportExcel(list, "采购计划明细", WmsPurchasePlanDetailVo.class, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取采购计划明细详细信息
|
|
||||||
*
|
|
||||||
* @param detailId 主键
|
|
||||||
*/
|
|
||||||
@GetMapping("/{detailId}")
|
|
||||||
public R<WmsPurchasePlanDetailVo> getInfo(@NotNull(message = "主键不能为空")
|
|
||||||
@PathVariable Long detailId) {
|
|
||||||
return R.ok(iWmsPurchasePlanDetailService.queryById(detailId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划明细
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划明细", businessType = BusinessType.INSERT)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PostMapping()
|
|
||||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsPurchasePlanDetailBo bo) {
|
|
||||||
return toAjax(iWmsPurchasePlanDetailService.insertByBo(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购计划明细
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划明细", businessType = BusinessType.UPDATE)
|
|
||||||
@RepeatSubmit()
|
|
||||||
@PutMapping()
|
|
||||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsPurchasePlanDetailBo bo) {
|
|
||||||
return toAjax(iWmsPurchasePlanDetailService.updateByBo(bo));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除采购计划明细
|
|
||||||
*
|
|
||||||
* @param detailIds 主键串
|
|
||||||
*/
|
|
||||||
@Log(title = "采购计划明细", businessType = BusinessType.DELETE)
|
|
||||||
@DeleteMapping("/{detailIds}")
|
|
||||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
|
||||||
@PathVariable Long[] detailIds) {
|
|
||||||
return toAjax(iWmsPurchasePlanDetailService.deleteWithValidByIds(Arrays.asList(detailIds), true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
package com.klp.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.klp.common.core.domain.BaseEntity;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)对象 wms_product_bom
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@TableName("wms_product_bom")
|
|
||||||
public class WmsProductBom extends BaseEntity {
|
|
||||||
|
|
||||||
private static final long serialVersionUID=1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BOM主键ID
|
|
||||||
*/
|
|
||||||
@TableId(value = "bom_id")
|
|
||||||
private Long bomId;
|
|
||||||
/**
|
|
||||||
* 产品ID
|
|
||||||
*/
|
|
||||||
private Long productId;
|
|
||||||
/**
|
|
||||||
* 原材料ID
|
|
||||||
*/
|
|
||||||
private Long rawMaterialId;
|
|
||||||
/**
|
|
||||||
* 每个产品所需原材料数量
|
|
||||||
*/
|
|
||||||
private BigDecimal quantity;
|
|
||||||
/**
|
|
||||||
* 单位
|
|
||||||
*/
|
|
||||||
private String unit;
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
package com.klp.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.klp.common.core.domain.BaseEntity;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主对象 wms_purchase_plan
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@TableName("wms_purchase_plan")
|
|
||||||
public class WmsPurchasePlan extends BaseEntity {
|
|
||||||
|
|
||||||
private static final long serialVersionUID=1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划ID
|
|
||||||
*/
|
|
||||||
@TableId(value = "plan_id")
|
|
||||||
private Long planId;
|
|
||||||
/**
|
|
||||||
* 采购计划编号
|
|
||||||
*/
|
|
||||||
private String planCode;
|
|
||||||
/**
|
|
||||||
* 负责人
|
|
||||||
*/
|
|
||||||
private String owner;
|
|
||||||
/**
|
|
||||||
* 关联订单ID
|
|
||||||
*/
|
|
||||||
private Long orderId;
|
|
||||||
/**
|
|
||||||
* 状态(0=新建,1=待审核,2=已审核,3=已完成,4=已取消)
|
|
||||||
*/
|
|
||||||
private Integer status;
|
|
||||||
/**
|
|
||||||
* 附件信息
|
|
||||||
*/
|
|
||||||
private String attachmentInfo;
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
/**
|
|
||||||
* 删除标志(0=正常,1=已删除)
|
|
||||||
*/
|
|
||||||
@TableLogic
|
|
||||||
private Integer delFlag;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
package com.klp.domain;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.klp.common.core.domain.BaseEntity;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细对象 wms_purchase_plan_detail
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@TableName("wms_purchase_plan_detail")
|
|
||||||
public class WmsPurchasePlanDetail extends BaseEntity {
|
|
||||||
|
|
||||||
private static final long serialVersionUID=1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 明细ID
|
|
||||||
*/
|
|
||||||
@TableId(value = "detail_id")
|
|
||||||
private Long detailId;
|
|
||||||
/**
|
|
||||||
* 采购计划ID
|
|
||||||
*/
|
|
||||||
private Long planId;
|
|
||||||
/**
|
|
||||||
* 原材料ID
|
|
||||||
*/
|
|
||||||
private Long rawMaterialId;
|
|
||||||
/**
|
|
||||||
* 负责人
|
|
||||||
*/
|
|
||||||
private String owner;
|
|
||||||
/**
|
|
||||||
* 计划采购数量
|
|
||||||
*/
|
|
||||||
private BigDecimal quantity;
|
|
||||||
/**
|
|
||||||
* 单位
|
|
||||||
*/
|
|
||||||
private String unit;
|
|
||||||
/**
|
|
||||||
* 附件
|
|
||||||
*/
|
|
||||||
private String annex;
|
|
||||||
/**
|
|
||||||
* 状态( 0=新建,1=在途,2=到货,3=待审核,4=采购完成)
|
|
||||||
*/
|
|
||||||
private Integer status;
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
/**
|
|
||||||
* 删除标志(0=正常,1=已删除)
|
|
||||||
*/
|
|
||||||
@TableLogic
|
|
||||||
private Integer delFlag;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 供应商ID
|
|
||||||
*/
|
|
||||||
private Long supplierId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同ID
|
|
||||||
*/
|
|
||||||
private Long contractId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 详情编号
|
|
||||||
*/
|
|
||||||
private String detailCode;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
package com.klp.domain.bo;
|
|
||||||
|
|
||||||
import com.klp.common.core.domain.BaseEntity;
|
|
||||||
import com.klp.common.core.validate.AddGroup;
|
|
||||||
import com.klp.common.core.validate.EditGroup;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)业务对象 wms_product_bom
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class WmsProductBomBo extends BaseEntity {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BOM主键ID
|
|
||||||
*/
|
|
||||||
private Long bomId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品ID
|
|
||||||
*/
|
|
||||||
@NotNull(message = "产品ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long productId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 原材料ID
|
|
||||||
*/
|
|
||||||
@NotNull(message = "原材料ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private Long rawMaterialId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每个产品所需原材料数量
|
|
||||||
*/
|
|
||||||
@NotNull(message = "每个产品所需原材料数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private BigDecimal quantity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 单位
|
|
||||||
*/
|
|
||||||
@NotBlank(message = "单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
|
||||||
private String unit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
package com.klp.domain.bo;
|
|
||||||
|
|
||||||
import com.klp.common.core.domain.BaseEntity;
|
|
||||||
import com.klp.common.core.validate.AddGroup;
|
|
||||||
import com.klp.common.core.validate.EditGroup;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主业务对象 wms_purchase_plan
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class WmsPurchasePlanBo extends BaseEntity {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划ID
|
|
||||||
*/
|
|
||||||
private Long planId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划编号
|
|
||||||
*/
|
|
||||||
private String planCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 负责人
|
|
||||||
*/
|
|
||||||
private String owner;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 关联订单ID
|
|
||||||
*/
|
|
||||||
private Long orderId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态(0=新建,1=待审核,2=已审核,3=已完成,4=已取消)
|
|
||||||
*/
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 附件信息
|
|
||||||
*/
|
|
||||||
private String attachmentInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
package com.klp.domain.bo;
|
|
||||||
|
|
||||||
import com.klp.common.core.domain.BaseEntity;
|
|
||||||
import com.klp.common.core.validate.AddGroup;
|
|
||||||
import com.klp.common.core.validate.EditGroup;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import javax.validation.constraints.*;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细业务对象 wms_purchase_plan_detail
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
public class WmsPurchasePlanDetailBo extends BaseEntity {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 明细ID
|
|
||||||
*/
|
|
||||||
private Long detailId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划ID
|
|
||||||
*/
|
|
||||||
private Long planId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 原材料ID
|
|
||||||
*/
|
|
||||||
private Long rawMaterialId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 负责人
|
|
||||||
*/
|
|
||||||
private String owner;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计划采购数量
|
|
||||||
*/
|
|
||||||
private BigDecimal quantity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 单位
|
|
||||||
*/
|
|
||||||
private String unit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 附件
|
|
||||||
*/
|
|
||||||
private String annex;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态( 0=新建,1=在途,2=到货,3=待审核,4=采购完成)
|
|
||||||
*/
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 供应商ID
|
|
||||||
*/
|
|
||||||
private Long supplierId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同ID
|
|
||||||
*/
|
|
||||||
private Long contractId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 详情编号
|
|
||||||
*/
|
|
||||||
private String detailCode;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
package com.klp.domain.vo;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.klp.common.annotation.ExcelDictFormat;
|
|
||||||
import com.klp.common.convert.ExcelDictConvert;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)视图对象 wms_product_bom
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ExcelIgnoreUnannotated
|
|
||||||
public class WmsProductBomVo {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* BOM主键ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "BOM主键ID")
|
|
||||||
private Long bomId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "产品ID")
|
|
||||||
private Long productId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 原材料ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "原材料ID")
|
|
||||||
private Long rawMaterialId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 每个产品所需原材料数量
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "每个产品所需原材料数量")
|
|
||||||
private BigDecimal quantity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 单位
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "单位")
|
|
||||||
private String unit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品名称
|
|
||||||
*/
|
|
||||||
private String productName;
|
|
||||||
/**
|
|
||||||
* 产品编码
|
|
||||||
*/
|
|
||||||
private String productCode;
|
|
||||||
/**
|
|
||||||
* 原材料名称
|
|
||||||
*/
|
|
||||||
private String rawMaterialName;
|
|
||||||
/**
|
|
||||||
* 原材料编码
|
|
||||||
*/
|
|
||||||
private String rawMaterialCode;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
package com.klp.domain.vo;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.klp.common.annotation.ExcelDictFormat;
|
|
||||||
import com.klp.common.convert.ExcelDictConvert;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细视图对象 wms_purchase_plan_detail
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ExcelIgnoreUnannotated
|
|
||||||
public class WmsPurchasePlanDetailVo {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 明细ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "明细ID")
|
|
||||||
private Long detailId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "采购计划ID")
|
|
||||||
private Long planId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 原材料ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "原材料ID")
|
|
||||||
private Long rawMaterialId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 负责人
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "负责人")
|
|
||||||
private String owner;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 计划采购数量
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "计划采购数量")
|
|
||||||
private BigDecimal quantity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 单位
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "单位")
|
|
||||||
private String unit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 附件
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "附件")
|
|
||||||
private String annex;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态( 0=新建,1=在途,2=到货,3=待审核,4=采购完成)
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "状态")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
@ExcelProperty(value = "原材料名称")
|
|
||||||
private String rawMaterialName;
|
|
||||||
@ExcelProperty(value = "原材料编码")
|
|
||||||
private String rawMaterialCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 需求量
|
|
||||||
*/
|
|
||||||
private BigDecimal demand;
|
|
||||||
/**
|
|
||||||
* 库存量
|
|
||||||
*/
|
|
||||||
private BigDecimal inventory;
|
|
||||||
/**
|
|
||||||
* 在途量
|
|
||||||
*/
|
|
||||||
private BigDecimal onTheWay;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 供应商ID
|
|
||||||
*/
|
|
||||||
private Long supplierId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同ID
|
|
||||||
*/
|
|
||||||
private Long contractId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 供应商名称
|
|
||||||
*/
|
|
||||||
private String supplierName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 合同编号
|
|
||||||
*/
|
|
||||||
private String contractNo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 详情编号
|
|
||||||
*/
|
|
||||||
private String detailCode;
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
package com.klp.domain.vo;
|
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
|
||||||
import com.klp.common.annotation.ExcelDictFormat;
|
|
||||||
import com.klp.common.convert.ExcelDictConvert;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主视图对象 wms_purchase_plan
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ExcelIgnoreUnannotated
|
|
||||||
public class WmsPurchasePlanVo {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "采购计划ID")
|
|
||||||
private Long planId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划编号
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "采购计划编号")
|
|
||||||
private String planCode;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 负责人
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "负责人")
|
|
||||||
private String owner;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 关联订单ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "关联订单ID")
|
|
||||||
private Long orderId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态(0=新建,1=待审核,2=已审核,3=已完成,4=已取消)
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
|
||||||
@ExcelDictFormat(readConverterExp = "0==新建,1=待审核,2=已审核,3=已完成,4=已取消")
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 附件信息
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "附件信息")
|
|
||||||
private String attachmentInfo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "备注")
|
|
||||||
private String remark;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细列表
|
|
||||||
*/
|
|
||||||
private List<WmsPurchasePlanDetailVo> detailList;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
package com.klp.mapper;
|
|
||||||
|
|
||||||
import com.klp.domain.WmsProductBom;
|
|
||||||
import com.klp.domain.vo.WmsProductBomVo;
|
|
||||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)Mapper接口
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
public interface WmsProductBomMapper extends BaseMapperPlus<WmsProductBomMapper, WmsProductBom, WmsProductBomVo> {
|
|
||||||
|
|
||||||
List<WmsProductBom> listByProductId(Long productId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页联查产品和原材料名称编码,支持Wrapper动态条件,返回Page<WmsProductBomVo>
|
|
||||||
*/
|
|
||||||
Page<WmsProductBomVo> selectVoPagePlus(Page<?> page, @Param("ew") Wrapper<WmsProductBom> wrapper);
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
package com.klp.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.klp.domain.WmsPurchasePlanDetail;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanDetailVo;
|
|
||||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细Mapper接口
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
public interface WmsPurchasePlanDetailMapper extends BaseMapperPlus<WmsPurchasePlanDetailMapper, WmsPurchasePlanDetail, WmsPurchasePlanDetailVo> {
|
|
||||||
|
|
||||||
Page<WmsPurchasePlanDetailVo> selectVoPagePlus(Page<?> page, @Param("ew") Wrapper<WmsPurchasePlanDetail> wrapper);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查在途的原材料
|
|
||||||
*/
|
|
||||||
BigDecimal getByRawMaterialIdAndOnTheWay(Long rawMaterialId);
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package com.klp.mapper;
|
|
||||||
|
|
||||||
import com.klp.domain.WmsPurchasePlan;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanVo;
|
|
||||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主Mapper接口
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
public interface WmsPurchasePlanMapper extends BaseMapperPlus<WmsPurchasePlanMapper, WmsPurchasePlan, WmsPurchasePlanVo> {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
package com.klp.service;
|
|
||||||
|
|
||||||
import com.klp.domain.WmsProductBom;
|
|
||||||
import com.klp.domain.vo.WmsProductBomVo;
|
|
||||||
import com.klp.domain.bo.WmsProductBomBo;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)Service接口
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
public interface IWmsProductBomService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
WmsProductBomVo queryById(Long bomId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
TableDataInfo<WmsProductBomVo> queryPageList(WmsProductBomBo bo, PageQuery pageQuery);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
List<WmsProductBomVo> queryList(WmsProductBomBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
Boolean insertByBo(WmsProductBomBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
Boolean updateByBo(WmsProductBomBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验并批量删除产品BOM(产品-原材料清单)信息
|
|
||||||
*/
|
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据产品ID查询产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
List<WmsProductBom> listByProductId(Long productId);
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
package com.klp.service;
|
|
||||||
|
|
||||||
import com.klp.domain.WmsPurchasePlanDetail;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanDetailVo;
|
|
||||||
import com.klp.domain.bo.WmsPurchasePlanDetailBo;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细Service接口
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
public interface IWmsPurchasePlanDetailService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细
|
|
||||||
*/
|
|
||||||
WmsPurchasePlanDetailVo queryById(Long detailId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细列表
|
|
||||||
*/
|
|
||||||
TableDataInfo<WmsPurchasePlanDetailVo> queryPageList(WmsPurchasePlanDetailBo bo, PageQuery pageQuery);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细列表
|
|
||||||
*/
|
|
||||||
List<WmsPurchasePlanDetailVo> queryList(WmsPurchasePlanDetailBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划明细
|
|
||||||
*/
|
|
||||||
Boolean insertByBo(WmsPurchasePlanDetailBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购计划明细
|
|
||||||
*/
|
|
||||||
Boolean updateByBo(WmsPurchasePlanDetailBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验并批量删除采购计划明细信息
|
|
||||||
*/
|
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
package com.klp.service;
|
|
||||||
|
|
||||||
import com.klp.domain.WmsPurchasePlan;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanVo;
|
|
||||||
import com.klp.domain.bo.WmsPurchasePlanBo;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主Service接口
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
public interface IWmsPurchasePlanService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划(含明细)
|
|
||||||
*/
|
|
||||||
Boolean insertWithDetails(WmsPurchasePlanVo planVo);
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * 根据订单ID生成推荐采购计划(只返回,不落库)
|
|
||||||
// */
|
|
||||||
// WmsPurchasePlanVo recommendPurchasePlanByOrder(Long orderId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主
|
|
||||||
*/
|
|
||||||
WmsPurchasePlanVo queryById(Long planId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主列表
|
|
||||||
*/
|
|
||||||
TableDataInfo<WmsPurchasePlanVo> queryPageList(WmsPurchasePlanBo bo, PageQuery pageQuery);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主列表
|
|
||||||
*/
|
|
||||||
List<WmsPurchasePlanVo> queryList(WmsPurchasePlanBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划主
|
|
||||||
*/
|
|
||||||
Boolean insertByBo(WmsPurchasePlanBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购计划主
|
|
||||||
*/
|
|
||||||
Boolean updateByBo(WmsPurchasePlanBo bo);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验并批量删除采购计划主信息
|
|
||||||
*/
|
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -32,7 +32,6 @@ import com.klp.service.IWmsGenerateRecordService;
|
|||||||
import com.klp.service.IWmsWarehouseService;
|
import com.klp.service.IWmsWarehouseService;
|
||||||
import com.klp.service.IWmsActualWarehouseService;
|
import com.klp.service.IWmsActualWarehouseService;
|
||||||
import com.klp.service.IWmsRawMaterialService;
|
import com.klp.service.IWmsRawMaterialService;
|
||||||
import com.klp.service.IWmsProductBomService;
|
|
||||||
import com.klp.service.IWmsBomItemService;
|
import com.klp.service.IWmsBomItemService;
|
||||||
import com.klp.domain.vo.WmsActualWarehouseVo;
|
import com.klp.domain.vo.WmsActualWarehouseVo;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@@ -63,7 +62,6 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
private final IWmsWarehouseService warehouseService;
|
private final IWmsWarehouseService warehouseService;
|
||||||
private final IWmsActualWarehouseService actualWarehouseService;
|
private final IWmsActualWarehouseService actualWarehouseService;
|
||||||
private final IWmsRawMaterialService rawMaterialService;
|
private final IWmsRawMaterialService rawMaterialService;
|
||||||
private final IWmsProductBomService productBomService;
|
|
||||||
private final IWmsBomItemService bomItemService;
|
private final IWmsBomItemService bomItemService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,128 +0,0 @@
|
|||||||
package com.klp.service.impl;
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.klp.common.utils.StringUtils;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import com.klp.domain.bo.WmsProductBomBo;
|
|
||||||
import com.klp.domain.vo.WmsProductBomVo;
|
|
||||||
import com.klp.domain.WmsProductBom;
|
|
||||||
import com.klp.mapper.WmsProductBomMapper;
|
|
||||||
import com.klp.service.IWmsProductBomService;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 产品BOM(产品-原材料清单)Service业务层处理
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Service
|
|
||||||
public class WmsProductBomServiceImpl implements IWmsProductBomService {
|
|
||||||
|
|
||||||
private final WmsProductBomMapper baseMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public WmsProductBomVo queryById(Long bomId){
|
|
||||||
return baseMapper.selectVoById(bomId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public TableDataInfo<WmsProductBomVo> queryPageList(WmsProductBomBo bo, PageQuery pageQuery) {
|
|
||||||
QueryWrapper<WmsProductBom> qw = buildQueryWrapperPlus(bo);
|
|
||||||
Page<WmsProductBomVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), qw);
|
|
||||||
return TableDataInfo.build(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询产品BOM(产品-原材料清单)列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<WmsProductBomVo> queryList(WmsProductBomBo bo) {
|
|
||||||
LambdaQueryWrapper<WmsProductBom> qw = buildQueryWrapper(bo);
|
|
||||||
return baseMapper.selectVoList(qw);
|
|
||||||
}
|
|
||||||
private LambdaQueryWrapper<WmsProductBom> buildQueryWrapper(WmsProductBomBo bo) {
|
|
||||||
Map<String, Object> params = bo.getParams();
|
|
||||||
LambdaQueryWrapper<WmsProductBom> lqw = new LambdaQueryWrapper<>();
|
|
||||||
lqw.eq(bo.getProductId() != null, WmsProductBom::getProductId, bo.getProductId());
|
|
||||||
lqw.eq(bo.getRawMaterialId() != null, WmsProductBom::getRawMaterialId, bo.getRawMaterialId());
|
|
||||||
lqw.eq(bo.getQuantity() != null, WmsProductBom::getQuantity, bo.getQuantity());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), WmsProductBom::getUnit, bo.getUnit());
|
|
||||||
return lqw;
|
|
||||||
}
|
|
||||||
|
|
||||||
private QueryWrapper<WmsProductBom> buildQueryWrapperPlus(WmsProductBomBo bo) {
|
|
||||||
Map<String, Object> params = bo.getParams();
|
|
||||||
QueryWrapper<WmsProductBom> qw = new QueryWrapper<>();
|
|
||||||
qw.eq("b.del_flag", 0); // 手动添加逻辑删除条件
|
|
||||||
qw.eq(bo.getProductId() != null, "b.product_id", bo.getProductId());
|
|
||||||
qw.eq(bo.getRawMaterialId() != null, "b.raw_material_id", bo.getRawMaterialId());
|
|
||||||
qw.eq(bo.getQuantity() != null, "b.quantity", bo.getQuantity());
|
|
||||||
qw.eq(StringUtils.isNotBlank(bo.getUnit()), "b.unit", bo.getUnit());
|
|
||||||
return qw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean insertByBo(WmsProductBomBo bo) {
|
|
||||||
WmsProductBom add = BeanUtil.toBean(bo, WmsProductBom.class);
|
|
||||||
validEntityBeforeSave(add);
|
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
|
||||||
if (flag) {
|
|
||||||
bo.setBomId(add.getBomId());
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean updateByBo(WmsProductBomBo bo) {
|
|
||||||
WmsProductBom update = BeanUtil.toBean(bo, WmsProductBom.class);
|
|
||||||
validEntityBeforeSave(update);
|
|
||||||
return baseMapper.updateById(update) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存前的数据校验
|
|
||||||
*/
|
|
||||||
private void validEntityBeforeSave(WmsProductBom entity){
|
|
||||||
//TODO 做一些数据校验,如唯一约束
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除产品BOM(产品-原材料清单)
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
||||||
if(isValid){
|
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
|
||||||
}
|
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<WmsProductBom> listByProductId(Long productId) {
|
|
||||||
return baseMapper.listByProductId(productId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
package com.klp.service.impl;
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.klp.common.utils.StringUtils;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import com.klp.domain.bo.WmsPurchasePlanDetailBo;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanDetailVo;
|
|
||||||
import com.klp.domain.WmsPurchasePlanDetail;
|
|
||||||
import com.klp.mapper.WmsPurchasePlanDetailMapper;
|
|
||||||
import com.klp.service.IWmsPurchasePlanDetailService;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划明细Service业务层处理
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Service
|
|
||||||
public class WmsPurchasePlanDetailServiceImpl implements IWmsPurchasePlanDetailService {
|
|
||||||
|
|
||||||
private final WmsPurchasePlanDetailMapper baseMapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public WmsPurchasePlanDetailVo queryById(Long detailId){
|
|
||||||
return baseMapper.selectVoById(detailId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public TableDataInfo<WmsPurchasePlanDetailVo> queryPageList(WmsPurchasePlanDetailBo bo, PageQuery pageQuery) {
|
|
||||||
QueryWrapper<WmsPurchasePlanDetail> qw = buildQueryWrapperPlus(bo);
|
|
||||||
Page<WmsPurchasePlanDetailVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), qw);
|
|
||||||
return TableDataInfo.build(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划明细列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<WmsPurchasePlanDetailVo> queryList(WmsPurchasePlanDetailBo bo) {
|
|
||||||
LambdaQueryWrapper<WmsPurchasePlanDetail> qw = buildQueryWrapper(bo);
|
|
||||||
return baseMapper.selectVoList(qw);
|
|
||||||
}
|
|
||||||
private LambdaQueryWrapper<WmsPurchasePlanDetail> buildQueryWrapper(WmsPurchasePlanDetailBo bo) {
|
|
||||||
Map<String, Object> params = bo.getParams();
|
|
||||||
LambdaQueryWrapper<WmsPurchasePlanDetail> lqw = new LambdaQueryWrapper<>();
|
|
||||||
lqw.eq(bo.getPlanId() != null, WmsPurchasePlanDetail::getPlanId, bo.getPlanId());
|
|
||||||
lqw.eq(bo.getRawMaterialId() != null, WmsPurchasePlanDetail::getRawMaterialId, bo.getRawMaterialId());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getOwner()), WmsPurchasePlanDetail::getOwner, bo.getOwner());
|
|
||||||
lqw.eq(bo.getQuantity() != null, WmsPurchasePlanDetail::getQuantity, bo.getQuantity());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), WmsPurchasePlanDetail::getUnit, bo.getUnit());
|
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getDetailCode()), WmsPurchasePlanDetail::getDetailCode, bo.getDetailCode());
|
|
||||||
return lqw;
|
|
||||||
}
|
|
||||||
|
|
||||||
private QueryWrapper<WmsPurchasePlanDetail> buildQueryWrapperPlus(WmsPurchasePlanDetailBo bo) {
|
|
||||||
Map<String, Object> params = bo.getParams();
|
|
||||||
QueryWrapper<WmsPurchasePlanDetail> qw = new QueryWrapper<>();
|
|
||||||
qw.eq("wpd.del_flag", 0); // 手动添加逻辑删除条件
|
|
||||||
qw.eq(bo.getPlanId() != null, "wpd.plan_id", bo.getPlanId());
|
|
||||||
qw.eq(bo.getRawMaterialId() != null, "wpd.raw_material_id", bo.getRawMaterialId());
|
|
||||||
qw.eq(StringUtils.isNotBlank(bo.getOwner()), "wpd.owner", bo.getOwner());
|
|
||||||
qw.eq(bo.getQuantity() != null, "wpd.quantity", bo.getQuantity());
|
|
||||||
qw.eq(StringUtils.isNotBlank(bo.getUnit()), "wpd.unit", bo.getUnit());
|
|
||||||
qw.like(StringUtils.isNotBlank(bo.getDetailCode()), "wpd.detail_code", bo.getDetailCode());
|
|
||||||
return qw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划明细
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean insertByBo(WmsPurchasePlanDetailBo bo) {
|
|
||||||
|
|
||||||
WmsPurchasePlanDetail add = BeanUtil.toBean(bo, WmsPurchasePlanDetail.class);
|
|
||||||
validEntityBeforeSave(add);
|
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
|
||||||
if (flag) {
|
|
||||||
bo.setDetailId(add.getDetailId());
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购计划明细
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean updateByBo(WmsPurchasePlanDetailBo bo) {
|
|
||||||
WmsPurchasePlanDetail update = BeanUtil.toBean(bo, WmsPurchasePlanDetail.class);
|
|
||||||
validEntityBeforeSave(update);
|
|
||||||
return baseMapper.updateById(update) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存前的数据校验
|
|
||||||
*/
|
|
||||||
private void validEntityBeforeSave(WmsPurchasePlanDetail entity){
|
|
||||||
//TODO 做一些数据校验,如唯一约束
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除采购计划明细
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
||||||
if(isValid){
|
|
||||||
//TODO 做一些业务上的校验,判断是否需要校验
|
|
||||||
}
|
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
package com.klp.service.impl;
|
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import com.klp.common.core.page.TableDataInfo;
|
|
||||||
import com.klp.common.core.domain.PageQuery;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
||||||
import com.klp.common.utils.StringUtils;
|
|
||||||
import com.klp.domain.WmsProductBom;
|
|
||||||
import com.klp.domain.WmsPurchasePlanDetail;
|
|
||||||
import com.klp.domain.WmsRawMaterial;
|
|
||||||
import com.klp.domain.vo.WmsOrderDetailVo;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanDetailVo;
|
|
||||||
import com.klp.mapper.WmsPurchasePlanDetailMapper;
|
|
||||||
import com.klp.mapper.WmsRawMaterialMapper;
|
|
||||||
import com.klp.service.*;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import com.klp.domain.bo.WmsPurchasePlanBo;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanVo;
|
|
||||||
import com.klp.domain.WmsPurchasePlan;
|
|
||||||
import com.klp.mapper.WmsPurchasePlanMapper;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采购计划主Service业务层处理
|
|
||||||
*
|
|
||||||
* @author Joshi
|
|
||||||
* @date 2025-07-18
|
|
||||||
*/
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Service
|
|
||||||
public class WmsPurchasePlanServiceImpl implements IWmsPurchasePlanService {
|
|
||||||
|
|
||||||
private final WmsPurchasePlanMapper baseMapper;
|
|
||||||
|
|
||||||
private final IWmsOrderDetailService wmsOrderDetailService;
|
|
||||||
|
|
||||||
private final IWmsProductBomService wmsProductBomService;
|
|
||||||
|
|
||||||
private final IWmsStockService wmsStockService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private WmsPurchasePlanDetailMapper wmsPurchasePlanDetailMapper;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private WmsRawMaterialMapper wmsRawMaterialMapper;
|
|
||||||
|
|
||||||
@Transactional
|
|
||||||
@Override
|
|
||||||
public Boolean insertWithDetails(WmsPurchasePlanVo planVo) {
|
|
||||||
// 1. 保存主表
|
|
||||||
WmsPurchasePlan plan = new WmsPurchasePlan();
|
|
||||||
BeanUtils.copyProperties(planVo, plan);
|
|
||||||
int flag = 0;
|
|
||||||
flag += baseMapper.insert(plan);
|
|
||||||
|
|
||||||
// 2. 保存明细表
|
|
||||||
for (WmsPurchasePlanDetailVo detailVo : planVo.getDetailList()) {
|
|
||||||
WmsPurchasePlanDetail detail = new WmsPurchasePlanDetail();
|
|
||||||
BeanUtils.copyProperties(detailVo, detail);
|
|
||||||
detail.setPlanId(plan.getPlanId()); // 关联主表ID
|
|
||||||
flag += wmsPurchasePlanDetailMapper.insert(detail);
|
|
||||||
}
|
|
||||||
return flag > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public WmsPurchasePlanVo recommendPurchasePlanByOrder(Long orderId) {
|
|
||||||
// // 1. 查询订单明细
|
|
||||||
// List<WmsOrderDetailVo> orderDetails = wmsOrderDetailService.queryListByOrderId(orderId);
|
|
||||||
// // 2. 汇总原材料需求
|
|
||||||
// Map<Long, WmsPurchasePlanDetailVo> materialMap = new HashMap<>();
|
|
||||||
// for (WmsOrderDetailVo detail : orderDetails) {
|
|
||||||
// List<WmsProductBom> bomList = wmsProductBomService.listByProductId(detail.getProductId());
|
|
||||||
// for (WmsProductBom bom : bomList) {
|
|
||||||
// BigDecimal needQty = bom.getQuantity().multiply(detail.getQuantity());
|
|
||||||
// WmsPurchasePlanDetailVo vo =
|
|
||||||
// materialMap.getOrDefault(bom.getRawMaterialId(), new WmsPurchasePlanDetailVo());
|
|
||||||
// vo.setRawMaterialId(bom.getRawMaterialId());
|
|
||||||
// vo.setQuantity(vo.getQuantity() == null ? needQty : vo.getQuantity().add(needQty));
|
|
||||||
// vo.setUnit(bom.getUnit());
|
|
||||||
// // 挂载原材料名称编号
|
|
||||||
// WmsRawMaterial wmsRawMaterial = wmsRawMaterialMapper.selectById(bom.getRawMaterialId());
|
|
||||||
// vo.setRawMaterialName(wmsRawMaterial.getRawMaterialName());
|
|
||||||
// vo.setRawMaterialCode(wmsRawMaterial.getRawMaterialCode());
|
|
||||||
// materialMap.put(bom.getRawMaterialId(), vo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// // 3. 查询库存并计算推荐采购量
|
|
||||||
// for (WmsPurchasePlanDetailVo vo : materialMap.values()) {
|
|
||||||
// // 需求量
|
|
||||||
// vo.setDemand(vo.getQuantity());
|
|
||||||
// BigDecimal stockQty = wmsStockService.getStockByItemId(vo.getRawMaterialId());
|
|
||||||
// // 库存量
|
|
||||||
// if(stockQty == null){
|
|
||||||
// stockQty = BigDecimal.ZERO;
|
|
||||||
// }
|
|
||||||
// vo.setInventory(stockQty);
|
|
||||||
// // 在途量
|
|
||||||
// BigDecimal onTheWayQty = BigDecimal.ZERO;
|
|
||||||
// BigDecimal byRawMaterialIdAndOnTheWay =
|
|
||||||
// wmsPurchasePlanDetailMapper.getByRawMaterialIdAndOnTheWay(vo.getRawMaterialId());
|
|
||||||
// if (byRawMaterialIdAndOnTheWay != null) {
|
|
||||||
// onTheWayQty = byRawMaterialIdAndOnTheWay;
|
|
||||||
// }
|
|
||||||
// vo.setOnTheWay(onTheWayQty);
|
|
||||||
// // 计算推荐采购量
|
|
||||||
// BigDecimal recommendQty = vo.getQuantity().subtract(onTheWayQty).subtract(stockQty);
|
|
||||||
// vo.setQuantity(recommendQty.compareTo(BigDecimal.ZERO) > 0 ? recommendQty : BigDecimal.ZERO);
|
|
||||||
// }
|
|
||||||
// // 4. 组装主VO
|
|
||||||
// WmsPurchasePlanVo planVo = new WmsPurchasePlanVo();
|
|
||||||
// planVo.setPlanCode("推荐计划-" + orderId);
|
|
||||||
// planVo.setOrderId(orderId);
|
|
||||||
// planVo.setOwner("系统推荐");
|
|
||||||
// planVo.setRemark("仅供参考,实际采购请确认");
|
|
||||||
// planVo.setDetailList(new ArrayList<>(materialMap.values()));
|
|
||||||
// return planVo;
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public WmsPurchasePlanVo queryById(Long planId){
|
|
||||||
return baseMapper.selectVoById(planId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public TableDataInfo<WmsPurchasePlanVo> queryPageList(WmsPurchasePlanBo bo, PageQuery pageQuery) {
|
|
||||||
LambdaQueryWrapper<WmsPurchasePlan> lqw = buildQueryWrapper(bo);
|
|
||||||
Page<WmsPurchasePlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
||||||
return TableDataInfo.build(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询采购计划主列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<WmsPurchasePlanVo> queryList(WmsPurchasePlanBo bo) {
|
|
||||||
LambdaQueryWrapper<WmsPurchasePlan> lqw = buildQueryWrapper(bo);
|
|
||||||
return baseMapper.selectVoList(lqw);
|
|
||||||
}
|
|
||||||
|
|
||||||
private LambdaQueryWrapper<WmsPurchasePlan> buildQueryWrapper(WmsPurchasePlanBo bo) {
|
|
||||||
Map<String, Object> params = bo.getParams();
|
|
||||||
LambdaQueryWrapper<WmsPurchasePlan> lqw = Wrappers.lambdaQuery();
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getPlanCode()), WmsPurchasePlan::getPlanCode, bo.getPlanCode());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getOwner()), WmsPurchasePlan::getOwner, bo.getOwner());
|
|
||||||
lqw.eq(bo.getOrderId() != null, WmsPurchasePlan::getOrderId, bo.getOrderId());
|
|
||||||
lqw.eq(bo.getStatus() != null, WmsPurchasePlan::getStatus, bo.getStatus());
|
|
||||||
return lqw;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增采购计划主
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean insertByBo(WmsPurchasePlanBo bo) {
|
|
||||||
WmsPurchasePlan add = BeanUtil.toBean(bo, WmsPurchasePlan.class);
|
|
||||||
validEntityBeforeSave(add);
|
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
|
||||||
if (flag) {
|
|
||||||
bo.setPlanId(add.getPlanId());
|
|
||||||
}
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改采购计划主
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean updateByBo(WmsPurchasePlanBo bo) {
|
|
||||||
WmsPurchasePlan update = BeanUtil.toBean(bo, WmsPurchasePlan.class);
|
|
||||||
validEntityBeforeSave(update);
|
|
||||||
return baseMapper.updateById(update) > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存前的数据校验
|
|
||||||
*/
|
|
||||||
private void validEntityBeforeSave(WmsPurchasePlan entity){
|
|
||||||
//TODO 做一些数据校验,如唯一约束
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量删除采购计划主
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
||||||
// 逻辑删除采购明细
|
|
||||||
LambdaQueryWrapper<WmsPurchasePlanDetail> lqw = Wrappers.lambdaQuery();
|
|
||||||
lqw.in(WmsPurchasePlanDetail::getPlanId, ids);
|
|
||||||
wmsPurchasePlanDetailMapper.delete(lqw);
|
|
||||||
// 逻辑删除采购计划主表
|
|
||||||
return baseMapper.deleteBatchIds(ids) > 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -15,15 +15,9 @@ import com.klp.domain.WmsRawMaterial;
|
|||||||
import com.klp.mapper.WmsRawMaterialMapper;
|
import com.klp.mapper.WmsRawMaterialMapper;
|
||||||
import com.klp.service.IWmsRawMaterialService;
|
import com.klp.service.IWmsRawMaterialService;
|
||||||
import com.klp.service.IWmsStockService;
|
import com.klp.service.IWmsStockService;
|
||||||
import com.klp.service.IWmsPurchasePlanDetailService;
|
|
||||||
import com.klp.service.IWmsOrderDetailService;
|
import com.klp.service.IWmsOrderDetailService;
|
||||||
import com.klp.service.IWmsProductBomService;
|
|
||||||
import com.klp.service.IWmsOrderService;
|
import com.klp.service.IWmsOrderService;
|
||||||
import com.klp.domain.bo.WmsPurchasePlanDetailBo;
|
|
||||||
import com.klp.domain.bo.WmsOrderDetailBo;
|
import com.klp.domain.bo.WmsOrderDetailBo;
|
||||||
import com.klp.domain.bo.WmsProductBomBo;
|
|
||||||
import com.klp.domain.vo.WmsPurchasePlanDetailVo;
|
|
||||||
import com.klp.domain.vo.WmsProductBomVo;
|
|
||||||
import com.klp.domain.vo.WmsOrderDetailVo;
|
import com.klp.domain.vo.WmsOrderDetailVo;
|
||||||
import com.klp.domain.vo.WmsOrderVo;
|
import com.klp.domain.vo.WmsOrderVo;
|
||||||
import com.klp.service.IWmsBomService;
|
import com.klp.service.IWmsBomService;
|
||||||
@@ -50,10 +44,7 @@ import java.util.Arrays;
|
|||||||
public class WmsRawMaterialServiceImpl implements IWmsRawMaterialService {
|
public class WmsRawMaterialServiceImpl implements IWmsRawMaterialService {
|
||||||
|
|
||||||
private final WmsRawMaterialMapper baseMapper;
|
private final WmsRawMaterialMapper baseMapper;
|
||||||
private final IWmsStockService stockService;
|
|
||||||
private final IWmsPurchasePlanDetailService purchasePlanDetailService;
|
|
||||||
private final IWmsOrderDetailService orderDetailService;
|
private final IWmsOrderDetailService orderDetailService;
|
||||||
private final IWmsProductBomService productBomService;
|
|
||||||
private final IWmsOrderService orderService;
|
private final IWmsOrderService orderService;
|
||||||
private final IWmsBomService wmsBomService;
|
private final IWmsBomService wmsBomService;
|
||||||
private final IWmsBomItemService wmsBomItemService;
|
private final IWmsBomItemService wmsBomItemService;
|
||||||
@@ -133,57 +124,57 @@ public class WmsRawMaterialServiceImpl implements IWmsRawMaterialService {
|
|||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 获取在途量
|
// * 获取在途量
|
||||||
*/
|
// */
|
||||||
private BigDecimal getOnTheWayQuantity(Long rawMaterialId) {
|
// private BigDecimal getOnTheWayQuantity(Long rawMaterialId) {
|
||||||
WmsPurchasePlanDetailBo bo = new WmsPurchasePlanDetailBo();
|
// WmsPurchasePlanDetailBo bo = new WmsPurchasePlanDetailBo();
|
||||||
bo.setRawMaterialId(rawMaterialId);
|
// bo.setRawMaterialId(rawMaterialId);
|
||||||
List<WmsPurchasePlanDetailVo> list = purchasePlanDetailService.queryList(bo);
|
// List<WmsPurchasePlanDetailVo> list = purchasePlanDetailService.queryList(bo);
|
||||||
return list.stream()
|
// return list.stream()
|
||||||
.filter(item -> item.getStatus() != null && item.getStatus() == 1) // 在途状态
|
// .filter(item -> item.getStatus() != null && item.getStatus() == 1) // 在途状态
|
||||||
.map(WmsPurchasePlanDetailVo::getQuantity)
|
// .map(WmsPurchasePlanDetailVo::getQuantity)
|
||||||
.filter(qty -> qty != null)
|
// .filter(qty -> qty != null)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 获取需求量
|
// * 获取需求量
|
||||||
*/
|
// */
|
||||||
private BigDecimal getDemandQuantity(Long rawMaterialId) {
|
// private BigDecimal getDemandQuantity(Long rawMaterialId) {
|
||||||
// 先查询包含该原材料的BOM
|
// // 先查询包含该原材料的BOM
|
||||||
WmsProductBomBo bomBo = new WmsProductBomBo();
|
// WmsProductBomBo bomBo = new WmsProductBomBo();
|
||||||
bomBo.setRawMaterialId(rawMaterialId);
|
// bomBo.setRawMaterialId(rawMaterialId);
|
||||||
List<WmsProductBomVo> bomList = productBomService.queryList(bomBo);
|
// List<WmsProductBomVo> bomList = productBomService.queryList(bomBo);
|
||||||
if (bomList.isEmpty()) {
|
// if (bomList.isEmpty()) {
|
||||||
return BigDecimal.ZERO;
|
// return BigDecimal.ZERO;
|
||||||
}
|
// }
|
||||||
// 查询这些产品的订单明细
|
// // 查询这些产品的订单明细
|
||||||
BigDecimal totalDemand = BigDecimal.ZERO;
|
// BigDecimal totalDemand = BigDecimal.ZERO;
|
||||||
for (WmsProductBomVo bom : bomList) {
|
// for (WmsProductBomVo bom : bomList) {
|
||||||
WmsOrderDetailBo orderDetailBo = new WmsOrderDetailBo();
|
// WmsOrderDetailBo orderDetailBo = new WmsOrderDetailBo();
|
||||||
orderDetailBo.setProductId(bom.getProductId());
|
// orderDetailBo.setProductId(bom.getProductId());
|
||||||
List<WmsOrderDetailVo> orderDetails = orderDetailService.queryList(orderDetailBo);
|
// List<WmsOrderDetailVo> orderDetails = orderDetailService.queryList(orderDetailBo);
|
||||||
// 逐个查询订单状态,过滤出有效订单的明细
|
// // 逐个查询订单状态,过滤出有效订单的明细
|
||||||
BigDecimal productDemand = BigDecimal.ZERO;
|
// BigDecimal productDemand = BigDecimal.ZERO;
|
||||||
for (WmsOrderDetailVo detail : orderDetails) {
|
// for (WmsOrderDetailVo detail : orderDetails) {
|
||||||
// 查询订单主表状态
|
// // 查询订单主表状态
|
||||||
WmsOrderVo order = orderService.queryById(detail.getOrderId());
|
// WmsOrderVo order = orderService.queryById(detail.getOrderId());
|
||||||
if (order != null && order.getOrderStatus() != null && order.getOrderStatus() < 2) {
|
// if (order != null && order.getOrderStatus() != null && order.getOrderStatus() < 2) {
|
||||||
// 新建、生产中状态,累加数量
|
// // 新建、生产中状态,累加数量
|
||||||
if (detail.getQuantity() != null) {
|
// if (detail.getQuantity() != null) {
|
||||||
productDemand = productDemand.add(detail.getQuantity());
|
// productDemand = productDemand.add(detail.getQuantity());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
// 需求量 = 产品需求量 × BOM用量
|
// // 需求量 = 产品需求量 × BOM用量
|
||||||
if (bom.getQuantity() != null) {
|
// if (bom.getQuantity() != null) {
|
||||||
totalDemand = totalDemand.add(productDemand.multiply(bom.getQuantity()));
|
// totalDemand = totalDemand.add(productDemand.multiply(bom.getQuantity()));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return totalDemand;
|
// return totalDemand;
|
||||||
}
|
// }
|
||||||
|
|
||||||
private LambdaQueryWrapper<WmsRawMaterial> buildQueryWrapper(WmsRawMaterialBo bo) {
|
private LambdaQueryWrapper<WmsRawMaterial> buildQueryWrapper(WmsRawMaterialBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ import com.klp.common.utils.StringUtils;
|
|||||||
import com.klp.domain.bo.WmsSalesScriptGeneratorBo;
|
import com.klp.domain.bo.WmsSalesScriptGeneratorBo;
|
||||||
import com.klp.domain.vo.WmsProductSalesScriptVo;
|
import com.klp.domain.vo.WmsProductSalesScriptVo;
|
||||||
import com.klp.domain.vo.WmsProductVo;
|
import com.klp.domain.vo.WmsProductVo;
|
||||||
import com.klp.domain.WmsProductBom;
|
|
||||||
import com.klp.service.IWmsSalesScriptGeneratorService;
|
import com.klp.service.IWmsSalesScriptGeneratorService;
|
||||||
import com.klp.service.IWmsProductService;
|
import com.klp.service.IWmsProductService;
|
||||||
import com.klp.service.IWmsProductBomService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
@@ -36,7 +34,6 @@ import java.util.regex.Pattern;
|
|||||||
public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGeneratorService {
|
public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGeneratorService {
|
||||||
|
|
||||||
private final IWmsProductService iWmsProductService;
|
private final IWmsProductService iWmsProductService;
|
||||||
private final IWmsProductBomService iWmsProductBomService;
|
|
||||||
@Qualifier("salesScriptRestTemplate")
|
@Qualifier("salesScriptRestTemplate")
|
||||||
private final RestTemplate restTemplate;
|
private final RestTemplate restTemplate;
|
||||||
|
|
||||||
@@ -65,11 +62,9 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera
|
|||||||
throw new RuntimeException("产品不存在");
|
throw new RuntimeException("产品不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取BOM信息
|
|
||||||
List<WmsProductBom> bomList = iWmsProductBomService.listByProductId(bo.getProductId());
|
|
||||||
|
|
||||||
// 生成话术
|
// 生成话术
|
||||||
String aiResponse = callAiApi(product, bomList, bo);
|
String aiResponse = callAiApi(product, bo);
|
||||||
//打印这个aiResponse
|
//打印这个aiResponse
|
||||||
System.out.println("AI Response: " + aiResponse);
|
System.out.println("AI Response: " + aiResponse);
|
||||||
List<Map<String, Object>> scripts = parseAiResponse(aiResponse);
|
List<Map<String, Object>> scripts = parseAiResponse(aiResponse);
|
||||||
@@ -189,8 +184,8 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera
|
|||||||
/**
|
/**
|
||||||
* 调用AI API
|
* 调用AI API
|
||||||
*/
|
*/
|
||||||
private String callAiApi(WmsProductVo product, List<WmsProductBom> bomList, WmsSalesScriptGeneratorBo bo) {
|
private String callAiApi(WmsProductVo product, WmsSalesScriptGeneratorBo bo) {
|
||||||
String prompt = buildPrompt(product, bomList, bo);
|
String prompt = buildPrompt(product, bo);
|
||||||
|
|
||||||
Map<String, Object> requestBody = new HashMap<>();
|
Map<String, Object> requestBody = new HashMap<>();
|
||||||
requestBody.put("model", deepseekConfig.getModelName());
|
requestBody.put("model", deepseekConfig.getModelName());
|
||||||
@@ -239,7 +234,7 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera
|
|||||||
/**
|
/**
|
||||||
* 构建提示词
|
* 构建提示词
|
||||||
*/
|
*/
|
||||||
private String buildPrompt(WmsProductVo product, List<WmsProductBom> bomList, WmsSalesScriptGeneratorBo bo) {
|
private String buildPrompt(WmsProductVo product, WmsSalesScriptGeneratorBo bo) {
|
||||||
StringBuilder prompt = new StringBuilder();
|
StringBuilder prompt = new StringBuilder();
|
||||||
prompt.append("请根据以下产品信息和BOM清单,生成")
|
prompt.append("请根据以下产品信息和BOM清单,生成")
|
||||||
.append(bo.getScriptCount())
|
.append(bo.getScriptCount())
|
||||||
@@ -264,14 +259,14 @@ public class WmsSalesScriptGeneratorServiceImpl implements IWmsSalesScriptGenera
|
|||||||
prompt.append("备注:").append(product.getRemark()).append("\n");
|
prompt.append("备注:").append(product.getRemark()).append("\n");
|
||||||
}
|
}
|
||||||
// BOM信息
|
// BOM信息
|
||||||
if (Boolean.TRUE.equals(bo.getIncludeBomInfo()) && bomList != null && !bomList.isEmpty()) {
|
// if (Boolean.TRUE.equals(bo.getIncludeBomInfo()) && bomList != null && !bomList.isEmpty()) {
|
||||||
prompt.append("\n【BOM清单】\n");
|
// prompt.append("\n【BOM清单】\n");
|
||||||
for (WmsProductBom bom : bomList) {
|
// for (WmsProductBom bom : bomList) {
|
||||||
prompt.append("- ").append(bom.getRawMaterialId())
|
// prompt.append("- ").append(bom.getRawMaterialId())
|
||||||
.append(": ").append(bom.getQuantity())
|
// .append(": ").append(bom.getQuantity())
|
||||||
.append(" ").append(bom.getUnit()).append("\n");
|
// .append(" ").append(bom.getUnit()).append("\n");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
// 生成要求
|
// 生成要求
|
||||||
prompt.append("\n【话术生成要求】\n");
|
prompt.append("\n【话术生成要求】\n");
|
||||||
prompt.append("1. 每条话术必须包含产品的主要特性和优势\n");
|
prompt.append("1. 每条话术必须包含产品的主要特性和优势\n");
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.klp.mapper.WmsCoilPendingActionMapper">
|
<mapper namespace="com.klp.mapper.WmsCoilPendingActionMapper">
|
||||||
|
|
||||||
<resultMap type="com.klp.domain.WmsCoilPendingAction" id="WmsCoilPendingActionResult">
|
<resultMap type="com.klp.domain.WmsCoilPendingAction" id="WmsCoilPendingActionResult">
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE mapper
|
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="com.klp.mapper.WmsProductBomMapper">
|
|
||||||
|
|
||||||
<resultMap type="com.klp.domain.WmsProductBom" id="WmsProductBomResult">
|
|
||||||
<result property="bomId" column="bom_id"/>
|
|
||||||
<result property="productId" column="product_id"/>
|
|
||||||
<result property="rawMaterialId" column="raw_material_id"/>
|
|
||||||
<result property="quantity" column="quantity"/>
|
|
||||||
<result property="unit" column="unit"/>
|
|
||||||
<result property="remark" column="remark"/>
|
|
||||||
</resultMap>
|
|
||||||
|
|
||||||
<select id="listByProductId" resultType="com.klp.domain.WmsProductBom">
|
|
||||||
SELECT bom_id, product_id, raw_material_id, quantity, unit, remark
|
|
||||||
FROM wms_product_bom
|
|
||||||
WHERE product_id = #{productId}
|
|
||||||
and del_flag = 0
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 分页联查产品和原材料名称编码,支持Wrapper动态条件,返回Page<WmsProductBomVo> -->
|
|
||||||
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsProductBomVo">
|
|
||||||
SELECT
|
|
||||||
b.*,
|
|
||||||
p.product_name AS productName,
|
|
||||||
p.product_code AS productCode,
|
|
||||||
r.raw_material_name AS rawMaterialName,
|
|
||||||
r.raw_material_code AS rawMaterialCode
|
|
||||||
FROM wms_product_bom b
|
|
||||||
LEFT JOIN wms_product p ON b.product_id = p.product_id AND p.del_flag = 0
|
|
||||||
LEFT JOIN wms_raw_material r ON b.raw_material_id = r.raw_material_id AND r.del_flag = 0
|
|
||||||
${ew.customSqlSegment}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</mapper>
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE mapper
|
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="com.klp.mapper.WmsPurchasePlanDetailMapper">
|
|
||||||
|
|
||||||
<resultMap type="com.klp.domain.WmsPurchasePlanDetail" id="WmsPurchasePlanDetailResult">
|
|
||||||
<result property="detailId" column="detail_id"/>
|
|
||||||
<result property="planId" column="plan_id"/>
|
|
||||||
<result property="rawMaterialId" column="raw_material_id"/>
|
|
||||||
<result property="owner" column="owner"/>
|
|
||||||
<result property="quantity" column="quantity"/>
|
|
||||||
<result property="unit" column="unit"/>
|
|
||||||
<result property="annex" column="annex"/>
|
|
||||||
<result property="status" column="status"/>
|
|
||||||
<result property="remark" column="remark"/>
|
|
||||||
<result property="delFlag" column="del_flag"/>
|
|
||||||
<result property="createTime" column="create_time"/>
|
|
||||||
<result property="createBy" column="create_by"/>
|
|
||||||
<result property="updateTime" column="update_time"/>
|
|
||||||
<result property="updateBy" column="update_by"/>
|
|
||||||
<result property="contractId" column="contract_id"/>
|
|
||||||
<result property="supplierId" column="supplier_id"/>
|
|
||||||
<result property="detailCode" column="detail_code"/>
|
|
||||||
</resultMap>
|
|
||||||
<select id="selectVoPagePlus" resultType="com.klp.domain.vo.WmsPurchasePlanDetailVo">
|
|
||||||
<!-- 联查材料名称编码 -->
|
|
||||||
SELECT
|
|
||||||
wpd.*,
|
|
||||||
wm.raw_material_name AS rawMaterialName,
|
|
||||||
wm.raw_material_code AS rawMaterialCode,
|
|
||||||
ws.name AS supplierName,
|
|
||||||
wc.contract_no AS contractNo
|
|
||||||
FROM
|
|
||||||
wms_purchase_plan_detail wpd
|
|
||||||
LEFT JOIN wms_raw_material wm ON wpd.raw_material_id = wm.raw_material_id and wm.del_flag = 0
|
|
||||||
left join wms_supplier ws on wpd.supplier_id = ws.supplier_id and ws.del_flag = 0
|
|
||||||
left join wms_contract wc on wpd.contract_id = wc.contract_id and wc.del_flag = 0
|
|
||||||
${ew.customSqlSegment}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="getByRawMaterialIdAndOnTheWay" resultType="java.math.BigDecimal">
|
|
||||||
select sum(wpd.quantity)
|
|
||||||
from wms_purchase_plan_detail wpd
|
|
||||||
where wpd.raw_material_id = #{rawMaterialId}
|
|
||||||
and wpd.status = 1
|
|
||||||
and wpd.del_flag = 0
|
|
||||||
</select>
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE mapper
|
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
||||||
<mapper namespace="com.klp.mapper.WmsPurchasePlanMapper">
|
|
||||||
|
|
||||||
<resultMap type="com.klp.domain.WmsPurchasePlan" id="WmsPurchasePlanResult">
|
|
||||||
<result property="planId" column="plan_id"/>
|
|
||||||
<result property="planCode" column="plan_code"/>
|
|
||||||
<result property="owner" column="owner"/>
|
|
||||||
<result property="orderId" column="order_id"/>
|
|
||||||
<result property="status" column="status"/>
|
|
||||||
<result property="attachmentInfo" column="attachment_info"/>
|
|
||||||
<result property="remark" column="remark"/>
|
|
||||||
<result property="delFlag" column="del_flag"/>
|
|
||||||
<result property="createTime" column="create_time"/>
|
|
||||||
<result property="createBy" column="create_by"/>
|
|
||||||
<result property="updateTime" column="update_time"/>
|
|
||||||
<result property="updateBy" column="update_by"/>
|
|
||||||
</resultMap>
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
|
||||||
Reference in New Issue
Block a user