feat(qms): 拷贝mes的物料、物料类型、工序、工位到qms

hwmom-htk
zch 6 months ago
parent 9c967b7841
commit 5995918c08

@ -0,0 +1,119 @@
package org.dromara.qms.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.qms.domain.bo.BaseMaterialInfoBo;
import org.dromara.qms.domain.vo.BaseMaterialInfoVo;
import org.dromara.qms.service.IBaseMaterialInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/qms/baseMaterialInfo
*
* @author zangch
* @date 2025-01-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseMaterialInfo")
public class BaseMaterialInfoController extends BaseController {
private final IBaseMaterialInfoService baseMaterialInfoService;
/**
*
*/
//@SaCheckPermission("mes:baseMaterialInfo:list")
@GetMapping("/list")
public TableDataInfo<BaseMaterialInfoVo> list(BaseMaterialInfoBo bo, PageQuery pageQuery) {
return baseMaterialInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
//@SaCheckPermission("mes:baseMaterialInfo:export")
@Log(title = "物料信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BaseMaterialInfoBo bo, HttpServletResponse response) {
List<BaseMaterialInfoVo> list = baseMaterialInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "物料信息", BaseMaterialInfoVo.class, response);
}
/**
*
*
* @param materialId
*/
//@SaCheckPermission("mes:baseMaterialInfo:query")
@GetMapping("/{materialId}")
public R<BaseMaterialInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long materialId) {
return R.ok(baseMaterialInfoService.queryById(materialId));
}
/**
*
*/
//@SaCheckPermission("mes:baseMaterialInfo:add")
@Log(title = "物料信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BaseMaterialInfoBo bo) {
return toAjax(baseMaterialInfoService.insertByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseMaterialInfo:edit")
@Log(title = "物料信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BaseMaterialInfoBo bo) {
return toAjax(baseMaterialInfoService.updateByBo(bo));
}
/**
*
*
* @param materialIds
*/
//@SaCheckPermission("mes:baseMaterialInfo:remove")
@Log(title = "物料信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{materialIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] materialIds) {
return toAjax(baseMaterialInfoService.deleteWithValidByIds(List.of(materialIds), true));
}
/**
*
*/
@GetMapping("getBaseMaterialInfoList")
public R<List<BaseMaterialInfoVo>> getBaseMaterialInfoList(BaseMaterialInfoBo bo) {
List<BaseMaterialInfoVo> list = baseMaterialInfoService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,118 @@
package org.dromara.qms.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.qms.domain.bo.BaseSupplierInfoBo;
import org.dromara.qms.domain.vo.BaseSupplierInfoVo;
import org.dromara.qms.service.IBaseSupplierInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/qms/baseSupplierInfo
*
* @author ZangCH
* @date 2025-01-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseSupplierInfo")
public class BaseSupplierInfoController extends BaseController {
private final IBaseSupplierInfoService baseSupplierInfoService;
/**
*
*/
//@SaCheckPermission("mes:baseSupplierInfo:list")
@GetMapping("/list")
public TableDataInfo<BaseSupplierInfoVo> list(BaseSupplierInfoBo bo, PageQuery pageQuery) {
return baseSupplierInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
//@SaCheckPermission("mes:baseSupplierInfo:export")
@Log(title = "供应商信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BaseSupplierInfoBo bo, HttpServletResponse response) {
List<BaseSupplierInfoVo> list = baseSupplierInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "供应商信息", BaseSupplierInfoVo.class, response);
}
/**
*
*
* @param supplierId
*/
//@SaCheckPermission("mes:baseSupplierInfo:query")
@GetMapping("/{supplierId}")
public R<BaseSupplierInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long supplierId) {
return R.ok(baseSupplierInfoService.queryById(supplierId));
}
/**
*
*/
//@SaCheckPermission("mes:baseSupplierInfo:add")
@Log(title = "供应商信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BaseSupplierInfoBo bo) {
return toAjax(baseSupplierInfoService.insertByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseSupplierInfo:edit")
@Log(title = "供应商信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BaseSupplierInfoBo bo) {
return toAjax(baseSupplierInfoService.updateByBo(bo));
}
/**
*
*
* @param supplierIds
*/
//@SaCheckPermission("mes:baseSupplierInfo:remove")
@Log(title = "供应商信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{supplierIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] supplierIds) {
return toAjax(baseSupplierInfoService.deleteWithValidByIds(List.of(supplierIds), true));
}
/**
*
*/
@GetMapping("getBaseSupplierInfoList")
public R<List<BaseSupplierInfoVo>> getBaseSupplierInfolist(BaseSupplierInfoBo bo) {
List<BaseSupplierInfoVo> list = baseSupplierInfoService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,127 @@
package org.dromara.qms.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.qms.service.IProdBaseProcessInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/qms/baseProcessInfo
*
* @author Yinq
* @date 2025-01-06
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseProcessInfo")
public class ProdBaseProcessInfoController extends BaseController {
private final IProdBaseProcessInfoService prodBaseProcessInfoService;
/**
*
*/
//@SaCheckPermission("mes:baseProcessInfo:list")
@GetMapping("/list")
public TableDataInfo<ProdBaseProcessInfoVo> list(ProdBaseProcessInfoBo bo, PageQuery pageQuery) {
return prodBaseProcessInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@GetMapping("/getProcessInfoList")
public R<List<ProdBaseProcessInfoVo>> getProcessInfoList(ProdBaseProcessInfoBo bo) {
List<ProdBaseProcessInfoVo> list = prodBaseProcessInfoService.queryList(bo);
return R.ok(list);
}
/**
*
*/
//@SaCheckPermission("mes:baseProcessInfo:export")
@Log(title = "工序信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProdBaseProcessInfoBo bo, HttpServletResponse response) {
List<ProdBaseProcessInfoVo> list = prodBaseProcessInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "工序信息", ProdBaseProcessInfoVo.class, response);
}
/**
*
*
* @param processId
*/
//@SaCheckPermission("mes:baseProcessInfo:query")
@GetMapping("/{processId}")
public R<ProdBaseProcessInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long processId) {
return R.ok(prodBaseProcessInfoService.queryById(processId));
}
/**
*
*/
//@SaCheckPermission("mes:baseProcessInfo:add")
@Log(title = "工序信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProdBaseProcessInfoBo bo) {
return toAjax(prodBaseProcessInfoService.insertByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseProcessInfo:edit")
@Log(title = "工序信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/edit")
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessInfoBo bo) {
return toAjax(prodBaseProcessInfoService.updateByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseProcessInfo:edit")
@Log(title = "工序信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping("/editUser")
public R<Void> editUser(@Validated(EditGroup.class) @RequestBody ProdBaseProcessInfoBo bo) {
return toAjax(prodBaseProcessInfoService.updateByBoUser(bo));
}
/**
*
*
* @param processIds
*/
//@SaCheckPermission("mes:baseProcessInfo:remove")
@Log(title = "工序信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{processIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] processIds) {
return toAjax(prodBaseProcessInfoService.deleteWithValidByIds(List.of(processIds), true));
}
}

@ -0,0 +1,117 @@
package org.dromara.qms.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.qms.domain.bo.ProdBaseStationInfoBo;
import org.dromara.qms.domain.vo.ProdBaseStationInfoVo;
import org.dromara.qms.service.IProdBaseStationInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/qms/baseStationInfo
*
* @author Yinq
* @date 2025-01-06
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseStationInfo")
public class ProdBaseStationInfoController extends BaseController {
private final IProdBaseStationInfoService prodBaseStationInfoService;
/**
*
*/
//@SaCheckPermission("mes:baseStationInfo:list")
@GetMapping("/list")
public TableDataInfo<ProdBaseStationInfoVo> list(ProdBaseStationInfoBo bo, PageQuery pageQuery) {
return prodBaseStationInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@GetMapping("/getStationInfoList")
public R<List<ProdBaseStationInfoVo>> getStationInfoList(ProdBaseStationInfoBo bo) {
List<ProdBaseStationInfoVo> list = prodBaseStationInfoService.queryList(bo);
return R.ok(list);
}
/**
*
*/
//@SaCheckPermission("mes:baseStationInfo:export")
@Log(title = "工位信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProdBaseStationInfoBo bo, HttpServletResponse response) {
List<ProdBaseStationInfoVo> list = prodBaseStationInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "工位信息", ProdBaseStationInfoVo.class, response);
}
/**
*
*
* @param stationId
*/
//@SaCheckPermission("mes:baseStationInfo:query")
@GetMapping("/{stationId}")
public R<ProdBaseStationInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long stationId) {
return R.ok(prodBaseStationInfoService.queryById(stationId));
}
/**
*
*/
//@SaCheckPermission("mes:baseStationInfo:add")
@Log(title = "工位信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProdBaseStationInfoBo bo) {
return toAjax(prodBaseStationInfoService.insertByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseStationInfo:edit")
@Log(title = "工位信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProdBaseStationInfoBo bo) {
return toAjax(prodBaseStationInfoService.updateByBo(bo));
}
/**
*
*
* @param stationIds
*/
//@SaCheckPermission("mes:baseStationInfo:remove")
@Log(title = "工位信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{stationIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] stationIds) {
return toAjax(prodBaseStationInfoService.deleteWithValidByIds(List.of(stationIds), true));
}
}

@ -0,0 +1,293 @@
package org.dromara.qms.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.util.Date;
/**
* base_material_info
*
* @author zangch
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_material_info")
public class BaseMaterialInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "material_id", type = IdType.AUTO)
private Long materialId;
/**
* ERP
*/
private String erpId;
/**
*
*/
private String materialCode;
/**
*
*/
private String oldMaterialCode;
/**
*
*/
private String materialName;
/**
* ID
*/
private Long materialTypeId;
/**
* ()
*/
private String materialCategoryId;
/**
*
*/
private String materialSubclass;
/**
* (0 1)
*/
private String batchFlag;
/**
*
*/
private Long batchAmount;
/**
* ID
*/
private Long materialUnitId;
/**
*
*/
private String materialUnit;
/**
*
*/
private String materialMatkl;
/**
*
*/
private String materialSpec;
/**
*
*/
private BigDecimal netWeight;
/**
*
*/
private BigDecimal grossWeight;
/**
* (1 0)
*/
private String alwaysFlag;
/**
*
*/
private Long factoryId;
/**
*
*/
private Long createOrgId;
/**
* 使
*/
private Long useOrgId;
/**
* 线
*/
private Long prodLineId;
/**
* 1 0
*/
private String activeFlag;
/**
* (0 1)
*/
private String deletedFlag;
/**
*
*/
private Long purchasePriceUnitId;
/**
*
*/
private Date approveDate;
/**
* erp
*/
private Date erpModifyDate;
/**
*
*/
private Long maxStockAmount;
/**
*
*/
private Long minStockAmount;
/**
*
*/
private Long safeStockAmount;
/**
* (1 0)
*/
private String applyFlag;
/**
* 1ERP 2 3MES
*/
private String materialClassfication;
/**
* (1 0)
*/
private String autoOutstockFlag;
/**
* (1 0)
*/
private String accessoriesFlag;
/**
* (1 0)
*/
private String lowValueConsumableFlag;
/**
*
*/
private String brand;
/**
*
*/
private String plyrating;
/**
*
*/
private String pattern;
/**
*
*/
private String speedLevel;
/**
*
*/
private String load;
/**
* 1 2 3
*/
private String tireMarkings;
/**
*
*/
private Long minParkingTime;
/**
*
*/
private Long maxParkingTime;
/**
*
*/
private BigDecimal standardWeight;
/**
*
*/
private BigDecimal weightUpperLimit;
/**
*
*/
private BigDecimal weightLowerLimit;
/**
* (0 1)
*/
private String innerTubeFlag;
/**
* (0 1)
*/
private String saleType;
/**
*
*/
private String remark;
/**
* 0 2
*/
@TableLogic
private String delFlag;
/**
*
*/
@TableField(exist = false)
private String factoryName; //映射字段
/**
*
*/
@TableField(exist = false)
private String matrialTypeName;//映射字段
/**
*
*/
@TableField(exist = false)
private String materialCategoryName;//映射字段
}

@ -0,0 +1,100 @@
package org.dromara.qms.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* base_material_type
*
* @author zangch
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_material_type")
public class BaseMaterialType extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "matrial_type_id", type = IdType.AUTO)
private Long matrialTypeId;
/**
*
*/
private Long parentId;
/**
*
*/
private String matrialTypeCode;
/**
*
*/
private String matrialTypeName;
/**
*
*/
private String ancestors;
/**
* ID
*/
// private String materialCategories;
private Long materialCategoryId;
/**
*
*/
private String materialSubclass;
/**
* ID
*/
private Long processId;
/**
* 1 0
*/
private String activeFlag;
/**
*
*/
private String remark;
/**
* 0 2
*/
@TableLogic
private String delFlag;
/**
*
*/
@TableField(exist = false)
private String processName;//映射字段
/**
*
*/
/* @TableField(exist = false)
private String materialCategoryCode;//映射字段*/
/**
*
*/
@TableField(exist = false)
private String materialCategoryName;//映射字段
}

@ -0,0 +1,74 @@
package org.dromara.qms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.util.Date;
/**
* base_supplier_info
*
* @author ZangCH
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_supplier_info")
public class BaseSupplierInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "supplier_id", type = IdType.AUTO)
private Long supplierId;
/**
*
*/
private String supplierCode;
/**
*
*/
private String supplierName;
/**
* erp
*/
private Long erpId;
/**
* 1 0
*/
private String supplierStatus;
/**
*
*/
private Date auditDate;
/**
* erp
*/
private Date erpModifyDate;
/**
*
*/
private String remark;
/**
* 0 2
*/
@TableLogic
private String delFlag;
}

@ -0,0 +1,161 @@
package org.dromara.qms.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
import java.util.List;
/**
* prod_base_process_info
*
* @author Yinq
* @date 2025-05-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("prod_base_process_info")
public class ProdBaseProcessInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "process_id", type = IdType.AUTO)
private Long processId;
/**
*
*/
private String processCode;
/**
*
*/
private String processName;
/**
* 1 2
*/
private String processType;
/**
*
*/
private Long processQueue;
/**
* ;
*/
private Long productionTime;
/**
* ID
*/
private Long workshopId;
/**
* 1 2
*/
private String outsourcingFlag;
/**
* 1 2 3
*/
private String processProductionType;
/**
* %/
*/
private Long defaultYieldRate;
/**
* %/
*/
private Long lossRate;
/**
* %/
*/
private Long reworkRate;
/**
* 1 2 3
*/
private String materialMethod;
/**
*
*/
private Long leadTime;
/**
*
*/
private Long setupTime;
/**
*
*/
private Long processingTime;
/**
*
*/
private Long disassemblyTime;
/**
* /
*/
private Long theoreticalCycleTime;
/**
* 1 2 3
*/
private String inspectionMethod;
/**
* (1 0)
*/
private String activeFlag;
/**
* 0 2
*/
@TableLogic
private String delFlag;
/**
*
*/
private String remark;
// /**
// * 工序关联产线信息
// */
// @TableField(exist = false)
// private List<ProdBaseProcessProdLine> prodBaseProcessProdlineList;//工序关联产线信息,映射字段
//
// /** 工序关联人员信息 */
// @TableField(exist = false)
// private List<ProdBaseProcessUser> prodBaseProcessUserList;//工序关联人员信息,映射字段
@TableField(exist = false)
private String processPercentage;//映射字段
/**
*
*/
@TableField(exist = false)
private String workshopName;
// /**
// * 工序资源List
// */
// @TableField(exist = false)
// List<ProdBaseProcessResource> prodBaseProcessResourceList;
}

@ -0,0 +1,91 @@
package org.dromara.qms.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* prod_base_station_info
*
* @author Yinq
* @date 2025-01-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("prod_base_station_info")
public class ProdBaseStationInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "station_id", type = IdType.AUTO)
private Long stationId;
/**
*
*/
private String stationCode;
/**
*
*/
private String stationName;
/**
* (1 2)
*/
private String stationType;
/**
*
*/
private Long processId;
/**
*
*/
private Long productionTime;
/**
* AGV
*/
private String agvCode;
/**
* IP
*/
private String ipAddress;
/**
* (1 0)
*/
private String activeFlag;
/**
*
*/
private String remark;
/**
* ID
*/
private Long machineId;
/**
* 0 2
*/
@TableLogic
private String delFlag;
@TableField(exist = false)
private String processName;//字段映射
@TableField(exist = false)
private String machineName;//字段映射
}

@ -0,0 +1,270 @@
package org.dromara.qms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.qms.domain.BaseMaterialInfo;
import java.math.BigDecimal;
import java.util.Date;
/**
* base_material_info
*
* @author zangch
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BaseMaterialInfo.class, reverseConvertGenerate = false)
public class BaseMaterialInfoBo extends BaseEntity {
/**
*
*/
private Long materialId;
/**
* ERP
*/
/* @NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String erpId;
/**
*
*/
@NotBlank(message = "物料编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String materialCode;
/**
*
*/
private String oldMaterialCode;
/**
*
*/
@NotBlank(message = "物料名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String materialName;
/**
* ID
*/
private Long materialTypeId;
/**
* ()
*/
private String materialCategoryId;
/**
*
*/
private String materialSubclass;
/**
* (0 1)
*/
private String batchFlag;
/**
*
*/
private Long batchAmount;
/**
* ID
*/
private Long materialUnitId;
/**
*
*/
private String materialUnit;
/**
*
*/
private String materialMatkl;
/**
*
*/
private String materialSpec;
/**
*
*/
private BigDecimal netWeight;
/**
*
*/
private BigDecimal grossWeight;
/**
* (1 0)
*/
private String alwaysFlag;
/**
*
*/
private Long factoryId;
/**
*
*/
private Long createOrgId;
/**
* 使
*/
private Long useOrgId;
/**
* 线
*/
private Long prodLineId;
/**
* 1 0
*/
private String activeFlag;
/**
* (0 1)
*/
private String deletedFlag;
/**
*
*/
private Long purchasePriceUnitId;
/**
*
*/
private Date approveDate;
/**
* erp
*/
private Date erpModifyDate;
/**
*
*/
private Long maxStockAmount;
/**
*
*/
private Long minStockAmount;
/**
*
*/
private Long safeStockAmount;
/**
* (1 0)
*/
private String applyFlag;
/**
* 1ERP 2 3MES
*/
private String materialClassfication;
/**
* (1 0)
*/
private String autoOutstockFlag;
/**
* (1 0)
*/
private String accessoriesFlag;
/**
* (1 0)
*/
private String lowValueConsumableFlag;
/**
*
*/
private String brand;
/**
*
*/
private String plyrating;
/**
*
*/
private String pattern;
/**
*
*/
private String speedLevel;
/**
*
*/
private String load;
/**
* 1 2 3
*/
private String tireMarkings;
/**
*
*/
private Long minParkingTime;
/**
*
*/
private Long maxParkingTime;
/**
*
*/
private BigDecimal standardWeight;
/**
*
*/
private BigDecimal weightUpperLimit;
/**
*
*/
private BigDecimal weightLowerLimit;
/**
* (0 1)
*/
private String innerTubeFlag;
/**
* (0 1)
*/
private String saleType;
/**
*
*/
private String remark;
}

@ -0,0 +1,68 @@
package org.dromara.qms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.qms.domain.BaseSupplierInfo;
import java.util.Date;
/**
* base_supplier_info
*
* @author ZangCH
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BaseSupplierInfo.class, reverseConvertGenerate = false)
public class BaseSupplierInfoBo extends BaseEntity {
/**
*
*/
private Long supplierId;
/**
*
*/
@NotBlank(message = "供应商编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierCode;
/**
*
*/
@NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String supplierName;
/**
* erp
*/
private Long erpId;
/**
* 1 0
*/
private String supplierStatus;
/**
*
*/
private Date auditDate;
/**
* erp
*/
private Date erpModifyDate;
/**
*
*/
private String remark;
}

@ -0,0 +1,149 @@
package org.dromara.qms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.qms.domain.ProdBaseProcessInfo;
import java.util.List;
/**
* prod_base_process_info
*
* @author Yinq
* @date 2025-05-29
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProdBaseProcessInfo.class, reverseConvertGenerate = false)
public class ProdBaseProcessInfoBo extends BaseEntity {
/**
*
*/
private Long processId;
/**
*
*/
@NotBlank(message = "工序编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String processCode;
/**
*
*/
@NotBlank(message = "工序名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String processName;
/**
* 1 2
*/
@NotBlank(message = "工序类别1生产工序 2质检工序不能为空", groups = { AddGroup.class, EditGroup.class })
private String processType;
/**
*
*/
private Long processQueue;
/**
* ;
*/
private Long productionTime;
/**
* ID
*/
private Long workshopId;
/**
* 1 2
*/
private String outsourcingFlag;
/**
* 1 2 3
*/
private String processProductionType;
/**
* %/
*/
private Long defaultYieldRate;
/**
* %/
*/
private Long lossRate;
/**
* %/
*/
private Long reworkRate;
/**
* 1 2 3
*/
private String materialMethod;
/**
*
*/
private Long leadTime;
/**
*
*/
private Long setupTime;
/**
*
*/
private Long processingTime;
/**
*
*/
private Long disassemblyTime;
/**
* /
*/
private Long theoreticalCycleTime;
/**
* 1 2 3
*/
private String inspectionMethod;
/**
* (1 0)
*/
@NotBlank(message = "激活标识(1是 0否)不能为空", groups = { AddGroup.class, EditGroup.class })
private String activeFlag;
/**
*
*/
private String remark;
// /**
// * 工序关联产线信息
// */
// private List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList;//工序关联产线信息,映射字段
//
// /** 工序关联人员信息 */
// private List<ProdBaseProcessUserBo> prodBaseProcessUserBoList;//工序关联人员信息,映射字段
private String processPercentageBo;//映射字段
// /**
// * 工序资源List
// */
// List<ProdBaseProcessResource> prodBaseProcessResourceList;
}

@ -0,0 +1,83 @@
package org.dromara.qms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.qms.domain.ProdBaseStationInfo;
import java.util.List;
/**
* prod_base_station_info
*
* @author Yinq
* @date 2025-01-06
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProdBaseStationInfo.class, reverseConvertGenerate = false)
public class ProdBaseStationInfoBo extends BaseEntity {
/**
*
*/
private Long stationId;
/**
*
*/
@NotBlank(message = "工位编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String stationCode;
/**
*
*/
@NotBlank(message = "工位名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String stationName;
/**
*
*/
@NotBlank(message = "工位类型不能为空", groups = {AddGroup.class, EditGroup.class})
private String stationType;
/**
*
*/
@NotNull(message = "所属工序不能为空", groups = {AddGroup.class, EditGroup.class})
private Long processId;
/**
*
*/
private Long productionTime;
/**
* AGV
*/
private String agvCode;
/**
* IP
*/
private String ipAddress;
/**
* (1 0)
*/
private String activeFlag;
/**
*
*/
private String remark;
private Long machineId;
// private List<ProdBaseStationMaterialtype> prodBaseStationMaterialtypeList;
}

@ -0,0 +1,386 @@
package org.dromara.qms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.qms.domain.BaseMaterialInfo;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* base_material_info
*
* @author zangch
* @date 2025-01-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseMaterialInfo.class)
public class BaseMaterialInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long materialId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
* ERP
*/
@ExcelProperty(value = "ERP信息")
private String erpId;
/**
*
*/
@ExcelProperty(value = "物料编码")
private String materialCode;
/**
*
*/
@ExcelProperty(value = "旧物料编码")
private String oldMaterialCode;
/**
*
*/
@ExcelProperty(value = "物料名称")
private String materialName;
/**
* ID
*/
@ExcelProperty(value = "物料类型ID")
private Long materialTypeId;
/**
* ()
*/
private String materialCategoryId;
/**
*
*/
@ExcelProperty(value = "物料小类")
private String materialSubclass;
/**
* (0 1)
*/
@ExcelProperty(value = "批次标识(0否 1是)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_batch_flag")
private String batchFlag;
/**
*
*/
@ExcelProperty(value = "小批次数量")
private Long batchAmount;
/**
* ID
*/
@ExcelProperty(value = "计量单位ID")
private Long materialUnitId;
/**
*
*/
@ExcelProperty(value = "计量单位名称")
private String materialUnit;
/**
*
*/
@ExcelProperty(value = "物料组")
private String materialMatkl;
/**
*
*/
@ExcelProperty(value = "物料规格")
private String materialSpec;
/**
*
*/
@ExcelProperty(value = "净重")
private BigDecimal netWeight;
/**
*
*/
@ExcelProperty(value = "毛重")
private BigDecimal grossWeight;
/**
* (1 0)
*/
@ExcelProperty(value = "绑定标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "always_flag")
private String alwaysFlag;
/**
*
*/
@ExcelProperty(value = "所属工厂")
private Long factoryId;
/**
*
*/
@ExcelProperty(value = "创建组织")
private Long createOrgId;
/**
* 使
*/
@ExcelProperty(value = "使用组织")
private Long useOrgId;
/**
* 线
*/
@ExcelProperty(value = "所属产线")
private Long prodLineId;
/**
* 1 0
*/
@ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
* (0 1)
*/
@ExcelProperty(value = "删除标识(0否 1是)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "deleted_flag")
private String deletedFlag;
/**
*
*/
@ExcelProperty(value = "采购计价单位")
private Long purchasePriceUnitId;
/**
*
*/
@ExcelProperty(value = "审核日期")
private Date approveDate;
/**
* erp
*/
@ExcelProperty(value = "erp最后更新日期")
private Date erpModifyDate;
/**
*
*/
@ExcelProperty(value = "最大库存数量")
private Long maxStockAmount;
/**
*
*/
@ExcelProperty(value = "最小库存数量")
private Long minStockAmount;
/**
*
*/
@ExcelProperty(value = "安全库存数量")
private Long safeStockAmount;
/**
* (1 0)
*/
@ExcelProperty(value = "申请标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "apply_flag")
private String applyFlag;
/**
* 1ERP 2 3MES
*/
@ExcelProperty(value = "物料分类", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "material_classfication")
private String materialClassfication;
/**
* (1 0)
*/
@ExcelProperty(value = "自动出库标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "auto_outstock_flag")
private String autoOutstockFlag;
/**
* (1 0)
*/
@ExcelProperty(value = "辅料标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_accessories_flag")
private String accessoriesFlag;
/**
* (1 0)
*/
@ExcelProperty(value = "低值易耗品标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_low_value_consumable_flag")
private String lowValueConsumableFlag;
/**
*
*/
@ExcelProperty(value = "品牌")
private String brand;
/**
*
*/
@ExcelProperty(value = "层级")
private String plyrating;
/**
*
*/
@ExcelProperty(value = "花纹")
private String pattern;
/**
*
*/
@ExcelProperty(value = "速度级别")
private String speedLevel;
/**
*
*/
@ExcelProperty(value = "负荷载重")
private String load;
/**
* 1 2 3
*/
@ExcelProperty(value = "轮胎标记", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "tire_markings")
private String tireMarkings;
/**
*
*/
@ExcelProperty(value = "最小停放时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long minParkingTime;
/**
*
*/
@ExcelProperty(value = "最大停放时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long maxParkingTime;
/**
*
*/
@ExcelProperty(value = "标准重量")
private BigDecimal standardWeight;
/**
*
*/
@ExcelProperty(value = "标准重量上限")
private BigDecimal weightUpperLimit;
/**
*
*/
@ExcelProperty(value = "标准重量下限")
private BigDecimal weightLowerLimit;
/**
* (0 1)
*/
@ExcelProperty(value = "内胎标记(0无 1有)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "inner_tube_flag")
private String innerTubeFlag;
/**
* (0 1)
*/
@ExcelProperty(value = "销售类型(0内销 1外销)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "sale_type")
private String saleType;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
*
*/
@ExcelProperty(value = "所属工厂")
private String factoryName;//映射字段
/**
*
*/
@ExcelProperty(value = "物料类型名称")
private String matrialTypeName;//映射字段
/**
*
*/
@ExcelProperty(value = "物料大类名称")
private String materialCategoryName;//映射字段
}

@ -0,0 +1,141 @@
package org.dromara.qms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.qms.domain.BaseMaterialType;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* base_material_type
*
* @author zangch
* @date 2025-01-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseMaterialType.class)
public class BaseMaterialTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "物料类型ID")
private Long matrialTypeId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "父级标识")
private Long parentId;
/**
*
*/
@ExcelProperty(value = "物料类型编号")
private String matrialTypeCode;
/**
*
*/
@ExcelProperty(value = "物料类型名称")
private String matrialTypeName;
/**
*
*/
@ExcelProperty(value = "祖级列表")
private String ancestors;
/**
* ID
*/
// @ExcelProperty(value = "物料大类(1原材料 2半成品 3成品)", converter = ExcelDictConvert.class)
// @ExcelDictFormat(dictType = "mes_material_categories")
private Long materialCategoryId;
// private String materialCategories;
/**
*
*/
@ExcelProperty(value = "物料小类")
private String materialSubclass;
/**
* ID
*/
@ExcelProperty(value = "工序ID")
private Long processId;
/**
* 1 0
*/
@ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
*
*/
// @ExcelProperty(value = "工序名称")
// private String processName;//工序名称
/**
*
*/
@ExcelProperty(value = "工序名称")
private String materialCategoryName;//映射字段
}

@ -0,0 +1,116 @@
package org.dromara.qms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.qms.domain.BaseSupplierInfo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* base_supplier_info
*
* @author ZangCH
* @date 2025-01-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseSupplierInfo.class)
public class BaseSupplierInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long supplierId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "供应商编号")
private String supplierCode;
/**
*
*/
@ExcelProperty(value = "供应商名称")
private String supplierName;
/**
* erp
*/
@ExcelProperty(value = "erp的主键")
private Long erpId;
/**
* 1 0
*/
@ExcelProperty(value = "激活状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String supplierStatus;
/**
*
*/
@ExcelProperty(value = "审核日期")
private Date auditDate;
/**
* erp
*/
@ExcelProperty(value = "erp最后更新时间")
private Date erpModifyDate;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
}

@ -0,0 +1,196 @@
package org.dromara.qms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.qms.domain.ProdBaseProcessInfo;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* prod_base_process_info
*
* @author Yinq
* @date 2025-05-29
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdBaseProcessInfo.class)
public class ProdBaseProcessInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long processId;
/**
*
*/
@ExcelProperty(value = "工序编号")
private String processCode;
/**
*
*/
@ExcelProperty(value = "工序名称")
private String processName;
/**
* 1 2
*/
@ExcelProperty(value = "工序类别", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "process_type")
private String processType;
/**
*
*/
@ExcelProperty(value = "工序顺序", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "弃=用")
private Long processQueue;
/**
* ;
*/
@ExcelProperty(value = "单位生产时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long productionTime;
/**
* ID
*/
@ExcelProperty(value = "车间ID")
private Long workshopId;
/**
* 1 2
*/
@ExcelProperty(value = "委外标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_outsourcing_flag")
private String outsourcingFlag;
/**
* 1 2 3
*/
@ExcelProperty(value = "工序生产类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_process_production_type")
private String processProductionType;
/**
* %/
*/
@ExcelProperty(value = "默认产出率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private Long defaultYieldRate;
/**
* %/
*/
@ExcelProperty(value = "损耗率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private Long lossRate;
/**
* %/
*/
@ExcelProperty(value = "返修率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private Long reworkRate;
/**
* 1 2 3
*/
@ExcelProperty(value = "领料方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_material_method")
private String materialMethod;
/**
*
*/
@ExcelProperty(value = "委外提前期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long leadTime;
/**
*
*/
@ExcelProperty(value = "准备时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long setupTime;
/**
*
*/
@ExcelProperty(value = "加工时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long processingTime;
/**
*
*/
@ExcelProperty(value = "拆卸时间", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=")
private Long disassemblyTime;
/**
* /
*/
@ExcelProperty(value = "理论生产节拍", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "秒=/件")
private Long theoreticalCycleTime;
/**
* 1 2 3
*/
@ExcelProperty(value = "质检方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_inspection_method")
private String inspectionMethod;
/**
* (1 0)
*/
@ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
// /**
// * 工序关联产线信息
// */
// @ExcelIgnore
// private List<ProdBaseProcessProdLineVo> prodBaseProcessProdlineVoList;//工序关联产线信息,映射字段
//
// /** 工序关联人员信息 */
// @ExcelIgnore
// private List<ProdBaseProcessUserVo> prodBaseProcessUserVoList;//工序关联人员信息,映射字段
@ExcelIgnore
private String processPercentageVo;//映射字段
/**
*
*/
private String workshopName;
/**
* List
*/
// List<ProdBaseProcessResource> prodBaseProcessResourceList;
}

@ -0,0 +1,144 @@
package org.dromara.qms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.qms.domain.ProdBaseStationInfo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* prod_base_station_info
*
* @author Yinq
* @date 2025-01-06
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdBaseStationInfo.class)
public class ProdBaseStationInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long stationId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "工位编号")
private String stationCode;
/**
*
*/
@ExcelProperty(value = "工位名称")
private String stationName;
/**
* (1 2)
*/
@ExcelProperty(value = "工位类型(1生产工位 2质检工位)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "station_type")
private String stationType;
/**
*
*/
@ExcelProperty(value = "所属工序")
private Long processId;
/**
*
*/
@ExcelProperty(value = "所属工序名称")
private String processName;
/**
*
*/
@ExcelProperty(value = "单位生产时间(秒)", converter = ExcelDictConvert.class)
private Long productionTime;
/**
* AGV
*/
@ExcelProperty(value = "AGV编号")
private String agvCode;
/**
* IP
*/
@ExcelProperty(value = "IP地址")
private String ipAddress;
/**
* (1 0)
*/
@ExcelProperty(value = "激活标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "station_type")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
private Long machineId;
/**
*
*/
@ExcelProperty(value = "机台名称")
private String machineName;
// private List<ProdBaseStationMaterialtype> prodBaseStationMaterialtypeList;
}

@ -0,0 +1,27 @@
package org.dromara.qms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.qms.domain.BaseMaterialInfo;
import org.dromara.qms.domain.bo.BaseMaterialInfoBo;
import org.dromara.qms.domain.vo.BaseMaterialInfoVo;
import org.dromara.pda.api.model.BaseMaterial;
import java.util.List;
/**
* Mapper
*
* @author zangch
* @date 2025-01-07
*/
public interface BaseMaterialInfoMapper extends BaseMapperPlus<BaseMaterialInfo, BaseMaterialInfoVo> {
BaseMaterial queryByMaterialCode(String materialCode);
/**
* join material_type
* @param baseMaterialInfoBo
* @return
*/
List<BaseMaterialInfoVo> selectMaterialJoinList(BaseMaterialInfoBo baseMaterialInfoBo);
}

@ -0,0 +1,15 @@
package org.dromara.qms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.qms.domain.BaseMaterialType;
import org.dromara.qms.domain.vo.BaseMaterialTypeVo;
/**
* Mapper
*
* @author zangch
* @date 2025-01-07
*/
public interface BaseMaterialTypeMapper extends BaseMapperPlus<BaseMaterialType, BaseMaterialTypeVo> {
}

@ -0,0 +1,15 @@
package org.dromara.qms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.qms.domain.BaseSupplierInfo;
import org.dromara.qms.domain.vo.BaseSupplierInfoVo;
/**
* Mapper
*
* @author ZangCH
* @date 2025-01-07
*/
public interface BaseSupplierInfoMapper extends BaseMapperPlus<BaseSupplierInfo, BaseSupplierInfoVo> {
}

@ -0,0 +1,99 @@
package org.dromara.qms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.qms.domain.ProdBaseProcessInfo;
import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo;
import java.util.List;
/**
* Mapper
*
* @author Yinq
* @date 2025-01-06
*/
public interface ProdBaseProcessInfoMapper extends BaseMapperPlus<ProdBaseProcessInfo, ProdBaseProcessInfoVo> {
/**
*
*
* @param processId
* @return
*/
public ProdBaseProcessInfo selectProdBaseProcessInfoByProcessId(Long processId);
/**
*
* @param processId
* @return
*/
public ProdBaseProcessInfo selectProdBaseProcessInfoUserByProcessId(Long processId);
/**
*
*
* @param prodBaseProcessInfo
* @return
*/
public List<ProdBaseProcessInfo> selectProdBaseProcessInfoList(ProdBaseProcessInfoBo prodBaseProcessInfo);
/**
*
*
* @param prodBaseProcessInfo
* @return
*/
public int insertProdBaseProcessInfo(ProdBaseProcessInfoBo prodBaseProcessInfo);
/**
*
*
* @param prodBaseProcessInfo
* @return
*/
public int updateProdBaseProcessInfo(ProdBaseProcessInfoBo prodBaseProcessInfo);
/**
*
*
* @param processId
* @return
*/
public int deleteProdBaseProcessInfoByProcessId(Long processId);
/**
*
*
* @param processIds
* @return
*/
public int deleteProdBaseProcessInfoByProcessIds(Long[] processIds);
/**
* 线
*
* @param processIds
* @return
*/
public int deleteProdBaseProcessProdlineByProcessIds(Long[] processIds);
/**
* 线
*
* @param prodBaseProcessProdlineList 线
* @return
*/
// public int batchProdBaseProcessProdline(List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineList);
/**
* 线
*
* @param processId ID
* @return
*/
public int deleteProdBaseProcessProdlineByProcessId(Long processId);
}

@ -0,0 +1,15 @@
package org.dromara.qms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.qms.domain.ProdBaseStationInfo;
import org.dromara.qms.domain.vo.ProdBaseStationInfoVo;
/**
* Mapper
*
* @author Yinq
* @date 2025-01-06
*/
public interface ProdBaseStationInfoMapper extends BaseMapperPlus<ProdBaseStationInfo, ProdBaseStationInfoVo> {
}

@ -0,0 +1,68 @@
package org.dromara.qms.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.bo.BaseMaterialInfoBo;
import org.dromara.qms.domain.vo.BaseMaterialInfoVo;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author zangch
* @date 2025-01-07
*/
public interface IBaseMaterialInfoService {
/**
*
*
* @param materialId
* @return
*/
BaseMaterialInfoVo queryById(Long materialId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<BaseMaterialInfoVo> queryPageList(BaseMaterialInfoBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<BaseMaterialInfoVo> queryList(BaseMaterialInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(BaseMaterialInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(BaseMaterialInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,68 @@
package org.dromara.qms.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.bo.BaseSupplierInfoBo;
import org.dromara.qms.domain.vo.BaseSupplierInfoVo;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author ZangCH
* @date 2025-01-07
*/
public interface IBaseSupplierInfoService {
/**
*
*
* @param supplierId
* @return
*/
BaseSupplierInfoVo queryById(Long supplierId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<BaseSupplierInfoVo> queryPageList(BaseSupplierInfoBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<BaseSupplierInfoVo> queryList(BaseSupplierInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(BaseSupplierInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(BaseSupplierInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,76 @@
package org.dromara.qms.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yinq
* @date 2025-01-06
*/
public interface IProdBaseProcessInfoService {
/**
*
*
* @param processId
* @return
*/
ProdBaseProcessInfoVo queryById(Long processId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<ProdBaseProcessInfoVo> queryPageList(ProdBaseProcessInfoBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<ProdBaseProcessInfoVo> queryList(ProdBaseProcessInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(ProdBaseProcessInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(ProdBaseProcessInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBoUser(ProdBaseProcessInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,68 @@
package org.dromara.qms.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.bo.ProdBaseStationInfoBo;
import org.dromara.qms.domain.vo.ProdBaseStationInfoVo;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yinq
* @date 2025-01-06
*/
public interface IProdBaseStationInfoService {
/**
*
*
* @param stationId
* @return
*/
ProdBaseStationInfoVo queryById(Long stationId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<ProdBaseStationInfoVo> queryPageList(ProdBaseStationInfoBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<ProdBaseStationInfoVo> queryList(ProdBaseStationInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(ProdBaseStationInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(ProdBaseStationInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,244 @@
package org.dromara.qms.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.BaseMaterialType;
import org.dromara.qms.domain.bo.BaseMaterialInfoBo;
import org.dromara.qms.domain.vo.BaseMaterialInfoVo;
import org.dromara.qms.mapper.BaseMaterialInfoMapper;
import org.dromara.qms.service.IBaseMaterialInfoService;
import org.dromara.qms.domain.BaseMaterialInfo;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author zangch
* @date 2025-01-07
*/
@RequiredArgsConstructor
@Service
public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService {
private final BaseMaterialInfoMapper baseMapper;
/**
*
*
* @param materialId
* @return
*/
@Override
public BaseMaterialInfoVo queryById(Long materialId){
return baseMapper.selectVoById(materialId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<BaseMaterialInfoVo> queryPageList(BaseMaterialInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<BaseMaterialInfo> lqw = buildQueryWrapper(bo);
Page<BaseMaterialInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<BaseMaterialInfoVo> queryList(BaseMaterialInfoBo bo) {
MPJLambdaWrapper<BaseMaterialInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<BaseMaterialInfo> buildQueryWrapper(BaseMaterialInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseMaterialInfo> lqw = JoinWrappers.lambda(BaseMaterialInfo.class)
.selectAll(BaseMaterialInfo.class)
// // 关联查询工厂信息
// .select(ProdBaseFactoryInfo::getFactoryName)
// .leftJoin(ProdBaseFactoryInfo.class, ProdBaseFactoryInfo::getFactoryId, BaseMaterialInfo::getFactoryId)
//
//关联查询物料类型名称
.select(BaseMaterialType::getMatrialTypeName)
//注意"e":BaseMaterialType实体类中为matrialTypeIdBaseMaterialInfo实体类中为materialTypeId
.leftJoin(BaseMaterialType.class, BaseMaterialType::getMatrialTypeId, BaseMaterialInfo::getMaterialTypeId)
//
///* //关联计量单位信息
// .select(BaseMeasurementUnitInfo::getUnitName)
// .leftJoin(BaseMeasurementUnitInfo.class, BaseMeasurementUnitInfo::getUnitId, BaseMaterialInfo::getMaterialUnitId)*/
//
// //关联物料大类信息(物料大类从字典改为了数据库表)
// .select(BaseMaterialCategory::getMaterialCategoryName)
// .leftJoin(BaseMaterialCategory.class, BaseMaterialCategory::getMaterialCategoryId, BaseMaterialInfo::getMaterialCategoryId)
.eq(bo.getMaterialId() != null, BaseMaterialInfo::getMaterialId, bo.getMaterialId())
.eq(StringUtils.isNotBlank(bo.getErpId()), BaseMaterialInfo::getErpId, bo.getErpId())
.like(StringUtils.isNotBlank(bo.getMaterialCode()), BaseMaterialInfo::getMaterialCode, bo.getMaterialCode())
.eq(StringUtils.isNotBlank(bo.getOldMaterialCode()), BaseMaterialInfo::getOldMaterialCode, bo.getOldMaterialCode())
.like(StringUtils.isNotBlank(bo.getMaterialName()), BaseMaterialInfo::getMaterialName, bo.getMaterialName())
.eq(bo.getMaterialTypeId() != null, BaseMaterialInfo::getMaterialTypeId, bo.getMaterialTypeId())
.eq(StringUtils.isNotBlank(bo.getMaterialCategoryId()), BaseMaterialInfo::getMaterialCategoryId, bo.getMaterialCategoryId())
.eq(StringUtils.isNotBlank(bo.getMaterialSubclass()), BaseMaterialInfo::getMaterialSubclass, bo.getMaterialSubclass())
.eq(StringUtils.isNotBlank(bo.getBatchFlag()), BaseMaterialInfo::getBatchFlag, bo.getBatchFlag())
.eq(bo.getBatchAmount() != null, BaseMaterialInfo::getBatchAmount, bo.getBatchAmount())
.eq(bo.getMaterialUnitId() != null, BaseMaterialInfo::getMaterialUnitId, bo.getMaterialUnitId())
.eq(StringUtils.isNotBlank(bo.getMaterialUnit()), BaseMaterialInfo::getMaterialUnit, bo.getMaterialUnit())
.eq(StringUtils.isNotBlank(bo.getMaterialMatkl()), BaseMaterialInfo::getMaterialMatkl, bo.getMaterialMatkl())
.eq(StringUtils.isNotBlank(bo.getMaterialSpec()), BaseMaterialInfo::getMaterialSpec, bo.getMaterialSpec())
.eq(bo.getNetWeight() != null, BaseMaterialInfo::getNetWeight, bo.getNetWeight())
.eq(bo.getGrossWeight() != null, BaseMaterialInfo::getGrossWeight, bo.getGrossWeight())
.eq(StringUtils.isNotBlank(bo.getAlwaysFlag()), BaseMaterialInfo::getAlwaysFlag, bo.getAlwaysFlag())
.eq(bo.getFactoryId() != null, BaseMaterialInfo::getFactoryId, bo.getFactoryId())
.eq(bo.getCreateOrgId() != null, BaseMaterialInfo::getCreateOrgId, bo.getCreateOrgId())
.eq(bo.getUseOrgId() != null, BaseMaterialInfo::getUseOrgId, bo.getUseOrgId())
.eq(bo.getProdLineId() != null, BaseMaterialInfo::getProdLineId, bo.getProdLineId())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialInfo::getActiveFlag, bo.getActiveFlag())
.eq(StringUtils.isNotBlank(bo.getDeletedFlag()), BaseMaterialInfo::getDeletedFlag, bo.getDeletedFlag())
.eq(bo.getPurchasePriceUnitId() != null, BaseMaterialInfo::getPurchasePriceUnitId, bo.getPurchasePriceUnitId())
.between(params.get("beginApproveDate") != null && params.get("endApproveDate") != null,
BaseMaterialInfo::getApproveDate ,params.get("beginApproveDate"), params.get("endApproveDate"))
.eq(bo.getErpModifyDate() != null, BaseMaterialInfo::getErpModifyDate, bo.getErpModifyDate())
.eq(bo.getMaxStockAmount() != null, BaseMaterialInfo::getMaxStockAmount, bo.getMaxStockAmount())
.eq(bo.getMinStockAmount() != null, BaseMaterialInfo::getMinStockAmount, bo.getMinStockAmount())
.eq(bo.getSafeStockAmount() != null, BaseMaterialInfo::getSafeStockAmount, bo.getSafeStockAmount())
.eq(StringUtils.isNotBlank(bo.getApplyFlag()), BaseMaterialInfo::getApplyFlag, bo.getApplyFlag())
.eq(StringUtils.isNotBlank(bo.getMaterialClassfication()), BaseMaterialInfo::getMaterialClassfication, bo.getMaterialClassfication())
.eq(StringUtils.isNotBlank(bo.getAutoOutstockFlag()), BaseMaterialInfo::getAutoOutstockFlag, bo.getAutoOutstockFlag())
.eq(StringUtils.isNotBlank(bo.getAccessoriesFlag()), BaseMaterialInfo::getAccessoriesFlag, bo.getAccessoriesFlag())
.eq(StringUtils.isNotBlank(bo.getLowValueConsumableFlag()), BaseMaterialInfo::getLowValueConsumableFlag, bo.getLowValueConsumableFlag())
.eq(StringUtils.isNotBlank(bo.getBrand()), BaseMaterialInfo::getBrand, bo.getBrand())
.eq(StringUtils.isNotBlank(bo.getPlyrating()), BaseMaterialInfo::getPlyrating, bo.getPlyrating())
.eq(StringUtils.isNotBlank(bo.getPattern()), BaseMaterialInfo::getPattern, bo.getPattern())
.eq(StringUtils.isNotBlank(bo.getSpeedLevel()), BaseMaterialInfo::getSpeedLevel, bo.getSpeedLevel())
.eq(StringUtils.isNotBlank(bo.getLoad()), BaseMaterialInfo::getLoad, bo.getLoad())
.eq(StringUtils.isNotBlank(bo.getTireMarkings()), BaseMaterialInfo::getTireMarkings, bo.getTireMarkings())
.eq(bo.getMinParkingTime() != null, BaseMaterialInfo::getMinParkingTime, bo.getMinParkingTime())
.eq(bo.getMaxParkingTime() != null, BaseMaterialInfo::getMaxParkingTime, bo.getMaxParkingTime())
.eq(bo.getStandardWeight() != null, BaseMaterialInfo::getStandardWeight, bo.getStandardWeight())
.eq(bo.getWeightUpperLimit() != null, BaseMaterialInfo::getWeightUpperLimit, bo.getWeightUpperLimit())
.eq(bo.getWeightLowerLimit() != null, BaseMaterialInfo::getWeightLowerLimit, bo.getWeightLowerLimit())
.eq(StringUtils.isNotBlank(bo.getInnerTubeFlag()), BaseMaterialInfo::getInnerTubeFlag, bo.getInnerTubeFlag())
.eq(StringUtils.isNotBlank(bo.getSaleType()), BaseMaterialInfo::getSaleType, bo.getSaleType())
.orderByDesc(BaseMaterialInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(BaseMaterialInfoBo bo) {
BaseMaterialInfo add = MapstructUtils.convert(bo, BaseMaterialInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setMaterialId(add.getMaterialId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(BaseMaterialInfoBo bo) {
BaseMaterialInfo update = MapstructUtils.convert(bo, BaseMaterialInfo.class);
validEntityBeforeSave(update);
//物料上的物料类型修改时 校验原类型是否关联的BOM
Long materialTypeId = bo.getMaterialTypeId();//修改后的物料类型id
//要修改的物料
Long materialId = bo.getMaterialId();
BaseMaterialInfoVo baseMaterialInfoVo = baseMapper.selectVoById(materialId);
//物料绑定的BOM
// MPJLambdaWrapper<ProdMaterialBom> bom = new MPJLambdaWrapper<>();
// bom.eq(ProdMaterialBom::getMaterialId, materialId);
// List<ProdMaterialBom> boms = prodMaterialBomMapper.selectList(bom);
// if ( !materialTypeId.equals(baseMaterialInfoVo.getMaterialTypeId())
// && !ObjectUtils.isEmpty(boms)) {
// throw new ServiceException("已绑定物料BOM请勿更改物料类型");
// }
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BaseMaterialInfo entity){
//TODO 做一些数据校验,如唯一约束
//编码校验
if (StringUtils.isNotBlank(entity.getMaterialCode())) {
BaseMaterialInfoBo query = new BaseMaterialInfoBo();
query.setMaterialCode(entity.getMaterialCode());
MPJLambdaWrapper<BaseMaterialInfo> lqw = buildQueryWrapper(query);
BaseMaterialInfo baseMaterialInfo = baseMapper.selectOne(lqw);
if (!ObjectUtils.isEmpty(baseMaterialInfo)
&& !baseMaterialInfo.getMaterialId().equals(entity.getMaterialId())) {
throw new ServiceException("编码已存在");
}
}
//名称校验
if (StringUtils.isNotBlank(entity.getMaterialName())) {
BaseMaterialInfoBo query = new BaseMaterialInfoBo();
query.setMaterialName(entity.getMaterialName());
MPJLambdaWrapper<BaseMaterialInfo> lqw = JoinWrappers.lambda(BaseMaterialInfo.class)
.selectAll(BaseMaterialInfo.class)
//buildQueryWrapper中getMaterialName是like相似搜索
.eq(StringUtils.isNotBlank(query.getMaterialName()), BaseMaterialInfo::getMaterialName, query.getMaterialName());
BaseMaterialInfo baseMaterialInfo = baseMapper.selectOne(lqw);
if ( !ObjectUtils.isEmpty(baseMaterialInfo)
&& !baseMaterialInfo.getMaterialId().equals(entity.getMaterialId())) {
throw new ServiceException("名称已存在");
}
}
}
/**
*
*
* @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,150 @@
package org.dromara.qms.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.BaseSupplierInfo;
import org.dromara.qms.domain.bo.BaseSupplierInfoBo;
import org.dromara.qms.domain.vo.BaseSupplierInfoVo;
import org.dromara.qms.mapper.BaseSupplierInfoMapper;
import org.dromara.qms.service.IBaseSupplierInfoService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author ZangCH
* @date 2025-01-07
*/
@RequiredArgsConstructor
@Service
public class BaseSupplierInfoServiceImpl implements IBaseSupplierInfoService {
private final BaseSupplierInfoMapper baseMapper;
/**
*
*
* @param supplierId
* @return
*/
@Override
public BaseSupplierInfoVo queryById(Long supplierId){
return baseMapper.selectVoById(supplierId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<BaseSupplierInfoVo> queryPageList(BaseSupplierInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<BaseSupplierInfo> lqw = buildQueryWrapper(bo);
Page<BaseSupplierInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<BaseSupplierInfoVo> queryList(BaseSupplierInfoBo bo) {
MPJLambdaWrapper<BaseSupplierInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<BaseSupplierInfo> buildQueryWrapper(BaseSupplierInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseSupplierInfo> lqw = JoinWrappers.lambda(BaseSupplierInfo.class)
.selectAll(BaseSupplierInfo.class)
.eq(bo.getSupplierId() != null, BaseSupplierInfo::getSupplierId, bo.getSupplierId())
.eq(StringUtils.isNotBlank(bo.getSupplierCode()), BaseSupplierInfo::getSupplierCode, bo.getSupplierCode())
.like(StringUtils.isNotBlank(bo.getSupplierName()), BaseSupplierInfo::getSupplierName, bo.getSupplierName())
.eq(bo.getErpId() != null, BaseSupplierInfo::getErpId, bo.getErpId())
.eq(StringUtils.isNotBlank(bo.getSupplierStatus()), BaseSupplierInfo::getSupplierStatus, bo.getSupplierStatus())
.between(params.get("beginAuditDate") != null && params.get("endAuditDate") != null,
BaseSupplierInfo::getAuditDate ,params.get("beginAuditDate"), params.get("endAuditDate"))
.between(params.get("beginErpModifyDate") != null && params.get("endErpModifyDate") != null,
BaseSupplierInfo::getErpModifyDate ,params.get("beginErpModifyDate"), params.get("endErpModifyDate"))
.orderByDesc(BaseSupplierInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(BaseSupplierInfoBo bo) {
BaseSupplierInfo add = MapstructUtils.convert(bo, BaseSupplierInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setSupplierId(add.getSupplierId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(BaseSupplierInfoBo bo) {
BaseSupplierInfo update = MapstructUtils.convert(bo, BaseSupplierInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BaseSupplierInfo entity){
//TODO 做一些数据校验,如唯一约束
//校验编码是否重复
if (StringUtils.isNotBlank(entity.getSupplierCode())) {
BaseSupplierInfoBo query = new BaseSupplierInfoBo();
query.setSupplierCode(entity.getSupplierCode());
MPJLambdaWrapper<BaseSupplierInfo> lqw = buildQueryWrapper(query);
BaseSupplierInfo baseSupplierInfo = baseMapper.selectOne(lqw);
if (baseSupplierInfo != null && !baseSupplierInfo.getSupplierId().equals(entity.getSupplierId())) {
throw new ServiceException("编码已存在");
}
}
}
/**
*
*
* @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,330 @@
package org.dromara.qms.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.qms.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.qms.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.qms.mapper.ProdBaseProcessInfoMapper;
import org.dromara.qms.service.IProdBaseProcessInfoService;
import org.dromara.qms.domain.ProdBaseProcessInfo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* Service
*
* @author Yinq
* @date 2025-01-06
*/
@RequiredArgsConstructor
@Service
public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoService {
private final ProdBaseProcessInfoMapper baseMapper;
// private final ProdBaseProcessUserServiceImpl prodBaseProcessUserService;
//
// private final ProdBaseProcessProdLineServiceImpl prodBaseProcessProdlineService;
//
// private final ProdBaseProcessUserMapper prodBaseProcessUserMapper;
// private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper;
//
// private final ProdBaseProcessResourceMapper processResourceMapper;
/**
*
*
* @param processId
* @return
*/
@Override
public ProdBaseProcessInfoVo queryById(Long processId) {
ProdBaseProcessInfoVo prodBaseProcessInfoVo = baseMapper.selectVoById(processId);
// if (ObjectUtil.isNotEmpty(prodBaseProcessInfoVo)) {
// // 关联人员
// ProdBaseProcessUserBo prodBaseProcessUserBo = new ProdBaseProcessUserBo();
// prodBaseProcessUserBo.setProcessId(processId);
// List<ProdBaseProcessUserVo> prodBaseProcessUserVoList = prodBaseProcessUserService.queryList(prodBaseProcessUserBo);
// // 关联人员若有数据则赋值给prodBaseProcessInfoVo
// if (ObjectUtil.isNotEmpty(prodBaseProcessUserVoList))
// prodBaseProcessInfoVo.setProdBaseProcessUserVoList(prodBaseProcessUserVoList);
//
// // 关联产线
// ProdBaseProcessProdLineBo prodBaseProcessProdlineBo = new ProdBaseProcessProdLineBo();
// prodBaseProcessProdlineBo.setProcessId(processId);
// List<ProdBaseProcessProdLineVo> prodBaseProcessProdlineVoList = prodBaseProcessProdlineService.queryList(prodBaseProcessProdlineBo);
// // 关联产线若有数据则赋值给prodBaseProcessInfoVo
// if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineVoList))
// prodBaseProcessInfoVo.setProdBaseProcessProdlineVoList(prodBaseProcessProdlineVoList);
// // 关联工序资源
// MPJLambdaWrapper<ProdBaseProcessResource> lqw = JoinWrappers.lambda(ProdBaseProcessResource.class);
// lqw.eq(ProdBaseProcessResource::getProcessId, processId);
// List<ProdBaseProcessResource> prodBaseProcessResourceList = processResourceMapper.selectList(lqw);
// prodBaseProcessInfoVo.setProdBaseProcessResourceList(prodBaseProcessResourceList);
// }
return prodBaseProcessInfoVo;
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ProdBaseProcessInfoVo> queryPageList(ProdBaseProcessInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = buildQueryWrapper(bo);
Page<ProdBaseProcessInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ProdBaseProcessInfoVo> queryList(ProdBaseProcessInfoBo bo) {
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ProdBaseProcessInfo> buildQueryWrapper(ProdBaseProcessInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = JoinWrappers.lambda(ProdBaseProcessInfo.class)
.selectAll(ProdBaseProcessInfo.class)
// .select(ProdBaseWorkshopInfo::getWorkshopName)
// .leftJoin(ProdBaseWorkshopInfo.class, ProdBaseWorkshopInfo::getWorkshopId, ProdBaseProcessInfo::getWorkshopId)
/* // 关联人员
.select(ProdBaseProcessUser::getUserId)
.select(ProdBaseProcessUser::getUserName)
.leftJoin(ProdBaseProcessUser.class, ProdBaseProcessUser::getProcessId, ProdBaseProcessInfo::getProcessId)
// 关联产线
.select(ProdBaseProcessProdLine::getProdLineId)
.leftJoin(ProdBaseProcessProdLine.class, ProdBaseProcessProdLine::getProcessId, ProdBaseProcessInfo::getProcessId)*/
.eq(bo.getProcessId() != null, ProdBaseProcessInfo::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getProcessCode()), ProdBaseProcessInfo::getProcessCode, bo.getProcessCode())
.like(StringUtils.isNotBlank(bo.getProcessName()), ProdBaseProcessInfo::getProcessName, bo.getProcessName())
.eq(StringUtils.isNotBlank(bo.getProcessType()), ProdBaseProcessInfo::getProcessType, bo.getProcessType())
.eq(bo.getProcessQueue() != null, ProdBaseProcessInfo::getProcessQueue, bo.getProcessQueue())
.eq(bo.getProductionTime() != null, ProdBaseProcessInfo::getProductionTime, bo.getProductionTime())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseProcessInfo::getActiveFlag, bo.getActiveFlag())
.orderByAsc(ProdBaseProcessInfo::getProcessQueue);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo add = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
// List<ProdBaseProcessResource> processResourceList = bo.getProdBaseProcessResourceList();
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setProcessId(add.getProcessId());
// if (!processResourceList.isEmpty()) {
// for (ProdBaseProcessResource processResource : processResourceList) {
// processResource.setProcessId(add.getProcessId());
// processResourceMapper.insert(processResource);
// }
// }
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
// String tenantId = LoginHelper.getTenantId();
// Long deptId = LoginHelper.getDeptId();
// Long userId = LoginHelper.getUserId();
// if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);
// if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);
// if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);
// update.setCreateTime(DateUtils.getNowDate());
validEntityBeforeSave(update);
// List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList();
// if (ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)) {
// List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
// update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList);
// }
baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId());
// try {
// insertProdBaseProcessProdline(update);
// } catch (Exception e) {
// throw new ServiceException("该工序已关联产线!");
// }
//更新工序关联资源
// List<ProdBaseProcessResource> processResourceList = bo.getProdBaseProcessResourceList();
// MPJLambdaWrapper<ProdBaseProcessResource> lqwRecord = JoinWrappers.lambda(ProdBaseProcessResource.class);
// lqwRecord.eq(ProdBaseProcessResource::getProcessId, bo.getProcessId());
// List<ProdBaseProcessResource> dataFieldList = processResourceMapper.selectList(lqwRecord);
// if (!processResourceList.isEmpty()) {
// for (ProdBaseProcessResource dataField : processResourceList) {
// processResourceMapper.insertOrUpdate(dataField);
// }
// Set<Long> existingIds = processResourceList.stream()
// .map(ProdBaseProcessResource::getProcessResourceId)
// .collect(Collectors.toSet());
// List<ProdBaseProcessResource> filteredIds = dataFieldList.stream()
// .filter(field -> !existingIds.contains(field.getProcessResourceId()))
// .toList();
// for (ProdBaseProcessResource dataField : filteredIds) {
// processResourceMapper.deleteById(dataField.getProcessResourceId());
// }
// }
return baseMapper.updateById(update) > 0;
}
/**
*
*
* @param bo
* @return
*/
@Transactional
@Override
public Boolean updateByBoUser(ProdBaseProcessInfoBo bo) {
ProdBaseProcessInfo update = MapstructUtils.convert(bo, ProdBaseProcessInfo.class);
String tenantId = LoginHelper.getTenantId();// 获取当前租户ID
Long deptId = LoginHelper.getDeptId();// 获取当前部门ID
Long userId = LoginHelper.getUserId();// 获取当前用户ID
if (ObjectUtil.isNotEmpty(tenantId)) update.setTenantId(tenantId);// 设置当前租户ID
if (ObjectUtil.isNotEmpty(deptId)) update.setCreateDept(deptId);// 设置当前部门ID
if (ObjectUtil.isNotEmpty(userId)) update.setCreateBy(userId);// 设置当前用户ID
update.setCreateTime(DateUtils.getNowDate());// 设置当前时间
validEntityBeforeSave(update);
// List<ProdBaseProcessUser> prodBaseProcessUserList = new ArrayList<>();
// List<ProdBaseProcessUserBo> prodBaseProcessUserBoList = bo.getProdBaseProcessUserBoList();
// if (ObjectUtil.isNotEmpty(prodBaseProcessUserBoList)) {
// prodBaseProcessUserList = MapstructUtils.convert(prodBaseProcessUserBoList, ProdBaseProcessUser.class);
// }
// baseMapper.deleteProdBaseProcessUserByProcessId(update.getProcessId());
// update.setProdBaseProcessUserList(prodBaseProcessUserList);
// try {
// insertProdBaseProcessUser(update);
// } catch (Exception e) {
// System.out.println(e.getMessage());
// throw new ServiceException("该工序已关联用户!");
// }
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ProdBaseProcessInfo entity) {
//TODO 做一些数据校验,如唯一约束
// 判断编码是否重复
if (StringUtils.isNotBlank(entity.getProcessCode())) {
ProdBaseProcessInfoBo query = new ProdBaseProcessInfoBo();
query.setProcessCode(entity.getProcessCode());
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = buildQueryWrapper(query);
ProdBaseProcessInfo prodBaseProcessInfo = baseMapper.selectOne(lqw);
if (prodBaseProcessInfo != null && !prodBaseProcessInfo.getProcessId().equals(entity.getProcessId())) {
throw new ServiceException("编码已存在");
}
}
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
// /**
// * 新增工序关联产线信息
// *
// * @param prodBaseProcessInfo 工序信息对象
// */
// public void insertProdBaseProcessProdline(ProdBaseProcessInfo prodBaseProcessInfo) {
// List<ProdBaseProcessProdLine> prodBaseProcessProdlineList = prodBaseProcessInfo.getProdBaseProcessProdlineList();
// Long processId = prodBaseProcessInfo.getProcessId();
// if (ObjectUtil.isNotNull(prodBaseProcessProdlineList)) {
// List<ProdBaseProcessProdLine> list = new ArrayList<ProdBaseProcessProdLine>();
// for (ProdBaseProcessProdLine prodBaseProcessProdline : prodBaseProcessProdlineList) {
// prodBaseProcessProdline.setCreateBy(prodBaseProcessInfo.getCreateBy());
// prodBaseProcessProdline.setCreateTime(prodBaseProcessInfo.getCreateTime());
// prodBaseProcessProdline.setCreateDept(prodBaseProcessInfo.getCreateDept());
// prodBaseProcessProdline.setTenantId(prodBaseProcessInfo.getTenantId());
// list.add(prodBaseProcessProdline);
// }
// if (!list.isEmpty()) {
// prodBaseProcessProdlineMapper.insertBatch(list);
// }
// }
// }
//
// /**
// * 新增工序关联用户信息
// *
// * @param prodBaseProcessInfo 工序信息对象
// */
// public void insertProdBaseProcessUser(ProdBaseProcessInfo prodBaseProcessInfo) {
// List<ProdBaseProcessUser> prodBaseProcessUserList = prodBaseProcessInfo.getProdBaseProcessUserList();
// Long processId = prodBaseProcessInfo.getProcessId();
// if (ObjectUtil.isNotNull(prodBaseProcessUserList)) {
// List<ProdBaseProcessUser> list = new ArrayList<ProdBaseProcessUser>();
// for (ProdBaseProcessUser prodBaseProcessUser : prodBaseProcessUserList) {
// prodBaseProcessUser.setCreateBy(prodBaseProcessInfo.getCreateBy());
// prodBaseProcessUser.setCreateTime(prodBaseProcessInfo.getCreateTime());
// prodBaseProcessUser.setCreateDept(prodBaseProcessInfo.getCreateDept());
// prodBaseProcessUser.setTenantId(prodBaseProcessInfo.getTenantId());
//
// list.add(prodBaseProcessUser);
// }
// if (!list.isEmpty()) {
// prodBaseProcessUserMapper.insertBatch(list);
// }
// }
// }
}

@ -0,0 +1,169 @@
package org.dromara.qms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.qms.domain.bo.ProdBaseStationInfoBo;
import org.dromara.qms.domain.vo.ProdBaseStationInfoVo;
import org.dromara.qms.mapper.ProdBaseStationInfoMapper;
import org.dromara.qms.service.IProdBaseStationInfoService;
import org.dromara.qms.domain.ProdBaseProcessInfo;
import org.dromara.qms.domain.ProdBaseStationInfo;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author Yinq
* @date 2025-01-06
*/
@RequiredArgsConstructor
@Service
public class ProdBaseStationInfoServiceImpl implements IProdBaseStationInfoService {
private final ProdBaseStationInfoMapper baseMapper;
// private final ProdBaseStationMaterialtypeMapper stationMaterialtypeMapper;
/**
*
*
* @param stationId
* @return
*/
@Override
public ProdBaseStationInfoVo queryById(Long stationId) {
ProdBaseStationInfoBo bo = new ProdBaseStationInfoBo();
bo.setStationId(stationId);
MPJLambdaWrapper<ProdBaseStationInfo> lqw = buildQueryWrapper(bo);
ProdBaseStationInfoVo prodBaseStationInfoVo = baseMapper.selectVoOne(lqw);
//机台关联工序
// MPJLambdaWrapper<ProdBaseStationMaterialtype> lqwRelation = JoinWrappers.lambda(ProdBaseStationMaterialtype.class)
// .selectAll(ProdBaseStationMaterialtype.class)
// .eq(bo.getStationId() != null, ProdBaseStationMaterialtype::getStationId, bo.getStationId())
// .orderByAsc(ProdBaseStationMaterialtype::getCreateTime);
// List<ProdBaseStationMaterialtype> prodBaseStationMaterialtypeList = stationMaterialtypeMapper.selectList(lqwRelation);
// prodBaseStationInfoVo.setProdBaseStationMaterialtypeList(prodBaseStationMaterialtypeList);
return prodBaseStationInfoVo;
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ProdBaseStationInfoVo> queryPageList(ProdBaseStationInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ProdBaseStationInfo> lqw = buildQueryWrapper(bo);
Page<ProdBaseStationInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ProdBaseStationInfoVo> queryList(ProdBaseStationInfoBo bo) {
MPJLambdaWrapper<ProdBaseStationInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ProdBaseStationInfo> buildQueryWrapper(ProdBaseStationInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdBaseStationInfo> lqw = JoinWrappers.lambda(ProdBaseStationInfo.class)
.selectAll(ProdBaseStationInfo.class)
.select(ProdBaseProcessInfo::getProcessName)
// .select(ProdBaseMachineInfo::getMachineName)
.leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, ProdBaseStationInfo::getProcessId)
// .leftJoin(ProdBaseMachineInfo.class, ProdBaseMachineInfo::getMachineId, ProdBaseStationInfo::getMachineId)
.eq(bo.getStationId() != null, ProdBaseStationInfo::getStationId, bo.getStationId())
.eq(StringUtils.isNotBlank(bo.getStationCode()), ProdBaseStationInfo::getStationCode, bo.getStationCode())
.like(StringUtils.isNotBlank(bo.getStationName()), ProdBaseStationInfo::getStationName, bo.getStationName())
.eq(StringUtils.isNotBlank(bo.getStationType()), ProdBaseStationInfo::getStationType, bo.getStationType())
.eq(bo.getProcessId() != null, ProdBaseStationInfo::getProcessId, bo.getProcessId())
.eq(bo.getMachineId() != null, ProdBaseStationInfo::getMachineId, bo.getMachineId())
.like(StringUtils.isNotBlank(bo.getAgvCode()), ProdBaseStationInfo::getAgvCode, bo.getAgvCode())
.like(StringUtils.isNotBlank(bo.getIpAddress()), ProdBaseStationInfo::getIpAddress, bo.getIpAddress())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ProdBaseStationInfo::getActiveFlag, bo.getActiveFlag())
.orderByAsc(ProdBaseStationInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ProdBaseStationInfoBo bo) {
ProdBaseStationInfo add = MapstructUtils.convert(bo, ProdBaseStationInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setStationId(add.getStationId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(ProdBaseStationInfoBo bo) {
ProdBaseStationInfo update = MapstructUtils.convert(bo, ProdBaseStationInfo.class);
validEntityBeforeSave(update);
// List<ProdBaseStationMaterialtype> prodBaseStationMaterialtypeList = bo.getProdBaseStationMaterialtypeList();
// if (!prodBaseStationMaterialtypeList.isEmpty()) {
// LambdaQueryWrapper<ProdBaseStationMaterialtype> lqw = Wrappers.lambdaQuery();
// lqw.eq(StringUtils.isNotNull(bo.getStationId()), ProdBaseStationMaterialtype::getStationId, bo.getStationId());
// stationMaterialtypeMapper.delete(lqw);
// for (ProdBaseStationMaterialtype stationMaterialType : prodBaseStationMaterialtypeList) {
// stationMaterialtypeMapper.insert(stationMaterialType);
// }
// }
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ProdBaseStationInfo entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @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,39 @@
<?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.qms.mapper.BaseMaterialInfoMapper">
<select id="queryByMaterialCode" resultType="org.dromara.pda.api.model.BaseMaterial">
select material_code,material_name from base_material_info where material_code = #{materialCode}
</select>
<select id="selectMaterialJoinList" parameterType="BaseMaterialInfoBo" resultType="BaseMaterialInfoVo">
select
bmi.material_id,
bmi.material_code,
bmi.material_name,
bmi.material_category_id,
bmi.material_type_id,
bmi.material_spec,
bmi.material_unit_id,
bmi.material_unit,
bmt.matrial_type_code as material_type_code,
bmt.matrial_type_name as material_type_name
from base_material_info bmi
left join base_material_type bmt on bmi.material_type_id = bmt.matrial_type_id
<where>
<if test="materialCode != null and materialCode != ''">and bmi.material_code like concat('%', #{materialCode},
'%')
</if>
<if test="materialName != null and materialName != ''">and bmi.material_name like concat('%', #{materialName},
'%')
</if>
<if test="materialTypeId != null ">and bmi.material_type_id = #{materialTypeId}</if>
</where>
order by bmi.material_id desc
</select>
</mapper>

@ -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.qms.mapper.BaseMaterialTypeMapper">
</mapper>

@ -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.qms.mapper.BaseSupplierInfoMapper">
</mapper>

@ -0,0 +1,189 @@
<?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.qms.mapper.ProdBaseProcessInfoMapper">
<resultMap type="ProdBaseProcessInfo" id="ProdBaseProcessInfoResult">
<result property="processId" column="process_id"/>
<result property="processCode" column="process_code"/>
<result property="processName" column="process_name"/>
<result property="processType" column="process_type"/>
<result property="processFloor" column="process_floor"/>
<result property="finalProcessFlag" column="final_process_flag"/>
<result property="displayFlag" column="display_flag"/>
<result property="productionTime" column="production_time"/>
<result property="activeFlag" column="active_flag"/>
<result property="remark" column="remark"/>
</resultMap>
<!-- <resultMap id="ProdBaseProcessInfoProdBaseProcessProdlineResult" type="ProdBaseProcessInfo"-->
<!-- extends="ProdBaseProcessInfoResult">-->
<!-- <collection property="prodBaseProcessProdlineList" notNullColumn="sub_process_id" javaType="java.util.List"-->
<!-- resultMap="ProdBaseProcessProdlineResult"/>-->
<!-- </resultMap>-->
<!-- <resultMap type="ProdBaseProcessProdline" id="ProdBaseProcessProdlineResult">-->
<!-- <result property="processId" column="sub_process_id"/>-->
<!-- <result property="prodlineId" column="sub_prod_line_id"/>-->
<!-- <result property="createBy" column="sub_create_by"/>-->
<!-- <result property="createTime" column="sub_create_time"/>-->
<!-- </resultMap>-->
<!-- <resultMap id="ProdBaseProcessInfoProdBaseProcessUserResult" type="ProdBaseProcessInfo"
extends="ProdBaseProcessInfoResult">
<collection property="prodBaseProcessUserList" notNullColumn="sub_process_id" javaType="java.util.List"
resultMap="ProdBaseProcessUserResult"/>
</resultMap> -->
<!-- <resultMap type="ProdBaseProcessUser" id="ProdBaseProcessUserResult">
<result property="processId" column="sub_process_id"/>
<result property="userId" column="sub_user_id"/>
<result property="userName" column="sub_user_name"/>
<result property="createBy" column="sub_create_by"/>
<result property="createTime" column="sub_create_time"/>
</resultMap> -->
<sql id="selectProdBaseProcessInfoVo">
select process_id,
process_code,
process_name,
process_type,
process_floor,
production_time,
active_flag,
remark,
create_by,
create_time,
update_by,
update_time,
tenant_id
from prod_base_process_info
</sql>
<select id="selectProdBaseProcessInfoList" parameterType="ProdBaseProcessInfo" resultMap="ProdBaseProcessInfoResult">
<include refid="selectProdBaseProcessInfoVo"/>
<where>
<if test="processCode != null and processCode != ''">and process_code = #{processCode}</if>
<if test="processName != null and processName != ''">and process_name like concat('%', #{processName},
'%')
</if>
<if test="processType != null and processType != ''">and process_type = #{processType}</if>
<if test="productionTime != null ">and production_time = #{productionTime}</if>
<if test="displayFlag != null and displayFlag != ''">and display_flag = #{displayFlag}</if>
<if test="activeFlag != null and activeFlag != ''">and active_flag = #{activeFlag}</if>
<if test="remark != null and remark != ''">and remark = #{remark}</if>
<if test="tenantId != null and tenantId != ''">tenant_id = #{tenantId}</if>
</where>
</select>
<!-- <select id="selectProdBaseProcessInfoByProcessId" parameterType="Long"-->
<!-- resultMap="ProdBaseProcessInfoProdBaseProcessProdlineResult">-->
<!-- select a.process_id,-->
<!-- a.process_code,-->
<!-- a.process_name,-->
<!-- a.process_type,-->
<!-- a.process_floor,-->
<!-- a.production_time,-->
<!-- a.active_flag,-->
<!-- a.remark,-->
<!-- a.create_by,-->
<!-- a.create_time,-->
<!-- a.update_by,-->
<!-- a.update_time,-->
<!-- a.tenant_id,-->
<!-- b.process_id as sub_process_id,-->
<!-- b.prod_line_id as sub_prod_line_id,-->
<!-- b.create_by as sub_create_by,-->
<!-- b.create_time as sub_create_time-->
<!-- from prod_base_process_info a-->
<!-- left join prod_base_process_prod_line b on b.process_id = a.process_id-->
<!-- where a.process_id = #{processId}-->
<!-- </select>-->
<insert id="insertProdBaseProcessInfo" parameterType="ProdBaseProcessInfo" useGeneratedKeys="true"
keyProperty="processId">
insert into prod_base_process_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="processCode != null">process_code,</if>
<if test="processName != null and processName != ''">process_name,</if>
<if test="processType != null and processType != ''">process_type,</if>
<if test="processFloor != null and processFloor != ''">process_floor,</if>
<if test="productionTime != null">production_time,</if>
<if test="activeFlag != null and activeFlag != ''">active_flag,</if>
<if test="remark != null">remark,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="tenantId != null">tenant_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="processCode != null">#{processCode},</if>
<if test="processName != null and processName != ''">#{processName},</if>
<if test="processType != null and processType != ''">#{processType},</if>
<if test="processFloor != null and processFloor != ''">#{processFloor},</if>
<if test="productionTime != null">#{productionTime},</if>
<if test="activeFlag != null and activeFlag != ''">#{activeFlag},</if>
<if test="remark != null">#{remark},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="tenantId != null">#{tenantId},</if>
</trim>
</insert>
<update id="updateProdBaseProcessInfo" parameterType="ProdBaseProcessInfo">
update prod_base_process_info
<trim prefix="SET" suffixOverrides=",">
<if test="processCode != null">process_code = #{processCode},</if>
<if test="processName != null and processName != ''">process_name = #{processName},</if>
<if test="processType != null and processType != ''">process_type = #{processType},</if>
<if test="processFloor != null and processFloor != ''">process_floor = #{processFloor},</if>
<if test="productionTime != null">production_time = #{productionTime},</if>
<if test="activeFlag != null and activeFlag != ''">active_flag = #{activeFlag},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="tenantId != null ">tenant_id = #{tenantId},</if>
</trim>
where process_id = #{processId}
</update>
<delete id="deleteProdBaseProcessInfoByProcessId" parameterType="Long">
delete
from prod_base_process_info
where process_id = #{processId}
</delete>
<delete id="deleteProdBaseProcessInfoByProcessIds" parameterType="String">
delete from prod_base_process_info where process_id in
<foreach item="processId" collection="array" open="(" separator="," close=")">
#{processId}
</foreach>
</delete>
<delete id="deleteProdBaseProcessProdlineByProcessIds" parameterType="String">
delete from prod_base_process_prod_line where process_id in
<foreach item="processId" collection="array" open="(" separator="," close=")">
#{processId}
</foreach>
</delete>
<delete id="deleteProdBaseProcessProdlineByProcessId" parameterType="Long">
delete
from prod_base_process_prod_line
where process_id = #{processId}
</delete>
</mapper>

@ -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.qms.mapper.ProdBaseStationInfoMapper">
</mapper>
Loading…
Cancel
Save