diff --git a/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsProdQcPlan.java b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsProdQcPlan.java new file mode 100644 index 0000000..831e78b --- /dev/null +++ b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsProdQcPlan.java @@ -0,0 +1,96 @@ +package com.foreverwin.iep.qms.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 产品检验计划表 + * + * @author mom code generator + * @date 2023-06-06 16:41:41 + */ +@Data +@TableName("qms_prod_qc_plan") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "产品检验计划表") +public class QmsProdQcPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value="主键") + private String sid; + + /** + * 生产点 + */ + @ApiModelProperty(value="生产点") + private String site; + + /** + * 生产产品 + */ + @ApiModelProperty(value="生产产品") + private String item; + + /** + * 工作中心 + */ + @ApiModelProperty(value="工作中心") + private String workCenter; + + /** + * 作业站 + */ + @ApiModelProperty(value="作业站") + private String operation; + + /** + * 资源 + */ + @ApiModelProperty(value="资源") + private String resrce; + + /** + * 检验计划 + */ + @ApiModelProperty(value="检验计划") + private String qcPlan; + + /** + * 版本 + */ + @ApiModelProperty(value="版本") + private String qcPlanRevision; + + /** + * 建立人 + */ + @ApiModelProperty(value="建立人") + private String createdUser; + + /** + * 建立日期 + */ + @ApiModelProperty(value="建立日期") + private LocalDateTime createdDateTime; + + /** + * IQC 物料 + */ + @ApiModelProperty(value="IQC 物料") + private String materialNo; + +} diff --git a/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlan.java b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlan.java new file mode 100644 index 0000000..f416dec --- /dev/null +++ b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlan.java @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2018-2025, mom All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the foreverwin.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: mom + */ + +package com.foreverwin.iep.qms.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.foreverwin.iep.common.utils.HandleBoProcessor; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 检验计划 + * + * @author mom code generator + * @date 2023-06-06 16:43:15 + */ +@Data +@TableName("qms_qc_plan") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "检验计划") +public class QmsQcPlan extends Model { + + private static final long serialVersionUID = 1L; + + public static final String KW_QMS_QC_PLAN_BO = "QCPlanBO"; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value="主键") + private String handle; + + /** + * 生产点 + */ + @ApiModelProperty(value="生产点") + private String site; + + /** + * 检验计划 + */ + @ApiModelProperty(value="检验计划") + private String qcPlan; + + /** + * 版本 + */ + @ApiModelProperty(value="版本") + private String revision; + + /** + * 当前版本 + */ + @ApiModelProperty(value="当前版本") + private String currentRevision; + + /** + * 检验计划说明 + */ + @ApiModelProperty(value="检验计划说明") + private String description; + + /** + * 检验模式 + */ + @ApiModelProperty(value="检验模式") + private String qcMode; + + /** + * 检验类型 + */ + @ApiModelProperty(value="检验类型") + private String qcType; + + /** + * 检验频率编号 + */ + @ApiModelProperty(value="检验频率编号") + private String inspecNo; + + /** + * 检验人员群组 + */ + @ApiModelProperty(value="检验人员群组") + private String userGroup; + + /** + * 建立人 + */ + @ApiModelProperty(value="建立人") + private String createdUser; + + /** + * 建立日期 + */ + @ApiModelProperty(value="建立日期") + private LocalDateTime createdDateTime; + + /** + * 镱钛SIP汇入档案组名 + */ + @ApiModelProperty(value="镱钛SIP汇入档案组名") + private String sipGroupName; + + /** + * 镱钛SIP汇入档案文件名 + */ + @ApiModelProperty(value="镱钛SIP汇入档案文件名") + private String sipFileName; + + /** + * 抛送至SPC + */ + @ApiModelProperty(value="抛送至SPC") + private String toSpc; + + /** + * 修改时间 + */ + @ApiModelProperty(value="修改时间") + private String modifiedUser; + + /** + * 修改人员 + */ + @ApiModelProperty(value="修改人员") + private LocalDateTime modifiedDateTime; + + /** + * 检验分类 + */ + @ApiModelProperty(value="检验分类") + private String qcClass; + + /** + * 卡控出站 + */ + @ApiModelProperty(value="卡控出站") + private String checkOutControl; + + @TableField(exist = false) + private List qcPlanDetailList; + + @TableField(exist = false) + private List workCenterList; + + @TableField(exist = false) + private List resourceList; + + @TableField(exist = false) + private List itemList; + + public static String genHandle( String site, String qcPlan, String revision ) { + return HandleBoProcessor.genHandle(KW_QMS_QC_PLAN_BO, site, qcPlan, revision); + } +} diff --git a/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetail.java b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetail.java index f9f49a1..5c7e8e4 100644 --- a/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetail.java +++ b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetail.java @@ -1,15 +1,19 @@ package com.foreverwin.iep.qms.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.foreverwin.iep.common.utils.HandleBoProcessor; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; /** * 检验计划明细表 @@ -24,7 +28,7 @@ import java.math.BigDecimal; public class QmsQcPlanDetail extends Model { private static final long serialVersionUID = 1L; - public static final String KW_QMS_QC_PLAN_DETAIL_BO = "QmsQcPlanDetailBO"; + public static final String KW_QMS_QC_PLAN_DETAIL_BO = "QcPlanDetailBO"; /** @@ -99,5 +103,10 @@ public class QmsQcPlanDetail extends Model { @ApiModelProperty(value = "QC工艺路线") private String qcRoutingBo; + @TableField(exist = false) + private List qcPlanDetailFactorList = new ArrayList<>(); + public static String genHandle( String qcPlanBo, String seq ) { + return HandleBoProcessor.genHandle(KW_QMS_QC_PLAN_DETAIL_BO, qcPlanBo, seq); + } } diff --git a/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetailFactor.java b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetailFactor.java new file mode 100644 index 0000000..fd84657 --- /dev/null +++ b/qms-api/src/main/java/com/foreverwin/iep/qms/entity/QmsQcPlanDetailFactor.java @@ -0,0 +1,48 @@ +package com.foreverwin.iep.qms.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 检验计划明细-要因表 + * + * @author mom code generator + * @date 2023-06-06 16:45:35 + */ +@Data +@TableName("qms_qc_plan_detail_factor") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "检验计划明细-要因表") +public class QmsQcPlanDetailFactor extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value="主键") + private String sid; + + /** + * 检验计划明细表Handle + */ + @ApiModelProperty(value="检验计划明细表Handle") + private String qcPlanDetailBo; + + /** + * 要因主表Handle + */ + @ApiModelProperty(value="要因主表Handle") + private String factorBo; + +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/controller/QmsProdQcPlanController.java b/qms-core/src/main/java/com/foreverwin/iep/qms/controller/QmsProdQcPlanController.java new file mode 100644 index 0000000..27d9ad8 --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/controller/QmsProdQcPlanController.java @@ -0,0 +1,107 @@ +package com.foreverwin.iep.qms.controller; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.foreverwin.mom.common.core.util.R; +import com.foreverwin.mom.common.log.annotation.SysLog; +import com.foreverwin.iep.qms.entity.QmsProdQcPlan; +import com.foreverwin.iep.qms.service.QmsProdQcPlanService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.foreverwin.mom.common.excel.annotation.ResponseExcel; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 产品检验计划表 + * + * @author mom code generator + * @date 2023-06-06 16:41:41 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/prod-qc-plan" ) +@Api(value = "prod-qc-plan", tags = "产品检验计划表管理") +public class QmsProdQcPlanController { + + private final QmsProdQcPlanService qmsProdQcPlanService; + + /** + * 分页查询 + * @param page 分页对象 + * @param qmsProdQcPlan 产品检验计划表 + * @return + */ + @ApiOperation(value = "分页查询", notes = "分页查询") + @GetMapping("/page" ) + public R getQmsProdQcPlanPage(Page page, QmsProdQcPlan qmsProdQcPlan) { + return R.ok(qmsProdQcPlanService.page(page, Wrappers.query(qmsProdQcPlan))); + } + + + /** + * 通过id查询产品检验计划表 + * @param sid id + * @return R + */ + @ApiOperation(value = "通过id查询", notes = "通过id查询") + @GetMapping("/{sid}" ) + public R getById(@PathVariable("sid" ) String sid) { + return R.ok(qmsProdQcPlanService.getById(sid)); + } + + /** + * 新增产品检验计划表 + * @param qmsProdQcPlan 产品检验计划表 + * @return R + */ + @ApiOperation(value = "新增产品检验计划表", notes = "新增产品检验计划表") + @SysLog("新增产品检验计划表" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('qms_qmsprodqcplan_add')" ) + public R save(@RequestBody QmsProdQcPlan qmsProdQcPlan) { + return R.ok(qmsProdQcPlanService.save(qmsProdQcPlan)); + } + + /** + * 修改产品检验计划表 + * @param qmsProdQcPlan 产品检验计划表 + * @return R + */ + @ApiOperation(value = "修改产品检验计划表", notes = "修改产品检验计划表") + @SysLog("修改产品检验计划表" ) + @PutMapping + @PreAuthorize("@pms.hasPermission('qms_qmsprodqcplan_edit')" ) + public R updateById(@RequestBody QmsProdQcPlan qmsProdQcPlan) { + return R.ok(qmsProdQcPlanService.updateById(qmsProdQcPlan)); + } + + /** + * 通过id删除产品检验计划表 + * @param sid id + * @return R + */ + @ApiOperation(value = "通过id删除产品检验计划表", notes = "通过id删除产品检验计划表") + @SysLog("通过id删除产品检验计划表" ) + @DeleteMapping("/{sid}" ) + @PreAuthorize("@pms.hasPermission('qms_qmsprodqcplan_del')" ) + public R removeById(@PathVariable String sid) { + return R.ok(qmsProdQcPlanService.removeById(sid)); + } + + + /** + * 导出excel 表格 + * @param qmsProdQcPlan 查询条件 + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('qms_qmsprodqcplan_export')" ) + public List export(QmsProdQcPlan qmsProdQcPlan) { + return qmsProdQcPlanService.list(Wrappers.query(qmsProdQcPlan)); + } +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/controller/QmsQcPlanController.java b/qms-core/src/main/java/com/foreverwin/iep/qms/controller/QmsQcPlanController.java new file mode 100644 index 0000000..b7cd228 --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/controller/QmsQcPlanController.java @@ -0,0 +1,95 @@ +package com.foreverwin.iep.qms.controller; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.foreverwin.mom.common.core.util.R; +import com.foreverwin.mom.common.log.annotation.SysLog; +import com.foreverwin.iep.qms.entity.QmsQcPlan; +import com.foreverwin.iep.qms.service.QmsQcPlanService; +import org.springframework.security.access.prepost.PreAuthorize; +import com.foreverwin.mom.common.excel.annotation.ResponseExcel; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 检验计划 + * + * @author mom code generator + * @date 2023-06-06 16:43:15 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/qc-plan" ) +@Api(value = "qc-plan", tags = "检验计划管理") +public class QmsQcPlanController { + + private final QmsQcPlanService qmsQcPlanService; + + /** + * 分页查询 + * @param page 分页对象 + * @param qmsQcPlan 检验计划 + * @return + */ + @ApiOperation(value = "分页查询", notes = "分页查询") + @GetMapping("/page" ) + public R getQmsQcPlanPage(Page page, QmsQcPlan qmsQcPlan) { + return R.ok(qmsQcPlanService.page(page, Wrappers.query(qmsQcPlan))); + } + + + /** + * 通过id查询检验计划 + * @param handle id + * @return R + */ + @ApiOperation(value = "通过id查询", notes = "通过id查询") + @GetMapping("/{handle}" ) + public R getById(@PathVariable("handle" ) String handle) { + return R.ok(qmsQcPlanService.getById(handle)); + } + + /** + * 新增检验计划 + * @param qmsQcPlan 检验计划 + * @return R + */ + @ApiOperation(value = "新增检验计划", notes = "新增检验计划") + @SysLog("新增检验计划" ) + @PostMapping + @PreAuthorize("@pms.hasPermission('qms_insp_plan_add')" ) + public R save(@RequestBody QmsQcPlan qmsQcPlan) { + return R.ok(qmsQcPlanService.save(qmsQcPlan)); + } + + /** + * 修改检验计划 + * @param qmsQcPlan 检验计划 + * @return R + */ + @ApiOperation(value = "修改检验计划", notes = "修改检验计划") + @SysLog("修改检验计划" ) + @PutMapping + @PreAuthorize("@pms.hasPermission('qms_insp_plan_edit')" ) + public R updateById(@RequestBody QmsQcPlan qmsQcPlan) { + return R.ok(qmsQcPlanService.updateById(qmsQcPlan)); + } + + /** + * 通过id删除检验计划 + * @param handle id + * @return R + */ + @ApiOperation(value = "通过id删除检验计划", notes = "通过id删除检验计划") + @SysLog("通过id删除检验计划" ) + @DeleteMapping("/{handle}" ) + @PreAuthorize("@pms.hasPermission('qms_insp_plan_del')" ) + public R removeById(@PathVariable String handle) { + return R.ok(qmsQcPlanService.removeById(handle)); + } + +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsInspecFreqService.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsInspecFreqService.java index 8832b65..9dcc654 100644 --- a/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsInspecFreqService.java +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsInspecFreqService.java @@ -1,7 +1,6 @@ package com.foreverwin.iep.qms.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.foreverwin.iep.qms.domain.InspecFreq; import com.foreverwin.iep.qms.entity.QmsInspecFreq; /** @@ -17,4 +16,6 @@ public interface QmsInspecFreqService extends IService { void insertFreq(QmsInspecFreq qmsInspecFreq); void deleteFreq(String sid); + + List findInspec( String site, String inspecNo ); } diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsProdQcPlanService.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsProdQcPlanService.java new file mode 100644 index 0000000..152fb52 --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsProdQcPlanService.java @@ -0,0 +1,14 @@ +package com.foreverwin.iep.qms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.iep.qms.entity.QmsProdQcPlan; + +/** + * 产品检验计划表 + * + * @author mom code generator + * @date 2023-06-06 16:41:41 + */ +public interface QmsProdQcPlanService extends IService { + +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsQcPlanDetailFactorService.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsQcPlanDetailFactorService.java new file mode 100644 index 0000000..7e34465 --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsQcPlanDetailFactorService.java @@ -0,0 +1,14 @@ +package com.foreverwin.iep.qms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.iep.qms.entity.QmsQcPlanDetailFactor; + +/** + * 检验计划明细-要因表 + * + * @author mom code generator + * @date 2023-06-06 16:45:35 + */ +public interface QmsQcPlanDetailFactorService extends IService { + +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsQcPlanService.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsQcPlanService.java new file mode 100644 index 0000000..a130767 --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/QmsQcPlanService.java @@ -0,0 +1,15 @@ +package com.foreverwin.iep.qms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.iep.qms.entity.QmsQcPlan; + +/** + * 检验计划 + * + * @author mom code generator + * @date 2023-06-06 16:43:15 + */ +public interface QmsQcPlanService extends IService { + + void addQCPlan(QmsQcPlan qmsQcPlan); +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsInspecFreqServiceImpl.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsInspecFreqServiceImpl.java index 89fbb42..8ef81b9 100644 --- a/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsInspecFreqServiceImpl.java +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsInspecFreqServiceImpl.java @@ -2,6 +2,8 @@ package com.foreverwin.iep.qms.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.foreverwin.iep.common.utils.SidUtils; import com.foreverwin.iep.qms.domain.FreqItem; @@ -20,6 +22,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.List; + /** * 检验频率表 * @@ -83,4 +87,12 @@ public class QmsInspecFreqServiceImpl extends ServiceImpl findInspec( String site, String inspecNo ) { + return super.list(Wrappers.lambdaQuery() + .eq(QmsInspecFreq::getSite, site) + .eq(StrUtil.isNotBlank(inspecNo), QmsInspecFreq::getInspecNo, inspecNo) + .orderByAsc(QmsInspecFreq::getInspecNo)); + } } diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsProdQcPlanServiceImpl.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsProdQcPlanServiceImpl.java new file mode 100644 index 0000000..06c9bbb --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsProdQcPlanServiceImpl.java @@ -0,0 +1,18 @@ +package com.foreverwin.iep.qms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.foreverwin.iep.qms.entity.QmsProdQcPlan; +import com.foreverwin.iep.qms.mapper.QmsProdQcPlanMapper; +import com.foreverwin.iep.qms.service.QmsProdQcPlanService; +import org.springframework.stereotype.Service; + +/** + * 产品检验计划表 + * + * @author mom code generator + * @date 2023-06-06 16:41:41 + */ +@Service +public class QmsProdQcPlanServiceImpl extends ServiceImpl implements QmsProdQcPlanService { + +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsQcPlanDetailFactorServiceImpl.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsQcPlanDetailFactorServiceImpl.java new file mode 100644 index 0000000..754becc --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsQcPlanDetailFactorServiceImpl.java @@ -0,0 +1,18 @@ +package com.foreverwin.iep.qms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.foreverwin.iep.qms.entity.QmsQcPlanDetailFactor; +import com.foreverwin.iep.qms.mapper.QmsQcPlanDetailFactorMapper; +import com.foreverwin.iep.qms.service.QmsQcPlanDetailFactorService; +import org.springframework.stereotype.Service; + +/** + * 检验计划明细-要因表 + * + * @author mom code generator + * @date 2023-06-06 16:45:35 + */ +@Service +public class QmsQcPlanDetailFactorServiceImpl extends ServiceImpl implements QmsQcPlanDetailFactorService { + +} diff --git a/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsQcPlanServiceImpl.java b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsQcPlanServiceImpl.java new file mode 100644 index 0000000..2360baa --- /dev/null +++ b/qms-core/src/main/java/com/foreverwin/iep/qms/service/impl/QmsQcPlanServiceImpl.java @@ -0,0 +1,124 @@ +package com.foreverwin.iep.qms.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.foreverwin.iep.common.utils.SidUtils; +import com.foreverwin.iep.qms.entity.QmsProdQcPlan; +import com.foreverwin.iep.qms.entity.QmsQcPlan; +import com.foreverwin.iep.qms.entity.QmsQcPlanDetail; +import com.foreverwin.iep.qms.entity.QmsQcPlanDetailFactor; +import com.foreverwin.iep.qms.mapper.QmsQcPlanMapper; +import com.foreverwin.iep.qms.service.*; +import com.foreverwin.mom.common.core.exception.BusinessException; +import com.foreverwin.mom.common.core.util.I18nUtil; +import com.foreverwin.mom.common.data.tenant.TenantContextHolder; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 检验计划 + * + * @author mom code generator + * @date 2023-06-06 16:43:15 + */ +@Service +@AllArgsConstructor +public class QmsQcPlanServiceImpl extends ServiceImpl implements QmsQcPlanService { + + private final QmsQcPlanDetailService qmsQcPlanDetailService; + private final QmsQcPlanDetailFactorService qmsQcPlanDetailFactorService; + private final QmsInspecFreqService qmsInspecFreqService; + private final QmsProdQcPlanService qmsProdQcPlanService; + + @Override + @Transactional + public void addQCPlan( QmsQcPlan qcPlan ) { + + String site = TenantContextHolder.getTenantId(); + String qcPlanBo = QmsQcPlan.genHandle(site, qcPlan.getQcPlan(), qcPlan.getRevision()); + qcPlan.setHandle(qcPlanBo); + + if(super.getById(qcPlanBo) != null){ + throw BusinessException.build(I18nUtil.getI18nText("qms.qc.plan.existed")); + } + + + if (StrUtil.isNotBlank(qcPlan.getInspecNo()) && qmsInspecFreqService.findInspec(site, qcPlan.getInspecNo()).size() == 0) { + throw BusinessException.build(I18nUtil.getI18nText("qms.qc.plan.inspec.freq.not.found", qcPlan.getInspecNo())); + } + +// if (!FwUtils.isNullOrEmpty(qcPlan.getUserGroup()) && FwUtils.objIsEmpty(userRepository.findUserGroup(site, qcPlan.getUserGroup()))) { +// FwUtils.getCustomException("qms.qc.plan.user.group.not.found", new Object[]{ qcPlan.getUserGroup() }); +// } else { +// if ("1".equals(qcPlan.getQcType())) { +// if (FwUtils.isEmpty(userRepository.findGroupByCustom(site, qcPlan.getUserGroup(), "QMS_GROUP", "QC"))) { +// FwUtils.getCustomException("qms.qc.plan.user.group.not.is.this.type", new Object[]{ qcPlan.getUserGroup(), "QC" }); +// } +// } else { +// if (FwUtils.isEmpty(userRepository.findGroupByCustom(site, qcPlan.getUserGroup(), "QMS_GROUP", "OP"))) { +// FwUtils.getCustomException("qms.qc.plan.user.group.not.is.this.type", new Object[]{ qcPlan.getUserGroup(), "OP" }); +// } +// } +// } + + if ("true".equals(qcPlan.getCurrentRevision())) { + // 如勾選當前版本,把以前的計畫更新為舊版本 + List zQcPlanList = findCurrQc(site, qcPlan.getQcPlan()); + for (QmsQcPlan plan : zQcPlanList) { + plan.setCurrentRevision("false"); + super.removeById(plan.getHandle()); + super.save(plan); + } + } + + qcPlan.setToSpc(qcPlan.getToSpc()); + qcPlan.setCreatedDateTime(LocalDateTime.now()); + if (StrUtil.isNotBlank(qcPlan.getCheckOutControl())) { + qcPlan.setCheckOutControl(null); + } + super.save(qcPlan); + + List qmsQcPlanDetails = qcPlan.getQcPlanDetailList(); + qmsQcPlanDetails.forEach(detail -> { + detail.setHandle(QmsQcPlanDetail.genHandle(qcPlanBo, detail.getSeq())); + detail.setQcPlanBo(qcPlan.getHandle()); + if (StrUtil.isBlank(detail.getSamplePlanBo())) { + detail.setSamplePlanBo(null); + } + if (StrUtil.isNotBlank(detail.getQcRoutingBo())) { + detail.setQcItemSid("NA"); + } + qmsQcPlanDetailService.save(detail); + + if(StrUtil.isNotBlank(detail.getQcRoutingBo())){ + detail.getQcPlanDetailFactorList().forEach(factor -> { + factor.setSid(SidUtils.genSid()); + factor.setQcPlanDetailBo(detail.getHandle()); + qmsQcPlanDetailFactorService.save(factor); + }); + } + }); + + if ("1".equals(qcPlan.getQcMode())) { + for (QmsProdQcPlan prodQcPlan : qcPlan.getResourceList()) { + qmsProdQcPlanService.save(prodQcPlan); + } + } else if ("2".equals(qcPlan.getQcMode())) { + for (QmsProdQcPlan prodQcPlan : qcPlan.getWorkCenterList()) { + qmsProdQcPlanService.save(prodQcPlan); + } + } + } + + private List findCurrQc( String site, String qcPlan ){ + return super.list(Wrappers.lambdaQuery() + .eq(QmsQcPlan::getSite, site) + .eq(QmsQcPlan::getCurrentRevision, "true") + .eq(StrUtil.isNotBlank(qcPlan), QmsQcPlan::getQcPlan, qcPlan)); + } +} diff --git a/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsProdQcPlanMapper.java b/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsProdQcPlanMapper.java new file mode 100644 index 0000000..290c9e9 --- /dev/null +++ b/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsProdQcPlanMapper.java @@ -0,0 +1,16 @@ +package com.foreverwin.iep.qms.mapper; + +import com.foreverwin.mom.common.data.datascope.MomBaseMapper; +import com.foreverwin.iep.qms.entity.QmsProdQcPlan; +import org.apache.ibatis.annotations.Mapper; + +/** + * 产品检验计划表 + * + * @author mom code generator + * @date 2023-06-06 16:41:41 + */ +@Mapper +public interface QmsProdQcPlanMapper extends MomBaseMapper { + +} diff --git a/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsQcPlanDetailFactorMapper.java b/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsQcPlanDetailFactorMapper.java new file mode 100644 index 0000000..e82f646 --- /dev/null +++ b/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsQcPlanDetailFactorMapper.java @@ -0,0 +1,16 @@ +package com.foreverwin.iep.qms.mapper; + +import com.foreverwin.mom.common.data.datascope.MomBaseMapper; +import com.foreverwin.iep.qms.entity.QmsQcPlanDetailFactor; +import org.apache.ibatis.annotations.Mapper; + +/** + * 检验计划明细-要因表 + * + * @author mom code generator + * @date 2023-06-06 16:45:35 + */ +@Mapper +public interface QmsQcPlanDetailFactorMapper extends MomBaseMapper { + +} diff --git a/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsQcPlanMapper.java b/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsQcPlanMapper.java new file mode 100644 index 0000000..1f98284 --- /dev/null +++ b/qms-db/src/main/java/com/foreverwin/iep/qms/mapper/QmsQcPlanMapper.java @@ -0,0 +1,16 @@ +package com.foreverwin.iep.qms.mapper; + +import com.foreverwin.mom.common.data.datascope.MomBaseMapper; +import com.foreverwin.iep.qms.entity.QmsQcPlan; +import org.apache.ibatis.annotations.Mapper; + +/** + * 检验计划 + * + * @author mom code generator + * @date 2023-06-06 16:43:15 + */ +@Mapper +public interface QmsQcPlanMapper extends MomBaseMapper { + +} diff --git a/qms-db/src/main/resources/qms/mapper/QmsProdQcPlanMapper.xml b/qms-db/src/main/resources/qms/mapper/QmsProdQcPlanMapper.xml new file mode 100644 index 0000000..f745e83 --- /dev/null +++ b/qms-db/src/main/resources/qms/mapper/QmsProdQcPlanMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/qms-db/src/main/resources/qms/mapper/QmsQcPlanDetailFactorMapper.xml b/qms-db/src/main/resources/qms/mapper/QmsQcPlanDetailFactorMapper.xml new file mode 100644 index 0000000..d687c66 --- /dev/null +++ b/qms-db/src/main/resources/qms/mapper/QmsQcPlanDetailFactorMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/qms-db/src/main/resources/qms/mapper/QmsQcPlanMapper.xml b/qms-db/src/main/resources/qms/mapper/QmsQcPlanMapper.xml new file mode 100644 index 0000000..a4360f7 --- /dev/null +++ b/qms-db/src/main/resources/qms/mapper/QmsQcPlanMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +