Merge remote-tracking branch 'origin/0.8.X' into 0.8.X

# Conflicts:
#	klp-ui/src/utils/enum.js
This commit is contained in:
朱昊天
2026-07-08 10:45:10 +08:00
17 changed files with 2382 additions and 25 deletions

View File

@@ -0,0 +1,154 @@
import request from '@/utils/request'
// ═══════════════════════════════════════
// 厚度分类
// ═══════════════════════════════════════
export function listThickClass(query) {
return request({ url: '/pltcm/thickClass/list', method: 'get', params: query })
}
export function getThickClass(classId) {
return request({ url: '/pltcm/thickClass/' + classId, method: 'get' })
}
export function addThickClass(data) {
return request({ url: '/pltcm/thickClass', method: 'post', data })
}
export function updateThickClass(data) {
return request({ url: '/pltcm/thickClass', method: 'put', data })
}
export function delThickClass(classIds) {
return request({ url: '/pltcm/thickClass/' + classIds, method: 'delete' })
}
// ═══════════════════════════════════════
// 宽度分类
// ═══════════════════════════════════════
export function listWidthClass(query) {
return request({ url: '/pltcm/widthClass/list', method: 'get', params: query })
}
export function getWidthClass(classId) {
return request({ url: '/pltcm/widthClass/' + classId, method: 'get' })
}
export function addWidthClass(data) {
return request({ url: '/pltcm/widthClass', method: 'post', data })
}
export function updateWidthClass(data) {
return request({ url: '/pltcm/widthClass', method: 'put', data })
}
export function delWidthClass(classIds) {
return request({ url: '/pltcm/widthClass/' + classIds, method: 'delete' })
}
// ═══════════════════════════════════════
// 屈服强度分类
// ═══════════════════════════════════════
export function listYieldStressClass(query) {
return request({ url: '/pltcm/yieldStressClass/list', method: 'get', params: query })
}
export function getYieldStressClass(classId) {
return request({ url: '/pltcm/yieldStressClass/' + classId, method: 'get' })
}
export function addYieldStressClass(data) {
return request({ url: '/pltcm/yieldStressClass', method: 'post', data })
}
export function updateYieldStressClass(data) {
return request({ url: '/pltcm/yieldStressClass', method: 'put', data })
}
export function delYieldStressClass(classIds) {
return request({ url: '/pltcm/yieldStressClass/' + classIds, method: 'delete' })
}
// ═══════════════════════════════════════
// 策略关联
// ═══════════════════════════════════════
export function listStrategy(query) {
return request({ url: '/pltcm/strategy/list', method: 'get', params: query })
}
export function getStrategy(id) {
return request({ url: '/pltcm/strategy/' + id, method: 'get' })
}
export function addStrategy(data) {
return request({ url: '/pltcm/strategy', method: 'post', data })
}
export function updateStrategy(data) {
return request({ url: '/pltcm/strategy', method: 'put', data })
}
export function delStrategy(ids) {
return request({ url: '/pltcm/strategy/' + ids, method: 'delete' })
}
// ═══════════════════════════════════════
// 屈服强度与钢种对应关系
// ═══════════════════════════════════════
export function listSteelgrade(query) {
return request({ url: '/pltcm/steelgrade/list', method: 'get', params: query })
}
export function getSteelgrade(steelGrade) {
return request({ url: '/pltcm/steelgrade/' + steelGrade, method: 'get' })
}
export function addSteelgrade(data) {
return request({ url: '/pltcm/steelgrade', method: 'post', data })
}
export function updateSteelgrade(data) {
return request({ url: '/pltcm/steelgrade', method: 'put', data })
}
export function delSteelgrade(steelGrades) {
return request({ url: '/pltcm/steelgrade/' + steelGrades, method: 'delete' })
}
// ═══════════════════════════════════════
// 比例标准表
// ═══════════════════════════════════════
export function listRatio(query) {
return request({ url: '/pltcm/ratio/list', method: 'get', params: query })
}
export function getRatio(id) {
return request({ url: '/pltcm/ratio/' + id, method: 'get' })
}
export function addRatio(data) {
return request({ url: '/pltcm/ratio', method: 'post', data })
}
export function updateRatio(data) {
return request({ url: '/pltcm/ratio', method: 'put', data })
}
export function delRatio(ids) {
return request({ url: '/pltcm/ratio/' + ids, method: 'delete' })
}
// ═══════════════════════════════════════
// 设备启用状态
// ═══════════════════════════════════════
export function listDeviceEnable(query) {
return request({ url: '/pltcm/deviceEnable/list', method: 'get', params: query })
}
export function getDeviceEnable(id) {
return request({ url: '/pltcm/deviceEnable/' + id, method: 'get' })
}
export function updateDeviceEnable(data) {
return request({ url: '/pltcm/deviceEnable', method: 'put', data })
}

View File

@@ -58,6 +58,12 @@ export default {
disabled: {
type: Boolean,
default: false
},
// 下拉最多展示条数默认6条
maxSuggestions: {
type: Number,
default: 6,
validator: (value) => value > 0
}
},
data() {
@@ -118,7 +124,7 @@ export default {
});
}
cb(results); // 回调返回匹配结果
cb(results.slice(0, this.maxSuggestions)); // 回调返回匹配结果(限制条数)
},
/**

View File

@@ -411,7 +411,7 @@ import { listWarehouse } from '@/api/wms/warehouse'
export default {
name: 'QualityReview',
components: { CoilSelector },
dicts: ['quality_review_status', 'regrade_quality_type', 'coil_quality_status'],
dicts: ['quality_review_status', 'coil_quality_status'],
data() {
return {
// 列表

View File

@@ -93,7 +93,7 @@ import { listQualityReview, approveQualityReview, rejectQualityReview, getQualit
export default {
name: 'QualityReviewTodo',
dicts: ['quality_review_status', 'regrade_quality_type', 'coil_quality_status'],
dicts: ['quality_review_status', 'coil_quality_status'],
data() {
return {
loading: false,

File diff suppressed because it is too large Load Diff

View File

@@ -54,6 +54,10 @@
<i class="el-icon-alarm-clock"></i>
<span slot="title">app</span>
</el-menu-item>
<el-menu-item index="model">
<i class="el-icon-coin"></i>
<span slot="title">模型</span>
</el-menu-item>
</el-menu>
</div>
<div style="flex: 1; overflow: hidden;">
@@ -76,6 +80,7 @@ import Stoppage from '@/views/timing/stoppage/index.vue';
import AcidTiming from '@/views/lines/acid/index.vue';
import TrackingView from './components/TrackingView.vue';
import ProcessSpec from './components/ProcessSpec.vue';
import Model from './components/Model.vue';
export default {
name: 'AcidSystem',
@@ -92,7 +97,8 @@ export default {
Stoppage,
AcidTiming,
TrackingView,
ProcessSpec
ProcessSpec,
Model,
},
data() {
return {
@@ -115,6 +121,7 @@ export default {
acidTiming: 'AcidTiming',
tracking: 'TrackingView',
processSpec: 'ProcessSpec',
model: 'Model',
};
return componentMap[this.activeMenu];
},

View File

@@ -2,11 +2,10 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="调拨单号" prop="transferNo">
<el-input v-model="queryParams.transferNo" placeholder="请输入调拨单号" clearable @keyup.enter.native="handleQuery" />
<MemoInput storageKey="transferNo" v-model="queryParams.transferNo" placeholder="请输入调拨单号" />
</el-form-item>
<el-form-item label="调拨单名称" prop="transferName">
<el-input v-model="queryParams.transferName" placeholder="请输入调拨单名称,用于帮助记忆与沟通" clearable
@keyup.enter.native="handleQuery" />
<MemoInput storageKey="transferName" v-model="queryParams.transferName" placeholder="请输入调拨单名称,用于帮助记忆与沟通" />
</el-form-item>
<el-form-item label="调拨时间" prop="transferTime">
<el-date-picker clearable v-model="queryParams.transferTime" type="date" value-format="yyyy-MM-dd"
@@ -41,7 +40,7 @@
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple"
@click="handleDelete">删除</el-button>
v-hasRole="['glc']" @click="handleDelete">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
@@ -80,8 +79,8 @@
<el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">查看</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
:disabled="!canEdit(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
:disabled="!canDelete(scope.row)">删除</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" v-hasRole="['glc']"
@click="handleDelete(scope.row)">删除</el-button>
<el-button size="mini" plain type="text" @click="handleSubmitapprove(scope.row)"
v-if="(scope.row.approveStatus || '0') == '0'" icon="el-icon-check">提交</el-button>
<el-button size="mini" plain type="text" @click="handleWithdrawapprove(scope.row)"
@@ -103,10 +102,10 @@
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="调拨单号" prop="transferNo">
<el-input v-model="form.transferNo" placeholder="请输入调拨单号" />
<MemoInput storageKey="transferNo" v-model="form.transferNo" placeholder="请输入调拨单号" />
</el-form-item>
<el-form-item label="调拨单名称" prop="transferName">
<el-input v-model="form.transferName" placeholder="请输入调拨单名称,用于帮助记忆与沟通" />
<MemoInput storageKey="transferName" v-model="form.transferName" placeholder="请输入调拨单名称,用于帮助记忆与沟通" />
</el-form-item>
<el-form-item label="调拨时间" prop="transferTime">
<el-date-picker clearable v-model="form.transferTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"
@@ -297,12 +296,6 @@ export default {
const status = row.approveStatus || '0';
return status === '0' || status === '1' || status === '3';
},
/** 判断是否可以删除 */
canDelete(row) {
// 如果没有状态字段,则视为未提交
const status = row.approveStatus || '0';
return status === '0';
},
/** 提交审批 */
handleSubmitapprove(row) {
this.$confirm('确定要提交审批吗?', '提示', {
@@ -604,14 +597,10 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const orderIds = row.orderId || this.ids;
this.$modal.confirm('是否确认删除调拨单主编号为"' + orderIds + '"的数据项?').then(() => {
this.loading = true;
return delTransferOrder(orderIds);
}).then(() => {
this.loading = false;
this.loading = true;
delTransferOrder(orderIds).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});

View File

@@ -0,0 +1,99 @@
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 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.WmsInspectionApplicationVo;
import com.klp.domain.bo.WmsInspectionApplicationBo;
import com.klp.service.IWmsInspectionApplicationService;
import com.klp.common.core.page.TableDataInfo;
/**
* 检化验申请单
*
* @author klp
* @date 2026-07-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wms/inspectionApplication")
public class WmsInspectionApplicationController extends BaseController {
private final IWmsInspectionApplicationService iWmsInspectionApplicationService;
/**
* 查询检化验申请单列表
*/
@GetMapping("/list")
public TableDataInfo<WmsInspectionApplicationVo> list(WmsInspectionApplicationBo bo, PageQuery pageQuery) {
return iWmsInspectionApplicationService.queryPageList(bo, pageQuery);
}
/**
* 导出检化验申请单列表
*/
@Log(title = "检化验申请单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsInspectionApplicationBo bo, HttpServletResponse response) {
List<WmsInspectionApplicationVo> list = iWmsInspectionApplicationService.queryList(bo);
ExcelUtil.exportExcel(list, "检化验申请单", WmsInspectionApplicationVo.class, response);
}
/**
* 获取检化验申请单详细信息
*
* @param applicationId 主键
*/
@GetMapping("/{applicationId}")
public R<WmsInspectionApplicationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long applicationId) {
return R.ok(iWmsInspectionApplicationService.queryById(applicationId));
}
/**
* 新增检化验申请单
*/
@Log(title = "检化验申请单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsInspectionApplicationBo bo) {
return toAjax(iWmsInspectionApplicationService.insertByBo(bo));
}
/**
* 修改检化验申请单
*/
@Log(title = "检化验申请单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsInspectionApplicationBo bo) {
return toAjax(iWmsInspectionApplicationService.updateByBo(bo));
}
/**
* 删除检化验申请单
*
* @param applicationIds 主键串
*/
@Log(title = "检化验申请单", businessType = BusinessType.DELETE)
@DeleteMapping("/{applicationIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] applicationIds) {
return toAjax(iWmsInspectionApplicationService.deleteWithValidByIds(Arrays.asList(applicationIds), true));
}
}

View File

@@ -0,0 +1,135 @@
package com.klp.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 检化验申请单对象 wms_inspection_application
*
* @author klp
* @date 2026-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_inspection_application")
public class WmsInspectionApplication extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 申请单主键
*/
@TableId(value = "application_id")
private Long applicationId;
/**
* 申请单编号(如 LAB-20260708-0001
*/
private String applicationNo;
/**
* 申请标题
*/
private String applicationTitle;
/**
* 产线1#产线、2#产线)
*/
private String productionLine;
/**
* 实验类型字典lab_experiment_typephysical=物理检验 chemical=化学检验)
*/
private String experimentType;
/**
* 样品名称
*/
private String sampleName;
/**
* 样品批号
*/
private String sampleBatchNo;
/**
* 样品来源(如:来料、过程样、成品样)
*/
private String sampleSource;
/**
* 样品数量
*/
private Long sampleQuantity;
/**
* 检验目的/用途说明
*/
private String testPurpose;
/**
* 要求完成日期
*/
private Date requiredDate;
/**
* 流程状态字典lab_application_status1=草稿 2=待审批 3=已通过 4=已驳回 5=实验中 6=已完成
*/
private Integer flowStatus;
/**
* 提交送审时间
*/
private Date submitTime;
/**
* 审批人
*/
private String approveBy;
/**
* 审批时间
*/
private Date approveTime;
/**
* 审批意见
*/
private String approveOpinion;
/**
* 驳回原因
*/
private String rejectReason;
/**
* 主表id
*/
private Long mainId;
/**
* 记录此次操作结果ids
*/
private String detailIds;
/**
* 实验操作人
*/
private String experimentOperator;
/**
* 实验开始时间
*/
private Date experimentStartTime;
/**
* 实验结束时间
*/
private Date experimentEndTime;
/**
* 实验结果汇总/结论
*/
private String resultSummary;
/**
* 结果填报人(录入台账的人)
*/
private String resultFiller;
/**
* 结果填报时间
*/
private Date resultFillTime;
/**
* 删除标志0=正常 2=删除)
*/
@TableLogic
private Integer delFlag;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,153 @@
package com.klp.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 检化验申请单业务对象 wms_inspection_application
*
* @author klp
* @date 2026-07-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WmsInspectionApplicationBo extends BaseEntity {
/**
* 申请单主键
*/
private Long applicationId;
/**
* 申请单编号(如 LAB-20260708-0001
*/
private String applicationNo;
/**
* 申请标题
*/
private String applicationTitle;
/**
* 产线1#产线、2#产线)
*/
private String productionLine;
/**
* 实验类型字典lab_experiment_typephysical=物理检验 chemical=化学检验)
*/
private String experimentType;
/**
* 样品名称
*/
private String sampleName;
/**
* 样品批号
*/
private String sampleBatchNo;
/**
* 样品来源(如:来料、过程样、成品样)
*/
private String sampleSource;
/**
* 样品数量
*/
private Long sampleQuantity;
/**
* 检验目的/用途说明
*/
private String testPurpose;
/**
* 要求完成日期
*/
private Date requiredDate;
/**
* 流程状态字典lab_application_status1=草稿 2=待审批 3=已通过 4=已驳回 5=实验中 6=已完成
*/
private Integer flowStatus;
/**
* 提交送审时间
*/
private Date submitTime;
/**
* 审批人
*/
private String approveBy;
/**
* 审批时间
*/
private Date approveTime;
/**
* 审批意见
*/
private String approveOpinion;
/**
* 驳回原因
*/
private String rejectReason;
/**
* 主表id
*/
private Long mainId;
/**
* 记录此次操作结果ids
*/
private String detailIds;
/**
* 实验操作人
*/
private String experimentOperator;
/**
* 实验开始时间
*/
private Date experimentStartTime;
/**
* 实验结束时间
*/
private Date experimentEndTime;
/**
* 实验结果汇总/结论
*/
private String resultSummary;
/**
* 结果填报人(录入台账的人)
*/
private String resultFiller;
/**
* 结果填报时间
*/
private Date resultFillTime;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,187 @@
package com.klp.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
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_inspection_application
*
* @author klp
* @date 2026-07-08
*/
@Data
@ExcelIgnoreUnannotated
public class WmsInspectionApplicationVo {
private static final long serialVersionUID = 1L;
/**
* 申请单主键
*/
@ExcelProperty(value = "申请单主键")
private Long applicationId;
/**
* 申请单编号(如 LAB-20260708-0001
*/
@ExcelProperty(value = "申请单编号", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=,L=AB-20260708-0001")
private String applicationNo;
/**
* 申请标题
*/
@ExcelProperty(value = "申请标题")
private String applicationTitle;
/**
* 产线1#产线、2#产线)
*/
@ExcelProperty(value = "产线", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=1#产线、2#产线")
private String productionLine;
/**
* 实验类型字典lab_experiment_typephysical=物理检验 chemical=化学检验)
*/
@ExcelProperty(value = "实验类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典lab_experiment_typephysical=物理检验,c=hemical=化学检验")
private String experimentType;
/**
* 样品名称
*/
@ExcelProperty(value = "样品名称")
private String sampleName;
/**
* 样品批号
*/
@ExcelProperty(value = "样品批号")
private String sampleBatchNo;
/**
* 样品来源(如:来料、过程样、成品样)
*/
@ExcelProperty(value = "样品来源", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=:来料、过程样、成品样")
private String sampleSource;
/**
* 样品数量
*/
@ExcelProperty(value = "样品数量")
private Long sampleQuantity;
/**
* 检验目的/用途说明
*/
@ExcelProperty(value = "检验目的/用途说明")
private String testPurpose;
/**
* 要求完成日期
*/
@ExcelProperty(value = "要求完成日期")
private Date requiredDate;
/**
* 流程状态字典lab_application_status1=草稿 2=待审批 3=已通过 4=已驳回 5=实验中 6=已完成
*/
@ExcelProperty(value = "流程状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典lab_application_status")
private Integer flowStatus;
/**
* 提交送审时间
*/
@ExcelProperty(value = "提交送审时间")
private Date submitTime;
/**
* 审批人
*/
@ExcelProperty(value = "审批人")
private String approveBy;
/**
* 审批时间
*/
@ExcelProperty(value = "审批时间")
private Date approveTime;
/**
* 审批意见
*/
@ExcelProperty(value = "审批意见")
private String approveOpinion;
/**
* 驳回原因
*/
@ExcelProperty(value = "驳回原因")
private String rejectReason;
/**
* 主表id
*/
@ExcelProperty(value = "主表id")
private Long mainId;
/**
* 记录此次操作结果ids
*/
@ExcelProperty(value = "记录此次操作结果ids")
private String detailIds;
/**
* 实验操作人
*/
@ExcelProperty(value = "实验操作人")
private String experimentOperator;
/**
* 实验开始时间
*/
@ExcelProperty(value = "实验开始时间")
private Date experimentStartTime;
/**
* 实验结束时间
*/
@ExcelProperty(value = "实验结束时间")
private Date experimentEndTime;
/**
* 实验结果汇总/结论
*/
@ExcelProperty(value = "实验结果汇总/结论")
private String resultSummary;
/**
* 结果填报人(录入台账的人)
*/
@ExcelProperty(value = "结果填报人", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "录=入台账的人")
private String resultFiller;
/**
* 结果填报时间
*/
@ExcelProperty(value = "结果填报时间")
private Date resultFillTime;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -1,6 +1,7 @@
package com.klp.domain.vo;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@@ -73,5 +74,9 @@ public class WmsInspectionMainVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 检验项目明细列表
*/
private List<WmsInspectionDetailVo> detailList;
}

View File

@@ -0,0 +1,15 @@
package com.klp.mapper;
import com.klp.domain.WmsInspectionApplication;
import com.klp.domain.vo.WmsInspectionApplicationVo;
import com.klp.common.core.mapper.BaseMapperPlus;
/**
* 检化验申请单Mapper接口
*
* @author klp
* @date 2026-07-08
*/
public interface WmsInspectionApplicationMapper extends BaseMapperPlus<WmsInspectionApplicationMapper, WmsInspectionApplication, WmsInspectionApplicationVo> {
}

View File

@@ -0,0 +1,49 @@
package com.klp.service;
import com.klp.domain.WmsInspectionApplication;
import com.klp.domain.vo.WmsInspectionApplicationVo;
import com.klp.domain.bo.WmsInspectionApplicationBo;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 检化验申请单Service接口
*
* @author klp
* @date 2026-07-08
*/
public interface IWmsInspectionApplicationService {
/**
* 查询检化验申请单
*/
WmsInspectionApplicationVo queryById(Long applicationId);
/**
* 查询检化验申请单列表
*/
TableDataInfo<WmsInspectionApplicationVo> queryPageList(WmsInspectionApplicationBo bo, PageQuery pageQuery);
/**
* 查询检化验申请单列表
*/
List<WmsInspectionApplicationVo> queryList(WmsInspectionApplicationBo bo);
/**
* 新增检化验申请单
*/
Boolean insertByBo(WmsInspectionApplicationBo bo);
/**
* 修改检化验申请单
*/
Boolean updateByBo(WmsInspectionApplicationBo bo);
/**
* 校验并批量删除检化验申请单信息
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -0,0 +1,132 @@
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.WmsInspectionApplicationBo;
import com.klp.domain.vo.WmsInspectionApplicationVo;
import com.klp.domain.WmsInspectionApplication;
import com.klp.mapper.WmsInspectionApplicationMapper;
import com.klp.service.IWmsInspectionApplicationService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 检化验申请单Service业务层处理
*
* @author klp
* @date 2026-07-08
*/
@RequiredArgsConstructor
@Service
public class WmsInspectionApplicationServiceImpl implements IWmsInspectionApplicationService {
private final WmsInspectionApplicationMapper baseMapper;
/**
* 查询检化验申请单
*/
@Override
public WmsInspectionApplicationVo queryById(Long applicationId){
return baseMapper.selectVoById(applicationId);
}
/**
* 查询检化验申请单列表
*/
@Override
public TableDataInfo<WmsInspectionApplicationVo> queryPageList(WmsInspectionApplicationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsInspectionApplication> lqw = buildQueryWrapper(bo);
Page<WmsInspectionApplicationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询检化验申请单列表
*/
@Override
public List<WmsInspectionApplicationVo> queryList(WmsInspectionApplicationBo bo) {
LambdaQueryWrapper<WmsInspectionApplication> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsInspectionApplication> buildQueryWrapper(WmsInspectionApplicationBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsInspectionApplication> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getApplicationNo()), WmsInspectionApplication::getApplicationNo, bo.getApplicationNo());
lqw.eq(StringUtils.isNotBlank(bo.getApplicationTitle()), WmsInspectionApplication::getApplicationTitle, bo.getApplicationTitle());
lqw.eq(StringUtils.isNotBlank(bo.getProductionLine()), WmsInspectionApplication::getProductionLine, bo.getProductionLine());
lqw.eq(StringUtils.isNotBlank(bo.getExperimentType()), WmsInspectionApplication::getExperimentType, bo.getExperimentType());
lqw.like(StringUtils.isNotBlank(bo.getSampleName()), WmsInspectionApplication::getSampleName, bo.getSampleName());
lqw.eq(StringUtils.isNotBlank(bo.getSampleBatchNo()), WmsInspectionApplication::getSampleBatchNo, bo.getSampleBatchNo());
lqw.eq(StringUtils.isNotBlank(bo.getSampleSource()), WmsInspectionApplication::getSampleSource, bo.getSampleSource());
lqw.eq(bo.getSampleQuantity() != null, WmsInspectionApplication::getSampleQuantity, bo.getSampleQuantity());
lqw.eq(StringUtils.isNotBlank(bo.getTestPurpose()), WmsInspectionApplication::getTestPurpose, bo.getTestPurpose());
lqw.eq(bo.getRequiredDate() != null, WmsInspectionApplication::getRequiredDate, bo.getRequiredDate());
lqw.eq(bo.getFlowStatus() != null, WmsInspectionApplication::getFlowStatus, bo.getFlowStatus());
lqw.eq(bo.getSubmitTime() != null, WmsInspectionApplication::getSubmitTime, bo.getSubmitTime());
lqw.eq(StringUtils.isNotBlank(bo.getApproveBy()), WmsInspectionApplication::getApproveBy, bo.getApproveBy());
lqw.eq(bo.getApproveTime() != null, WmsInspectionApplication::getApproveTime, bo.getApproveTime());
lqw.eq(StringUtils.isNotBlank(bo.getApproveOpinion()), WmsInspectionApplication::getApproveOpinion, bo.getApproveOpinion());
lqw.eq(StringUtils.isNotBlank(bo.getRejectReason()), WmsInspectionApplication::getRejectReason, bo.getRejectReason());
lqw.eq(bo.getMainId() != null, WmsInspectionApplication::getMainId, bo.getMainId());
lqw.eq(StringUtils.isNotBlank(bo.getDetailIds()), WmsInspectionApplication::getDetailIds, bo.getDetailIds());
lqw.eq(StringUtils.isNotBlank(bo.getExperimentOperator()), WmsInspectionApplication::getExperimentOperator, bo.getExperimentOperator());
lqw.eq(bo.getExperimentStartTime() != null, WmsInspectionApplication::getExperimentStartTime, bo.getExperimentStartTime());
lqw.eq(bo.getExperimentEndTime() != null, WmsInspectionApplication::getExperimentEndTime, bo.getExperimentEndTime());
lqw.eq(StringUtils.isNotBlank(bo.getResultSummary()), WmsInspectionApplication::getResultSummary, bo.getResultSummary());
lqw.eq(StringUtils.isNotBlank(bo.getResultFiller()), WmsInspectionApplication::getResultFiller, bo.getResultFiller());
lqw.eq(bo.getResultFillTime() != null, WmsInspectionApplication::getResultFillTime, bo.getResultFillTime());
return lqw;
}
/**
* 新增检化验申请单
*/
@Override
public Boolean insertByBo(WmsInspectionApplicationBo bo) {
WmsInspectionApplication add = BeanUtil.toBean(bo, WmsInspectionApplication.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setApplicationId(add.getApplicationId());
}
return flag;
}
/**
* 修改检化验申请单
*/
@Override
public Boolean updateByBo(WmsInspectionApplicationBo bo) {
WmsInspectionApplication update = BeanUtil.toBean(bo, WmsInspectionApplication.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsInspectionApplication entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除检化验申请单
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}

View File

@@ -1,6 +1,7 @@
package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.klp.common.core.page.TableDataInfo;
import com.klp.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -11,13 +12,18 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsInspectionMainBo;
import com.klp.domain.vo.WmsInspectionMainVo;
import com.klp.domain.vo.WmsInspectionDetailVo;
import com.klp.domain.WmsInspectionMain;
import com.klp.domain.WmsInspectionDetail;
import com.klp.mapper.WmsInspectionMainMapper;
import com.klp.mapper.WmsInspectionDetailMapper;
import com.klp.service.IWmsInspectionMainService;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 检验主Service业务层处理
@@ -30,6 +36,7 @@ import java.util.Collection;
public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
private final WmsInspectionMainMapper baseMapper;
private final WmsInspectionDetailMapper detailMapper;
/**
* 查询检验主
@@ -46,6 +53,7 @@ public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
public TableDataInfo<WmsInspectionMainVo> queryPageList(WmsInspectionMainBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsInspectionMain> lqw = buildQueryWrapper(bo);
Page<WmsInspectionMainVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
fillDetailList(result.getRecords());
return TableDataInfo.build(result);
}
@@ -55,7 +63,9 @@ public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
@Override
public List<WmsInspectionMainVo> queryList(WmsInspectionMainBo bo) {
LambdaQueryWrapper<WmsInspectionMain> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
List<WmsInspectionMainVo> list = baseMapper.selectVoList(lqw);
fillDetailList(list);
return list;
}
private LambdaQueryWrapper<WmsInspectionMain> buildQueryWrapper(WmsInspectionMainBo bo) {
@@ -72,6 +82,21 @@ public class WmsInspectionMainServiceImpl implements IWmsInspectionMainService {
return lqw;
}
private void fillDetailList(List<WmsInspectionMainVo> voList) {
if (CollUtil.isEmpty(voList)) {
return;
}
List<Long> mainIds = voList.stream().map(WmsInspectionMainVo::getMainId).collect(Collectors.toList());
List<WmsInspectionDetailVo> allDetails = detailMapper.selectVoList(
new LambdaQueryWrapper<WmsInspectionDetail>().in(WmsInspectionDetail::getMainId, mainIds)
);
Map<Long, List<WmsInspectionDetailVo>> detailMap = allDetails.stream()
.collect(Collectors.groupingBy(WmsInspectionDetailVo::getMainId));
for (WmsInspectionMainVo vo : voList) {
vo.setDetailList(detailMap.getOrDefault(vo.getMainId(), Collections.emptyList()));
}
}
/**
* 新增检验主
*/

View File

@@ -0,0 +1,42 @@
<?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.WmsInspectionApplicationMapper">
<resultMap type="com.klp.domain.WmsInspectionApplication" id="WmsInspectionApplicationResult">
<result property="applicationId" column="application_id"/>
<result property="applicationNo" column="application_no"/>
<result property="applicationTitle" column="application_title"/>
<result property="productionLine" column="production_line"/>
<result property="experimentType" column="experiment_type"/>
<result property="sampleName" column="sample_name"/>
<result property="sampleBatchNo" column="sample_batch_no"/>
<result property="sampleSource" column="sample_source"/>
<result property="sampleQuantity" column="sample_quantity"/>
<result property="testPurpose" column="test_purpose"/>
<result property="requiredDate" column="required_date"/>
<result property="flowStatus" column="flow_status"/>
<result property="submitTime" column="submit_time"/>
<result property="approveBy" column="approve_by"/>
<result property="approveTime" column="approve_time"/>
<result property="approveOpinion" column="approve_opinion"/>
<result property="rejectReason" column="reject_reason"/>
<result property="mainId" column="main_id"/>
<result property="detailIds" column="detail_ids"/>
<result property="experimentOperator" column="experiment_operator"/>
<result property="experimentStartTime" column="experiment_start_time"/>
<result property="experimentEndTime" column="experiment_end_time"/>
<result property="resultSummary" column="result_summary"/>
<result property="resultFiller" column="result_filler"/>
<result property="resultFillTime" column="result_fill_time"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
</mapper>