feat(wms): 新增WMS月度报功能模块

- 新增WMS月度报实体类、VO、BO及Mapper接口W
- 实现MS月度报的增删改查及分页查询功能
- 提供导出Excel报表功能
- 添加权限控制注解及-日志记录 完善下拉框查询接口
- 补充MyBatis XML映射文件基础结构

- qms为状态字段添加中文注释说明取值含义
-qms 增加检测结果判断逻辑及规格比较方法
- qms添加标准规格值判断的TODO标记

- 注释掉DmsRealtimeAlarmReportController中权限校验注解
- 注释掉DmsReportController中故障追溯报表权限校验注解
hwmom-htk
zangch@mesnac.com 4 months ago
parent d4cc4f4758
commit e0d9d6fe48

@ -32,7 +32,7 @@ public class DmsRealtimeAlarmReportController extends BaseController {
/**
*
*/
@SaCheckPermission("dms:report:realtimeAlarm:list")
//@SaCheckPermission("dms:report:realtimeAlarm:list")
@GetMapping("/list")
public TableDataInfo<RealtimeAlarmReportVo> list(RealtimeAlarmReportBo bo, PageQuery pageQuery) {
return dmsReportService.queryRealtimeAlarm(bo, pageQuery);
@ -41,7 +41,7 @@ public class DmsRealtimeAlarmReportController extends BaseController {
/**
*
*/
@SaCheckPermission("dms:report:realtimeAlarm:export")
//@SaCheckPermission("dms:report:realtimeAlarm:export")
@Log(title = "实时报警报表", businessType = BusinessType.EXPORT)
@RepeatSubmit()
@PostMapping("/export")

@ -26,17 +26,17 @@ public class DmsReportController {
private final IDmsReportService dmsReportService;
@SaCheckPermission("dms:report:faultTrace:list")
//@SaCheckPermission("dms:report:faultTrace:list")
@GetMapping("/list")
public TableDataInfo<FaultTraceReportVo> list(FaultTraceReportBo bo, PageQuery pageQuery) {
return dmsReportService.queryFaultTrace(bo, pageQuery);
}
@SaCheckPermission("dms:report:faultTrace:export")
//@SaCheckPermission("dms:report:faultTrace:export")
@Log(title = "设备故障处理记录表(详细追溯)", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(FaultTraceReportBo bo, HttpServletResponse response) {
List<FaultTraceReportVo> list = dmsReportService.exportFaultTrace(bo);
ExcelUtil.exportExcel(list, "设备故障处理记录表(详细追溯)", FaultTraceReportVo.class, response);
}
}
}

@ -88,7 +88,7 @@ public class QcPDAServiceImpl implements IQcPDAService {
}
QcInspectionMainBo selectMain = new QcInspectionMainBo();
selectMain.setPlanDetailId(planDetail.getPlanDetailId());
selectMain.setStatus("0");
selectMain.setStatus("0");//单据状态0未处理/1完成
List<QcInspectionMainVo> mainVoList = qcInspectionMainService.queryList(selectMain);
if (!mainVoList.isEmpty()){
throw new ServiceException("此生产计划已生成质检任务且未处理!");
@ -117,7 +117,7 @@ public class QcPDAServiceImpl implements IQcPDAService {
inspectionBo.setTeam(planDetail.getTeamName());
inspectionBo.setProductionOrder(planDetail.getPlanCode());
inspectionBo.setBarcode(planDetail.getReturnBarcode());
inspectionBo.setStatus("0");
inspectionBo.setStatus("0");//单据状态0未处理/1完成
qcInspectionMainService.insertByBo(inspectionBo);
QcTemplateItemBo itemBo = new QcTemplateItemBo();
@ -128,7 +128,7 @@ public class QcPDAServiceImpl implements IQcPDAService {
QcInspectionResultBo resultBo = new QcInspectionResultBo();
resultBo.setInspectionId(inspectionBo.getInspectionId());
resultBo.setItemId(templateItemVo.getItemId());
resultBo.setDetectResult("2");
resultBo.setDetectResult("2");//检测结果0合格1不合格2未判定
resultBo.setItemCode(templateItemVo.getItemCode());
resultBo.setItemName(templateItemVo.getItemName());
resultBo.setInspectionPosition(templateItemVo.getInspectionPosition());
@ -196,11 +196,17 @@ public class QcPDAServiceImpl implements IQcPDAService {
//标准值判断
boolean isWithinRange = (detectValue.compareTo(lowerLimit) >= 0) && (detectValue.compareTo(upperLimit) <= 0);
if (isWithinRange) {
resultBo.setDetectResult("0");
resultBo.setDetectResult("0");//检测结果0合格1不合格2未判定
} else {
resultBo.setDetectResult("1");
}
//标准规格值判断
//todo:标准规格值判断
// BigDecimal detectValue1 = resultBo.getDetectValue();
// // 标准值判断和规格判断合并为一行
// boolean isQualified = (detectValue1.compareTo(existingResult.getLowerLimit()) >= 0)
// && (detectValue1.compareTo(existingResult.getUpperLimit()) <= 0)
// && isWithinSpecification(detectValue1, existingResult.getSpecName ());
// resultBo.setDetectResult(isQualified ? "0" : "1");//检测结果0合格1不合格2未判定
}
@ -209,7 +215,7 @@ public class QcPDAServiceImpl implements IQcPDAService {
// 在循环中更新不合格检查
// 如果该条结果是不合格('1'表示不合格)
if ("1".equals(resultBo.getDetectResult())) {
if ("1".equals(resultBo.getDetectResult())) {//检测结果0合格1不合格2未判定
isUnqualified = true;
}
}
@ -218,7 +224,7 @@ public class QcPDAServiceImpl implements IQcPDAService {
// 设置单据状态为完成('1'
bo.setStatus("1");//单据状态0未处理/1完成
// 设置质检结果:'1'表示不合格,'0'表示合格
bo.setResult(isUnqualified ? "1" : "0");
bo.setResult(isUnqualified ? "1" : "0");// 质检结果0合格/1不合格
// 更新主记录
if (isUnqualified){
bo.setQualifiedQty(new BigDecimal(0));
@ -312,6 +318,45 @@ public class QcPDAServiceImpl implements IQcPDAService {
return true;
}
/**
*
* @param detectedValue
* @param spec
* @return
*/
boolean isWithinSpecification( BigDecimal detectedValue, String spec) {
if (StringUtils.isBlank(spec)) {
return true; // 无规格要求,默认通过
}
try {
// 处理多值规格(如:"A,B,C"
if (spec.contains(",")) {
return Arrays.stream(spec.split("\\s*,\\s*"))
.anyMatch(allowed -> StringUtils.equalsIgnoreCase(allowed, detectedValue.toString()));
}
// 处理范围规格(如:"20-30" 或 "20x30-20x50" 或 "20x30*0.1-20x50*0.377"
if (spec.contains("-")) {
String[] bounds = spec.split("\\s*-\\s*", 2);
if (bounds.length != 2) return false;
BigDecimal lower = new BigDecimal(bounds[0].replaceAll("[^0-9.]", ""));
BigDecimal upper = new BigDecimal(bounds[1].replaceAll("[^0-9.]", ""));
return detectedValue.compareTo(lower) >= 0 && detectedValue.compareTo(upper) <= 0;
}
// 处理精确匹配
return new BigDecimal(spec.trim()).compareTo(detectedValue) == 0;
} catch (Exception e) {
log.error("规格比较出错 - 检测值: {}, 规格: {}, 错误: {}",
detectedValue, spec, e.getMessage());
return false; // 出现异常时默认为不合格
}
}
/**
* -
* @param dispositionType

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.wms.domain.vo.WmsMonthlyReportVo;
import org.dromara.wms.domain.bo.WmsMonthlyReportBo;
import org.dromara.wms.service.IWmsMonthlyReportService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* WMS
* 访:/wms/wmsMonthlyReport
*
* @author zch
* @date 2025-09-25
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wmsMonthlyReport")
public class WmsMonthlyReportController extends BaseController {
private final IWmsMonthlyReportService wmsMonthlyReportService;
/**
* WMS
*/
@SaCheckPermission("wms:wmsMonthlyReport:list")
@GetMapping("/list")
public TableDataInfo<WmsMonthlyReportVo> list(WmsMonthlyReportBo bo, PageQuery pageQuery) {
return wmsMonthlyReportService.queryPageList(bo, pageQuery);
}
/**
* WMS
*/
@SaCheckPermission("wms:wmsMonthlyReport:export")
@Log(title = "WMS月度报", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsMonthlyReportBo bo, HttpServletResponse response) {
List<WmsMonthlyReportVo> list = wmsMonthlyReportService.queryList(bo);
ExcelUtil.exportExcel(list, "WMS月度报", WmsMonthlyReportVo.class, response);
}
/**
* WMS
*
* @param reportId
*/
@SaCheckPermission("wms:wmsMonthlyReport:query")
@GetMapping("/{reportId}")
public R<WmsMonthlyReportVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long reportId) {
return R.ok(wmsMonthlyReportService.queryById(reportId));
}
/**
* WMS
*/
@SaCheckPermission("wms:wmsMonthlyReport:add")
@Log(title = "WMS月度报", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsMonthlyReportBo bo) {
return toAjax(wmsMonthlyReportService.insertByBo(bo));
}
/**
* WMS
*/
@SaCheckPermission("wms:wmsMonthlyReport:edit")
@Log(title = "WMS月度报", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsMonthlyReportBo bo) {
return toAjax(wmsMonthlyReportService.updateByBo(bo));
}
/**
* WMS
*
* @param reportIds
*/
@SaCheckPermission("wms:wmsMonthlyReport:remove")
@Log(title = "WMS月度报", businessType = BusinessType.DELETE)
@DeleteMapping("/{reportIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] reportIds) {
return toAjax(wmsMonthlyReportService.deleteWithValidByIds(List.of(reportIds), true));
}
/**
* WMS
*/
@GetMapping("/getWmsMonthlyReportList")
public R<List<WmsMonthlyReportVo>> getWmsMonthlyReportList(WmsMonthlyReportBo bo) {
List<WmsMonthlyReportVo> list = wmsMonthlyReportService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,120 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* WMS wms_monthly_report
*
* @author zch
* @date 2025-09-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_monthly_report")
public class WmsMonthlyReport extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long reportId;
/**
*
*/
private Long reportYear;
/**
*
*/
private Long reportMonth;
/**
* ID
*/
private Long materialTypeId;
/**
*
*/
private String materialTypeName;
/**
*
*/
private Long currentInstockCount;
/**
*
*/
private Long currentInstockQty;
/**
*
*/
private Long currentOutstockCount;
/**
*
*/
private Long currentOutstockQty;
/**
*
*/
private Long lastInstockCount;
/**
*
*/
private Long lastInstockQty;
/**
*
*/
private Long lastOutstockCount;
/**
*
*/
private Long lastOutstockQty;
/**
* -
*/
private Long instockCountDiff;
/**
* -
*/
private Long instockQtyDiff;
/**
* -
*/
private Long outstockCountDiff;
/**
* -
*/
private Long outstockQtyDiff;
/**
*
*/
private Long inventoryMaterialCount;
/**
*
*/
private Long inventoryQty;
}

@ -0,0 +1,116 @@
package org.dromara.wms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.wms.domain.WmsMonthlyReport;
/**
* WMS wms_monthly_report
*
* @author zch
* @date 2025-09-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsMonthlyReport.class, reverseConvertGenerate = false)
public class WmsMonthlyReportBo extends BaseEntity {
/**
*
*/
private Long reportId;
/**
*
*/
private Long reportYear;
/**
*
*/
private Long reportMonth;
/**
* ID
*/
private Long materialTypeId;
/**
*
*/
private String materialTypeName;
/**
*
*/
private Long currentInstockCount;
/**
*
*/
private Long currentInstockQty;
/**
*
*/
private Long currentOutstockCount;
/**
*
*/
private Long currentOutstockQty;
/**
*
*/
private Long lastInstockCount;
/**
*
*/
private Long lastInstockQty;
/**
*
*/
private Long lastOutstockCount;
/**
*
*/
private Long lastOutstockQty;
/**
* -
*/
private Long instockCountDiff;
/**
* -
*/
private Long instockQtyDiff;
/**
* -
*/
private Long outstockCountDiff;
/**
* -
*/
private Long outstockQtyDiff;
/**
*
*/
private Long inventoryMaterialCount;
/**
*
*/
private Long inventoryQty;
}

@ -0,0 +1,150 @@
package org.dromara.wms.domain.vo;
import org.dromara.wms.domain.WmsMonthlyReport;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* WMS wms_monthly_report
*
* @author zch
* @date 2025-09-25
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = WmsMonthlyReport.class)
public class WmsMonthlyReportVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "报表主键")
private Long reportId;
/**
*
*/
@ExcelProperty(value = "报表年份")
private Long reportYear;
/**
*
*/
@ExcelProperty(value = "报表月份")
private Long reportMonth;
/**
* ID
*/
@ExcelProperty(value = "物料类型ID")
private Long materialTypeId;
/**
*
*/
@ExcelProperty(value = "物料类型名称")
private String materialTypeName;
/**
*
*/
@ExcelProperty(value = "当月入库记录数量")
private Long currentInstockCount;
/**
*
*/
@ExcelProperty(value = "当月入库总量")
private Long currentInstockQty;
/**
*
*/
@ExcelProperty(value = "当月出库记录数量")
private Long currentOutstockCount;
/**
*
*/
@ExcelProperty(value = "当月出库总量")
private Long currentOutstockQty;
/**
*
*/
@ExcelProperty(value = "上月入库记录数量")
private Long lastInstockCount;
/**
*
*/
@ExcelProperty(value = "上月入库总量")
private Long lastInstockQty;
/**
*
*/
@ExcelProperty(value = "上月出库记录数量")
private Long lastOutstockCount;
/**
*
*/
@ExcelProperty(value = "上月出库总量")
private Long lastOutstockQty;
/**
* -
*/
@ExcelProperty(value = "入库记录数量环比差额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "当=月-上月")
private Long instockCountDiff;
/**
* -
*/
@ExcelProperty(value = "入库总量环比差额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "当=月-上月")
private Long instockQtyDiff;
/**
* -
*/
@ExcelProperty(value = "出库记录数量环比差额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "当=月-上月")
private Long outstockCountDiff;
/**
* -
*/
@ExcelProperty(value = "出库总量环比差额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "当=月-上月")
private Long outstockQtyDiff;
/**
*
*/
@ExcelProperty(value = "月末库存物料种类数")
private Long inventoryMaterialCount;
/**
*
*/
@ExcelProperty(value = "月末库存总量")
private Long inventoryQty;
}

@ -0,0 +1,15 @@
package org.dromara.wms.mapper;
import org.dromara.wms.domain.WmsMonthlyReport;
import org.dromara.wms.domain.vo.WmsMonthlyReportVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* WMSMapper
*
* @author zch
* @date 2025-09-25
*/
public interface WmsMonthlyReportMapper extends BaseMapperPlus<WmsMonthlyReport, WmsMonthlyReportVo> {
}

@ -0,0 +1,69 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.WmsMonthlyReport;
import org.dromara.wms.domain.vo.WmsMonthlyReportVo;
import org.dromara.wms.domain.bo.WmsMonthlyReportBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* WMSService
*
* @author zch
* @date 2025-09-25
*/
public interface IWmsMonthlyReportService {
/**
* WMS
*
* @param reportId
* @return WMS
*/
WmsMonthlyReportVo queryById(Long reportId);
/**
* WMS
*
* @param bo
* @param pageQuery
* @return WMS
*/
TableDataInfo<WmsMonthlyReportVo> queryPageList(WmsMonthlyReportBo bo, PageQuery pageQuery);
/**
* WMS
*
* @param bo
* @return WMS
*/
List<WmsMonthlyReportVo> queryList(WmsMonthlyReportBo bo);
/**
* WMS
*
* @param bo WMS
* @return
*/
Boolean insertByBo(WmsMonthlyReportBo bo);
/**
* WMS
*
* @param bo WMS
* @return
*/
Boolean updateByBo(WmsMonthlyReportBo bo);
/**
* WMS
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,150 @@
package org.dromara.wms.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.wms.domain.bo.WmsMonthlyReportBo;
import org.dromara.wms.domain.vo.WmsMonthlyReportVo;
import org.dromara.wms.domain.WmsMonthlyReport;
import org.dromara.wms.mapper.WmsMonthlyReportMapper;
import org.dromara.wms.service.IWmsMonthlyReportService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* WMSService
*
* @author zch
* @date 2025-09-25
*/
@RequiredArgsConstructor
@Service
public class WmsMonthlyReportServiceImpl implements IWmsMonthlyReportService {
private final WmsMonthlyReportMapper baseMapper;
/**
* WMS
*
* @param reportId
* @return WMS
*/
@Override
public WmsMonthlyReportVo queryById(Long reportId){
return baseMapper.selectVoById(reportId);
}
/**
* WMS
*
* @param bo
* @param pageQuery
* @return WMS
*/
@Override
public TableDataInfo<WmsMonthlyReportVo> queryPageList(WmsMonthlyReportBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<WmsMonthlyReport> lqw = buildQueryWrapper(bo);
Page<WmsMonthlyReportVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* WMS
*
* @param bo
* @return WMS
*/
@Override
public List<WmsMonthlyReportVo> queryList(WmsMonthlyReportBo bo) {
MPJLambdaWrapper<WmsMonthlyReport> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<WmsMonthlyReport> buildQueryWrapper(WmsMonthlyReportBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<WmsMonthlyReport> lqw = JoinWrappers.lambda(WmsMonthlyReport.class)
.selectAll(WmsMonthlyReport.class)
.eq(bo.getReportId() != null, WmsMonthlyReport::getReportId, bo.getReportId())
.eq(bo.getReportYear() != null, WmsMonthlyReport::getReportYear, bo.getReportYear())
.eq(bo.getReportMonth() != null, WmsMonthlyReport::getReportMonth, bo.getReportMonth())
.eq(bo.getMaterialTypeId() != null, WmsMonthlyReport::getMaterialTypeId, bo.getMaterialTypeId())
.like(StringUtils.isNotBlank(bo.getMaterialTypeName()), WmsMonthlyReport::getMaterialTypeName, bo.getMaterialTypeName())
.eq(bo.getCurrentInstockCount() != null, WmsMonthlyReport::getCurrentInstockCount, bo.getCurrentInstockCount())
.eq(bo.getCurrentInstockQty() != null, WmsMonthlyReport::getCurrentInstockQty, bo.getCurrentInstockQty())
.eq(bo.getCurrentOutstockCount() != null, WmsMonthlyReport::getCurrentOutstockCount, bo.getCurrentOutstockCount())
.eq(bo.getCurrentOutstockQty() != null, WmsMonthlyReport::getCurrentOutstockQty, bo.getCurrentOutstockQty())
.eq(bo.getLastInstockCount() != null, WmsMonthlyReport::getLastInstockCount, bo.getLastInstockCount())
.eq(bo.getLastInstockQty() != null, WmsMonthlyReport::getLastInstockQty, bo.getLastInstockQty())
.eq(bo.getLastOutstockCount() != null, WmsMonthlyReport::getLastOutstockCount, bo.getLastOutstockCount())
.eq(bo.getLastOutstockQty() != null, WmsMonthlyReport::getLastOutstockQty, bo.getLastOutstockQty())
.eq(bo.getInstockCountDiff() != null, WmsMonthlyReport::getInstockCountDiff, bo.getInstockCountDiff())
.eq(bo.getInstockQtyDiff() != null, WmsMonthlyReport::getInstockQtyDiff, bo.getInstockQtyDiff())
.eq(bo.getOutstockCountDiff() != null, WmsMonthlyReport::getOutstockCountDiff, bo.getOutstockCountDiff())
.eq(bo.getOutstockQtyDiff() != null, WmsMonthlyReport::getOutstockQtyDiff, bo.getOutstockQtyDiff())
.eq(bo.getInventoryMaterialCount() != null, WmsMonthlyReport::getInventoryMaterialCount, bo.getInventoryMaterialCount())
.eq(bo.getInventoryQty() != null, WmsMonthlyReport::getInventoryQty, bo.getInventoryQty())
.orderByDesc(WmsMonthlyReport::getCreateTime);
return lqw;
}
/**
* WMS
*
* @param bo WMS
* @return
*/
@Override
public Boolean insertByBo(WmsMonthlyReportBo bo) {
WmsMonthlyReport add = MapstructUtils.convert(bo, WmsMonthlyReport.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setReportId(add.getReportId());
}
return flag;
}
/**
* WMS
*
* @param bo WMS
* @return
*/
@Override
public Boolean updateByBo(WmsMonthlyReportBo bo) {
WmsMonthlyReport update = MapstructUtils.convert(bo, WmsMonthlyReport.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(WmsMonthlyReport entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* WMS
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,7 @@
<?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="org.dromara.wms.mapper.WmsMonthlyReportMapper">
</mapper>
Loading…
Cancel
Save