Merge remote-tracking branch 'origin/master'

hwmom-htk
wanghao 1 year ago
commit da15441b90

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hwmom-common-mom</artifactId>
<description>
hwmom-common-mom 通用功能
</description>
<dependencies>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-satoken</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-json</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,43 @@
package org.dromara.common.annotation;
import org.dromara.common.enums.OperatorType;
import java.lang.annotation.*;
/**
*
*
* @author xins
*/
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataSyncPublish {
/**
*
*/
String tableName() default "";
/**
*
*/
OperatorType operatorType() default OperatorType.INSERT;
// /**
// * 是否保存请求的参数
// */
// boolean isSaveRequestData() default true;
//
// /**
// * 是否保存响应的参数
// */
// boolean isSaveResponseData() default true;
//
//
// /**
// * 排除指定的请求参数
// */
// String[] excludeParamNames() default {};
}

@ -0,0 +1,215 @@
package org.dromara.common.aspect;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.StopWatch;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.dromara.common.annotation.DataSyncPublish;
import org.dromara.common.json.utils.JsonUtils;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.validation.BindingResult;
import org.springframework.web.multipart.MultipartFile;
import java.util.Collection;
import java.util.Map;
import java.util.StringJoiner;
/**
*
*
* @author xins
*/
@Slf4j
@Aspect
@AutoConfiguration
public class DataSyncPublishAspect {
/**
*
*/
public static final String[] EXCLUDE_PROPERTIES = { "password", "oldPassword", "newPassword", "confirmPassword" };
/**
* key
*/
private static final ThreadLocal<StopWatch> KEY_CACHE = new ThreadLocal<>();
/**
*
*/
@Before(value = "@annotation(dataSyncPublish)")
public void doBefore(JoinPoint joinPoint, DataSyncPublish dataSyncPublish) {
StopWatch stopWatch = new StopWatch();
KEY_CACHE.set(stopWatch);
stopWatch.start();
}
/**
*
*
* @param joinPoint
*/
@AfterReturning(pointcut = "@annotation(dataSyncPublish)", returning = "jsonResult")
public void doAfterReturning(JoinPoint joinPoint, DataSyncPublish dataSyncPublish, Object jsonResult) {
handleDataSyncPublish(joinPoint, dataSyncPublish, null, jsonResult);
}
/**
*
*
* @param joinPoint
* @param e
*/
@AfterThrowing(value = "@annotation(dataSyncPublish)", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, DataSyncPublish dataSyncPublish, Exception e) {
handleDataSyncPublish(joinPoint, dataSyncPublish, e, null);
}
protected void handleDataSyncPublish(final JoinPoint joinPoint, DataSyncPublish dataSyncPublish, final Exception e, Object jsonResult) {
try {
System.out.println("dbname:"+dataSyncPublish.tableName());
System.out.println("operationType:"+dataSyncPublish.operatorType().ordinal());
String params = this.argsArrayToString(joinPoint.getArgs());
System.out.println("params:"+params);
// // *========数据库日志=========*//
// OperLogEvent operLog = new OperLogEvent();
// operLog.setTenantId(LoginHelper.getTenantId());
// operLog.setStatus(BusinessStatus.SUCCESS.ordinal());
// // 请求的地址
// String ip = ServletUtils.getClientIP();
// operLog.setOperIp(ip);
// operLog.setOperUrl(StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255));
// LoginUser loginUser = LoginHelper.getLoginUser();
// operLog.setOperName(loginUser.getUsername());
// operLog.setDeptName(loginUser.getDeptName());
//
// if (e != null) {
// operLog.setStatus(BusinessStatus.FAIL.ordinal());
// operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
// }
// // 设置方法名称
// String className = joinPoint.getTarget().getClass().getName();
// String methodName = joinPoint.getSignature().getName();
// operLog.setMethod(className + "." + methodName + "()");
// // 设置请求方式
// operLog.setRequestMethod(ServletUtils.getRequest().getMethod());
// // 处理设置注解上的参数
// getControllerMethodDescription(joinPoint, controllerLog, operLog, jsonResult);
// // 设置消耗时间
// StopWatch stopWatch = KEY_CACHE.get();
// stopWatch.stop();
// operLog.setCostTime(stopWatch.getTime());
// // 发布事件保存数据库
// SpringUtils.context().publishEvent(operLog);
} catch (Exception exp) {
// 记录本地异常日志
log.error("异常信息:{}", exp.getMessage());
exp.printStackTrace();
} finally {
KEY_CACHE.remove();
}
}
/**
* Controller
*
* @param log
* @param operLog
* @throws Exception
*/
// public void getControllerMethodDescription(JoinPoint joinPoint, DataSyncPublish dataSyncPublish, Object jsonResult) throws Exception {
// // 设置action动作
// operLog.setBusinessType(log.businessType().ordinal());
// // 设置标题
// operLog.setTitle(log.title());
// // 设置操作人类别
// operLog.setOperatorType(log.operatorType().ordinal());
// // 是否需要保存request参数和值
// if (log.isSaveRequestData()) {
// // 获取参数的信息,传入到数据库中。
// setRequestValue(joinPoint, operLog, log.excludeParamNames());
// }
// // 是否需要保存response参数和值
// if (log.isSaveResponseData() && ObjectUtil.isNotNull(jsonResult)) {
// operLog.setJsonResult(StringUtils.substring(JsonUtils.toJsonString(jsonResult), 0, 2000));
// }
// }
/**
* log
*
* @param operLog
* @throws Exception
*/
// private void setRequestValue(JoinPoint joinPoint, OperLogEvent operLog, String[] excludeParamNames) throws Exception {
// Map<String, String> paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest());
// String requestMethod = operLog.getRequestMethod();
// if (MapUtil.isEmpty(paramsMap) && StringUtils.equalsAny(requestMethod, HttpMethod.PUT.name(), HttpMethod.POST.name(), HttpMethod.DELETE.name())) {
// String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames);
// operLog.setOperParam(StringUtils.substring(params, 0, 2000));
// } else {
// MapUtil.removeAny(paramsMap, EXCLUDE_PROPERTIES);
// MapUtil.removeAny(paramsMap, excludeParamNames);
// operLog.setOperParam(StringUtils.substring(JsonUtils.toJsonString(paramsMap), 0, 2000));
// }
// }
/**
*
*/
private String argsArrayToString(Object[] paramsArray) {
StringJoiner params = new StringJoiner(" ");
if (ArrayUtil.isEmpty(paramsArray)) {
return params.toString();
}
for (Object o : paramsArray) {
if (ObjectUtil.isNotNull(o) && !isFilterObject(o)) {
String str = JsonUtils.toJsonString(o);
Dict dict = JsonUtils.parseMap(str);
if (MapUtil.isNotEmpty(dict)) {
MapUtil.removeAny(dict, EXCLUDE_PROPERTIES);
str = JsonUtils.toJsonString(dict);
}
params.add(str);
}
}
return params.toString();
}
/**
*
*
* @param o
* @return truefalse
*/
@SuppressWarnings("rawtypes")
public boolean isFilterObject(final Object o) {
Class<?> clazz = o.getClass();
if (clazz.isArray()) {
return MultipartFile.class.isAssignableFrom(clazz.getComponentType());
} else if (Collection.class.isAssignableFrom(clazz)) {
Collection collection = (Collection) o;
for (Object value : collection) {
return value instanceof MultipartFile;
}
} else if (Map.class.isAssignableFrom(clazz)) {
Map map = (Map) o;
for (Object value : map.values()) {
return value instanceof MultipartFile;
}
}
return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse
|| o instanceof BindingResult;
}
}

@ -0,0 +1,23 @@
package org.dromara.common.enums;
/**
*
*
* @author xins
*/
public enum OperatorType {
/**
*
*/
INSERT,
/**
*
*/
UPDATE,
/**
*
*/
DELETE
}

@ -0,0 +1,34 @@
package org.dromara.common.event;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
*
*
* @author xins
*/
@Data
public class DataSyncPublishEvent implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private String tableName;
/**
*
*/
private String operationType;
/**
* createtimeupdatetime
*/
private String filterTime;
}

@ -0,0 +1,29 @@
package org.dromara.common.event;
import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.system.api.RemoteLogService;
import org.dromara.system.api.domain.bo.RemoteOperLogBo;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class DataSyncPublishListener {
@DubboReference
private RemoteLogService remoteLogService;
/**
*
*/
@EventListener
public void dataSyncPublish(DataSyncPublishEvent dataSyncPublishEvent) {
// tableName,类型时间删除的id
}
}

@ -0,0 +1,2 @@
org.dromara.common.aspect.DataSyncPublishAspect
org.dromara.common.event.DataSyncPublishListener

@ -45,6 +45,7 @@
<module>ruoyi-common-nacos</module>
<module>ruoyi-common-bus</module>
<module>ruoyi-common-sse</module>
<module>hwmom-common-mom</module>
</modules>
<artifactId>ruoyi-common</artifactId>

@ -45,4 +45,7 @@ public @interface Log {
*/
String[] excludeParamNames() default {};
String tableName() default "";
}

@ -113,7 +113,13 @@ public class LogAspect {
// 设置消耗时间
StopWatch stopWatch = KEY_CACHE.get();
stopWatch.stop();
operLog.setCostTime(stopWatch.getTime());
operLog.setCostTime(stopWatch.getTime());//毫秒1毫秒=1000000纳秒nano
operLog.setSimpleClassName(joinPoint.getTarget().getClass().getSimpleName());
operLog.setTableName(controllerLog.tableName());
// 发布事件保存数据库
SpringUtils.context().publishEvent(operLog);
} catch (Exception exp) {

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
import com.alibaba.fastjson2.JSONObject;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@ -11,6 +12,9 @@ import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ip.AddressUtils;
import org.dromara.common.log.enums.BusinessStatus;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.api.RemoteClientService;
import org.dromara.system.api.RemoteLogService;
@ -20,6 +24,10 @@ import org.dromara.system.api.domain.vo.RemoteClientVo;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
*
*
@ -34,6 +42,11 @@ public class LogEventListener {
@DubboReference
private RemoteClientService remoteClientService;
public static final Map<String, String> TABLE_ID_MAP = new HashMap<>();
static {
TABLE_ID_MAP.put("base_class_team_info", "class_team_id");
}
/**
*
*/
@ -41,6 +54,45 @@ public class LogEventListener {
public void saveLog(OperLogEvent operLogEvent) {
RemoteOperLogBo sysOperLog = BeanUtil.toBean(operLogEvent, RemoteOperLogBo.class);
remoteLogService.saveLog(sysOperLog);
this.dataSyncPublish(operLogEvent);
}
private void dataSyncPublish(OperLogEvent operLogEvent) {
/**
* redis
*/
Integer status = operLogEvent.getStatus();
Integer businessType = operLogEvent.getBusinessType();
if (status.equals(BusinessStatus.SUCCESS.ordinal())
&& !businessType.equals(BusinessType.OTHER.ordinal()) && !businessType.equals(BusinessType.EXPORT.ordinal())
&& !businessType.equals(BusinessType.GENCODE.ordinal()) && !businessType.equals(BusinessType.FORCE.ordinal())) {
JSONObject daySyncPublishJson = new JSONObject();
String tableName = operLogEvent.getTableName();
if (StringUtils.isEmpty(tableName)) {
String simpleClassName = operLogEvent.getSimpleClassName();
simpleClassName = simpleClassName.replaceFirst("Controller", "");
tableName = camelToSnake(simpleClassName);
}
long costTime = operLogEvent.getCostTime();
long filterTimeL = System.currentTimeMillis() - costTime - 60000;//多减1分钟
daySyncPublishJson.put("tableName", "["+tableName+"]");
daySyncPublishJson.put("filterTime", filterTimeL);
daySyncPublishJson.put("businessType", operLogEvent.getBusinessType());
if (businessType.equals(BusinessType.DELETE.ordinal())) {
String tableId = TABLE_ID_MAP.get(tableName);
if (StringUtils.isNotEmpty(tableId)) {
daySyncPublishJson.put(tableId, operLogEvent.getOperParam());
}
}
RedisUtils.setCacheObject("publish", daySyncPublishJson.toString());
}
}
/**
@ -100,4 +152,31 @@ public class LogEventListener {
return "[" + msg + "]";
}
public static String camelToSnake(String str) {
if (str == null || str.isEmpty()) {
return str;
}
StringBuilder result = new StringBuilder();
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char ch = charArray[i];
if (Character.isUpperCase(ch)) {
// 如果不是字符串的第一个字符,则在前面加上下划线
if (i != 0) {
result.append("_");
}
// 将大写字母转为小写并追加到结果中
result.append(Character.toLowerCase(ch));
} else {
// 直接追加非大写的字符
result.append(ch);
}
}
return result.toString();
}
}

@ -112,4 +112,15 @@ public class OperLogEvent implements Serializable {
*
*/
private Long costTime;
/**
* package
*/
private String simpleClassName;
/**
*
*/
private String tableName;
}

@ -114,4 +114,14 @@ public class BaseClassTeamInfoController extends BaseController {
public R<List<BaseClassTeamInfoVo>>selectClassTeamList(BaseClassTeamInfoBo bo, PageQuery pageQuery) {
return R.ok(baseClassTeamInfoService.queryList(bo));
}
/**
*
*/
@GetMapping("getBaseClassTeamInfoList")
public R<List<BaseClassTeamInfoVo>> getBaseClassTeamInfolist(BaseClassTeamInfoBo bo) {
List<BaseClassTeamInfoVo> list = baseClassTeamInfoService.queryList(bo);
return R.ok(list);
}
}

@ -110,7 +110,7 @@ public class BaseMaterialInfoController extends BaseController {
*/
@GetMapping("getBaseMaterialInfoList")
public R<List<BaseMaterialInfoVo>> getBaseMaterialInfolist(BaseMaterialInfoBo bo) {
public R<List<BaseMaterialInfoVo>> getBaseMaterialInfoList(BaseMaterialInfoBo bo) {
List<BaseMaterialInfoVo> list = baseMaterialInfoService.queryList(bo);
return R.ok(list);
}

@ -95,11 +95,22 @@ public class ProdBaseProcessInfoController extends BaseController {
@SaCheckPermission("mes:baseProcessInfo:edit")
@Log(title = "工序信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
@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));
}
/**
*
*

@ -0,0 +1,117 @@
package org.dromara.mes.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.mes.service.IProdBaseProcessProdLineService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 线
* 访:/mes/prodBaseProcessProdLine
*
* @author LionLi
* @date 2025-01-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/prodBaseProcessProdLine")
public class ProdBaseProcessProdLineController extends BaseController {
private final IProdBaseProcessProdLineService prodBaseProcessProdLineService;
/**
* 线
*/
@SaCheckPermission("mes:prodBaseProcessProdLine:list")
@GetMapping("/list")
public TableDataInfo<ProdBaseProcessProdLineVo> list(ProdBaseProcessProdLineBo bo, PageQuery pageQuery) {
return prodBaseProcessProdLineService.queryPageList(bo, pageQuery);
}
/**
* 线
*/
@SaCheckPermission("mes:prodBaseProcessProdLine:export")
@Log(title = "工序关联产线", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProdBaseProcessProdLineBo bo, HttpServletResponse response) {
List<ProdBaseProcessProdLineVo> list = prodBaseProcessProdLineService.queryList(bo);
ExcelUtil.exportExcel(list, "工序关联产线", ProdBaseProcessProdLineVo.class, response);
}
/**
* 线
*
* @param processId
*/
@SaCheckPermission("mes:prodBaseProcessProdLine:query")
@GetMapping("/{processId}")
public R<ProdBaseProcessProdLineVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long processId) {
return R.ok(prodBaseProcessProdLineService.queryById(processId));
}
/**
* 线
*/
@SaCheckPermission("mes:prodBaseProcessProdLine:add")
@Log(title = "工序关联产线", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProdBaseProcessProdLineBo bo) {
return toAjax(prodBaseProcessProdLineService.insertByBo(bo));
}
/**
* 线
*/
@SaCheckPermission("mes:prodBaseProcessProdLine:edit")
@Log(title = "工序关联产线", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessProdLineBo bo) {
return toAjax(prodBaseProcessProdLineService.updateByBo(bo));
}
/**
* 线
*
* @param processIds
*/
@SaCheckPermission("mes:prodBaseProcessProdLine:remove")
@Log(title = "工序关联产线", businessType = BusinessType.DELETE)
@DeleteMapping("/{processIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] processIds) {
return toAjax(prodBaseProcessProdLineService.deleteWithValidByIds(List.of(processIds), true));
}
/**
* 线
*/
@GetMapping("getProdBaseProcessProdLineList")
public R<List<ProdBaseProcessProdLineVo>> getProdBaseProcessProdLinelist(ProdBaseProcessProdLineBo bo) {
List<ProdBaseProcessProdLineVo> list = prodBaseProcessProdLineService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,117 @@
package org.dromara.mes.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.service.IProdBaseProcessUserService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/mes/prodBaseProcessUser
*
* @author zangch
* @date 2025-01-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/prodBaseProcessUser")
public class ProdBaseProcessUserController extends BaseController {
private final IProdBaseProcessUserService prodBaseProcessUserService;
/**
*
*/
@SaCheckPermission("mes:prodBaseProcessUser:list")
@GetMapping("/list")
public TableDataInfo<ProdBaseProcessUserVo> list(ProdBaseProcessUserBo bo, PageQuery pageQuery) {
return prodBaseProcessUserService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("mes:prodBaseProcessUser:export")
@Log(title = "工序关联人员", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProdBaseProcessUserBo bo, HttpServletResponse response) {
List<ProdBaseProcessUserVo> list = prodBaseProcessUserService.queryList(bo);
ExcelUtil.exportExcel(list, "工序关联人员", ProdBaseProcessUserVo.class, response);
}
/**
*
*
* @param processId
*/
@SaCheckPermission("mes:prodBaseProcessUser:query")
@GetMapping("/{processId}")
public R<ProdBaseProcessUserVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long processId) {
return R.ok(prodBaseProcessUserService.queryById(processId));
}
/**
*
*/
@SaCheckPermission("mes:prodBaseProcessUser:add")
@Log(title = "工序关联人员", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProdBaseProcessUserBo bo) {
return toAjax(prodBaseProcessUserService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("mes:prodBaseProcessUser:edit")
@Log(title = "工序关联人员", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProdBaseProcessUserBo bo) {
return toAjax(prodBaseProcessUserService.updateByBo(bo));
}
/**
*
*
* @param processIds
*/
@SaCheckPermission("mes:prodBaseProcessUser:remove")
@Log(title = "工序关联人员", businessType = BusinessType.DELETE)
@DeleteMapping("/{processIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] processIds) {
return toAjax(prodBaseProcessUserService.deleteWithValidByIds(List.of(processIds), true));
}
/**
*
*/
@GetMapping("getProdBaseProcessUserList")
public R<List<ProdBaseProcessUserVo>> getProdBaseProcessUserlist(ProdBaseProcessUserBo bo) {
List<ProdBaseProcessUserVo> list = prodBaseProcessUserService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,117 @@
package org.dromara.mes.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.service.IProdOrderInfoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/mes/orderInfo
*
* @author Yinq
* @date 2025-01-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/orderInfo")
public class ProdOrderInfoController extends BaseController {
private final IProdOrderInfoService prodOrderInfoService;
/**
*
*/
@SaCheckPermission("mes:orderInfo:list")
@GetMapping("/list")
public TableDataInfo<ProdOrderInfoVo> list(ProdOrderInfoBo bo, PageQuery pageQuery) {
return prodOrderInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("mes:orderInfo:export")
@Log(title = "生产订单信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProdOrderInfoBo bo, HttpServletResponse response) {
List<ProdOrderInfoVo> list = prodOrderInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "生产订单信息", ProdOrderInfoVo.class, response);
}
/**
*
*
* @param productOrderId
*/
@SaCheckPermission("mes:orderInfo:query")
@GetMapping("/{productOrderId}")
public R<ProdOrderInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long productOrderId) {
return R.ok(prodOrderInfoService.queryById(productOrderId));
}
/**
*
*/
@SaCheckPermission("mes:orderInfo:add")
@Log(title = "生产订单信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ProdOrderInfoBo bo) {
return toAjax(prodOrderInfoService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("mes:orderInfo:edit")
@Log(title = "生产订单信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProdOrderInfoBo bo) {
return toAjax(prodOrderInfoService.updateByBo(bo));
}
/**
*
*
* @param productOrderIds
*/
@SaCheckPermission("mes:orderInfo:remove")
@Log(title = "生产订单信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{productOrderIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] productOrderIds) {
return toAjax(prodOrderInfoService.deleteWithValidByIds(List.of(productOrderIds), true));
}
/**
*
*/
@GetMapping("getProdOrderInfoList")
public R<List<ProdOrderInfoVo>> getProdOrderInfolist(ProdOrderInfoBo bo) {
List<ProdOrderInfoVo> list = prodOrderInfoService.queryList(bo);
return R.ok(list);
}
}

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

@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.List;
/**
* prod_base_process_info
@ -62,5 +63,18 @@ public class ProdBaseProcessInfo extends TenantEntity {
*/
private String remark;
/**
* 线
*/
@TableField(exist = false)
private List<ProdBaseProcessProdLine> prodBaseProcessProdlineList;//工序关联产线信息,映射字段
/** 工序关联人员信息 */
@TableField(exist = false)
private List<ProdBaseProcessUser> prodBaseProcessUserList;//工序关联人员信息,映射字段
@TableField(exist = false)
private String processPercentage;//映射字段
}

@ -0,0 +1,69 @@
package org.dromara.mes.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 线 prod_base_process_prod_line
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode()
@TableName("prod_base_process_prod_line")
public class ProdBaseProcessProdLine {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long processId;
/**
* 线ID
*/
private Long prodLineId;
/*删除继承BaseEntity*/
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createDept;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
private String tenantId;
}

@ -0,0 +1,73 @@
package org.dromara.mes.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* prod_base_process_user
*
* @author zangch
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode()
@TableName("prod_base_process_user")
public class ProdBaseProcessUser {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
private Long processId;
/**
* ID
*/
private Long userId;
/**
*
*/
private String userName;
/*删除继承BaseEntity*/
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createDept;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
private String tenantId;
}

@ -0,0 +1,168 @@
package org.dromara.mes.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* prod_order_info
*
* @author Yinq
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("prod_order_info")
public class ProdOrderInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "product_order_id", type = IdType.AUTO)
private Long productOrderId;
/**
*
*/
private String orderCode;
/**
* ID
*/
private Long saleOrderId;
/**
*
*/
private String projectNo;
/**
* 1 2)
*/
private String orderType;
/**
* ID
*/
private Long materialId;
/**
* BOM_ID;bom
*/
private Long materialBomId;
/**
* (1线 2线 3)
*/
private String dispatchType;
/**
* ID;线线线线
*/
private Long dispatchId;
/**
* ;
*/
private Long saleAmount;
/**
*
*/
private Date planDeliveryDate;
/**
*
*/
private Long planAmount;
/**
* ;线线
*/
private Long dispatchAmount;
/**
*
*/
private Long completeAmount;
/**
*
*/
private Date releaseTime;
/**
*
*/
private Date planBeginTime;
/**
*
*/
private Date planEndTime;
/**
*
*/
private Date realBeginTime;
/**
*
*/
private Date realEndTime;
/**
* 0 1 2 3 4 8 9
*/
private String orderStatus;
/**
* 1 0
*/
private String stockLockFlag;
/**
* ID
*/
private Long preOrderId;
/**
*
*/
private String preOrderCode;
/**
* 0 1 2
*/
private String finishFlag;
/**
* 1 0
*/
private String releaseFlag;
/**
*
*/
private String orderVersion;
/**
* ID
*/
private Long factoryId;
/**
*
*/
private String remark;
}

@ -0,0 +1,183 @@
package org.dromara.mes.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* prod_plan_info
*
* @author Yinq
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("prod_plan_info")
public class ProdPlanInfo extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "plan_id", type = IdType.AUTO)
private Long planId;
/**
* ID
*/
private Long productOrderId;
/**
* ID
*/
private Long saleOrderId;
/**
*
*/
private String saleorderCode;
/**
*
*/
private String planCode;
/**
*
*/
private String dispatchCode;
/**
* ID;ID
*/
private Long materialId;
/**
* BOM_ID
*/
private Long materialBomId;
/**
* ID
*/
private Long processId;
/**
* ;线
*/
private Long processOrder;
/**
* ID
*/
private Long lastProcessId;
/**
* (1 0)
*/
private String finalProcessFlag;
/**
* (1 2 3)
*/
private String releaseType;
/**
* ID;
*/
private Long releaseId;
/**
* ()
*/
private Long productionTime;
/**
*
*/
private Long planAmount;
/**
*
*/
private Long dispatchAmount;
/**
*
*/
private Long completeAmount;
/**
*
*/
private Date planBeginTime;
/**
*
*/
private Date planEndTime;
/**
*
*/
private Date realBeginTime;
/**
*
*/
private Date realEndTime;
/**
* ;,
*/
private String attachId;
/**
* 0 1 2 3
*/
private String planStatus;
/**
* 0 1ERP
*/
private String importFlag;
/**
* 0 1 2
*/
private String finishFlag;
/**
*
*/
private Long priority;
/**
* ID
*/
private Long shiftId;
/**
* ID
*/
private Long classTeamId;
/**
* L R
*/
private String modelCode;
/**
*
*/
private String remark;
}

@ -30,7 +30,7 @@ public class BaseMaterialInfoBo extends BaseEntity {
/**
* ERP
*/
@NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })
/* @NotBlank(message = "ERP信息不能为空", groups = { AddGroup.class, EditGroup.class })*/
private String erpId;
/**

@ -1,5 +1,6 @@
package org.dromara.mes.domain.bo;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -8,6 +9,10 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import java.util.List;
/**
* prod_base_process_info
@ -65,4 +70,14 @@ public class ProdBaseProcessInfoBo extends BaseEntity {
private String remark;
/**
* 线
*/
private List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList;//工序关联产线信息,映射字段
/** 工序关联人员信息 */
private List<ProdBaseProcessUserBo> prodBaseProcessUserBoList;//工序关联人员信息,映射字段
private String processPercentageBo;//映射字段
}

@ -0,0 +1,83 @@
package org.dromara.mes.domain.bo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 线 prod_base_process_prod_line
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode()
@AutoMapper(target = ProdBaseProcessProdLine.class, reverseConvertGenerate = false)
public class ProdBaseProcessProdLineBo {
/**
* ID
*/
@NotNull(message = "工序ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long processId;
/**
* 线ID
*/
@NotNull(message = "所属产线ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long prodLineId;
/**
*
*/
@JsonIgnore
@TableField(exist = false)
private String searchValue;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createDept;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
/**
*
*/
@TableField(exist = false)
private String tenantId;
}

@ -0,0 +1,81 @@
package org.dromara.mes.domain.bo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* prod_base_process_user
*
* @author zangch
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode()
@AutoMapper(target = ProdBaseProcessUser.class, reverseConvertGenerate = false)
public class ProdBaseProcessUserBo {
/**
* ID
*/
@NotNull(message = "工序ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long processId;
/**
* ID
*/
@NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long userId;
/**
*
*/
private String userName;
/**
*
*/
@JsonIgnore
@TableField(exist = false)
private String searchValue;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createDept;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Long createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@TableField(exist = false)
private Map<String, Object> params = new HashMap<>();
}

@ -0,0 +1,175 @@
package org.dromara.mes.domain.bo;
import org.dromara.mes.domain.ProdOrderInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* prod_order_info
*
* @author Yinq
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProdOrderInfo.class, reverseConvertGenerate = false)
public class ProdOrderInfoBo extends BaseEntity {
/**
*
*/
private Long productOrderId;
/**
*
*/
@NotBlank(message = "订单编号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderCode;
/**
* ID
*/
private Long saleOrderId;
/**
*
*/
private String projectNo;
/**
* 1 2)
*/
private String orderType;
/**
* ID
*/
@NotNull(message = "物料ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long materialId;
/**
* BOM_ID;bom
*/
// @NotNull(message = "物料BOM_ID;默认选择最新的正常状态的bom可修改不能为空", groups = {AddGroup.class, EditGroup.class})
private Long materialBomId;
/**
* (1线 2线 3)
*/
@NotBlank(message = "派工类型(1产线 2工艺路线 3工序)不能为空", groups = {AddGroup.class, EditGroup.class})
private String dispatchType;
/**
* ID;线线线线
*/
// @NotNull(message = "派工ID;(派工类型为产线关联产线主键,派工类型为工艺路线关联工艺路线主键)不能为空", groups = {AddGroup.class, EditGroup.class})
private Long dispatchId;
/**
* ;
*/
// @NotNull(message = "销售数量;销售订单的销售数量,如果无订单则需要输入不能为空", groups = {AddGroup.class, EditGroup.class})
private Long saleAmount;
/**
*
*/
private Date planDeliveryDate;
/**
*
*/
@NotNull(message = "计划数量不能为空", groups = {AddGroup.class, EditGroup.class})
private Long planAmount;
/**
* ;线线
*/
private Long dispatchAmount;
/**
*
*/
private Long completeAmount;
/**
*
*/
private Date releaseTime;
/**
*
*/
private Date planBeginTime;
/**
*
*/
private Date planEndTime;
/**
*
*/
private Date realBeginTime;
/**
*
*/
private Date realEndTime;
/**
* 0 1 2 3 4 8 9
*/
private String orderStatus;
/**
* 1 0
*/
private String stockLockFlag;
/**
* ID
*/
private Long preOrderId;
/**
*
*/
private String preOrderCode;
/**
* 0 1 2
*/
private String finishFlag;
/**
* 1 0
*/
private String releaseFlag;
/**
*
*/
private String orderVersion;
/**
* ID
*/
private Long factoryId;
/**
*
*/
private String remark;
}

@ -0,0 +1,186 @@
package org.dromara.mes.domain.bo;
import org.dromara.mes.domain.ProdPlanInfo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* prod_plan_info
*
* @author Yinq
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProdPlanInfo.class, reverseConvertGenerate = false)
public class ProdPlanInfoBo extends BaseEntity {
/**
*
*/
private Long planId;
/**
* ID
*/
private Long productOrderId;
/**
* ID
*/
private Long saleOrderId;
/**
*
*/
private String saleorderCode;
/**
*
*/
@NotBlank(message = "工单编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String planCode;
/**
*
*/
private String dispatchCode;
/**
* ID;ID
*/
@NotNull(message = "物料ID;成品ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long materialId;
/**
* BOM_ID
*/
@NotNull(message = "物料BOM_ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long materialBomId;
/**
* ID
*/
private Long processId;
/**
* ;线
*/
private Long processOrder;
/**
* ID
*/
private Long lastProcessId;
/**
* (1 0)
*/
private String finalProcessFlag;
/**
* (1 2 3)
*/
private String releaseType;
/**
* ID;
*/
private Long releaseId;
/**
* ()
*/
private Long productionTime;
/**
*
*/
@NotNull(message = "工单计划数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planAmount;
/**
*
*/
@NotNull(message = "派工数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long dispatchAmount;
/**
*
*/
private Long completeAmount;
/**
*
*/
private Date planBeginTime;
/**
*
*/
private Date planEndTime;
/**
*
*/
private Date realBeginTime;
/**
*
*/
private Date realEndTime;
/**
* ;,
*/
private String attachId;
/**
* 0 1 2 3
*/
private String planStatus;
/**
* 0 1ERP
*/
private String importFlag;
/**
* 0 1 2
*/
private String finishFlag;
/**
*
*/
private Long priority;
/**
* ID
*/
private Long shiftId;
/**
* ID
*/
private Long classTeamId;
/**
* L R
*/
private String modelCode;
/**
*
*/
private String remark;
}

@ -1,5 +1,6 @@
package org.dromara.mes.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -7,11 +8,13 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
@ -115,5 +118,17 @@ public class ProdBaseProcessInfoVo implements Serializable {
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
* 线
*/
private List<ProdBaseProcessProdLineVo> prodBaseProcessProdlineVoList;//工序关联产线信息,映射字段
/** 工序关联人员信息 */
private List<ProdBaseProcessUserVo> prodBaseProcessUserVoList;//工序关联人员信息,映射字段
private String processPercentageVo;//映射字段
}

@ -0,0 +1,62 @@
package org.dromara.mes.domain.vo;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 线 prod_base_process_prod_line
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdBaseProcessProdLine.class)
public class ProdBaseProcessProdLineVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "工序ID")
private Long processId;
/**
* 线ID
*/
@ExcelProperty(value = "所属产线ID")
private Long prodLineId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "创建人")
private String createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
}

@ -0,0 +1,68 @@
package org.dromara.mes.domain.vo;
import org.dromara.mes.domain.ProdBaseProcessUser;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* prod_base_process_user
*
* @author zangch
* @date 2025-01-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdBaseProcessUser.class)
public class ProdBaseProcessUserVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "工序ID")
private Long processId;
/**
* ID
*/
@ExcelProperty(value = "用户ID")
private Long userId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "用户名称")
private String userName;
/**
*
*/
@ExcelProperty(value = "创建人")
private String createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
}

@ -0,0 +1,247 @@
package org.dromara.mes.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.mes.domain.ProdOrderInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* prod_order_info
*
* @author Yinq
* @date 2025-01-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdOrderInfo.class)
public class ProdOrderInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long productOrderId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "订单编号")
private String orderCode;
/**
* ID
*/
@ExcelProperty(value = "销售订单ID")
private Long saleOrderId;
/**
*
*/
@ExcelProperty(value = "项目编号")
private String projectNo;
/**
* 1 2)
*/
@ExcelProperty(value = "订单类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_order_type")
private String orderType;
/**
* ID
*/
@ExcelProperty(value = "物料ID")
private Long materialId;
/**
* BOM_ID;bom
*/
@ExcelProperty(value = "物料BOM_ID;默认选择最新的正常状态的bom可修改")
private Long materialBomId;
/**
* (1线 2线 3)
*/
@ExcelProperty(value = "派工类型(1产线 2工艺路线 3工序)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_dispatch_type")
private String dispatchType;
/**
* ID;线线线线
*/
@ExcelProperty(value = "派工ID;", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "派=工类型为产线关联产线主键,派工类型为工艺路线关联工艺路线主键")
private Long dispatchId;
/**
* ;
*/
@ExcelProperty(value = "销售数量;销售订单的销售数量,如果无订单则需要输入")
private Long saleAmount;
/**
*
*/
@ExcelProperty(value = "计划交货日期")
private Date planDeliveryDate;
/**
*
*/
@ExcelProperty(value = "计划数量")
private Long planAmount;
/**
* ;线线
*/
@ExcelProperty(value = "已派工数量;派工类型是工艺路线的每个工位派工数量相同,派工类型是产线的派工数量是所有工位累加的")
private Long dispatchAmount;
/**
*
*/
@ExcelProperty(value = "完成数量")
private Long completeAmount;
/**
*
*/
@ExcelProperty(value = "发布时间")
private Date releaseTime;
/**
*
*/
@ExcelProperty(value = "计划开始时间")
private Date planBeginTime;
/**
*
*/
@ExcelProperty(value = "计划结束时间")
private Date planEndTime;
/**
*
*/
@ExcelProperty(value = "开始时间")
private Date realBeginTime;
/**
*
*/
@ExcelProperty(value = "完成时间")
private Date realEndTime;
/**
* 0 1 2 3 4 8 9
*/
@ExcelProperty(value = "订单状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_order_status")
private String orderStatus;
/**
* 1 0
*/
@ExcelProperty(value = "库存锁定标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_stock_lock_flag")
private String stockLockFlag;
/**
* ID
*/
@ExcelProperty(value = "前置生产订单ID")
private Long preOrderId;
/**
*
*/
@ExcelProperty(value = "前置订单编号")
private String preOrderCode;
/**
* 0 1 2
*/
@ExcelProperty(value = "完成标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_finish_flag")
private String finishFlag;
/**
* 1 0
*/
@ExcelProperty(value = "是否已下达工单", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_release_flag")
private String releaseFlag;
/**
*
*/
@ExcelProperty(value = "订单版本")
private String orderVersion;
/**
* ID
*/
@ExcelProperty(value = "工厂ID")
private Long factoryId;
/**
*
*/
@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 String materialName;
}

@ -0,0 +1,230 @@
package org.dromara.mes.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.mes.domain.ProdPlanInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* prod_plan_info
*
* @author Yinq
* @date 2025-01-09
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ProdPlanInfo.class)
public class ProdPlanInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long planId;
/**
* ID
*/
@ExcelProperty(value = "生产订单ID")
private Long productOrderId;
/**
* ID
*/
@ExcelProperty(value = "销售订单ID")
private Long saleOrderId;
/**
*
*/
@ExcelProperty(value = "销售订单编号")
private String saleorderCode;
/**
*
*/
@ExcelProperty(value = "工单编号")
private String planCode;
/**
*
*/
@ExcelProperty(value = "派工单号")
private String dispatchCode;
/**
* ID;ID
*/
@ExcelProperty(value = "物料ID;成品ID")
private Long materialId;
/**
* BOM_ID
*/
@ExcelProperty(value = "物料BOM_ID")
private Long materialBomId;
/**
* ID
*/
@ExcelProperty(value = "工序ID")
private Long processId;
/**
* ;线
*/
@ExcelProperty(value = "顺序;派工类型是工艺路线的需要有顺序")
private Long processOrder;
/**
* ID
*/
@ExcelProperty(value = "上一工序ID")
private Long lastProcessId;
/**
* (1 0)
*/
@ExcelProperty(value = "最后工序标识(1是 0否)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String finalProcessFlag;
/**
* (1 2 3)
*/
@ExcelProperty(value = "下达类型(1机台 2用户 3工位)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_release_type")
private String releaseType;
/**
* ID;
*/
@ExcelProperty(value = "下达ID;根据选择的下达类型下发")
private Long releaseId;
/**
* ()
*/
@ExcelProperty(value = "单位生产时间(秒)")
private Long productionTime;
/**
*
*/
@ExcelProperty(value = "工单计划数量")
private Long planAmount;
/**
*
*/
@ExcelProperty(value = "派工数量")
private Long dispatchAmount;
/**
*
*/
@ExcelProperty(value = "完成数量")
private Long completeAmount;
/**
*
*/
@ExcelProperty(value = "计划开始时间")
private Date planBeginTime;
/**
*
*/
@ExcelProperty(value = "计划结束时间")
private Date planEndTime;
/**
*
*/
@ExcelProperty(value = "实际开始时间")
private Date realBeginTime;
/**
*
*/
@ExcelProperty(value = "实际完成时间")
private Date realEndTime;
/**
* ;,
*/
@ExcelProperty(value = "附件信息,关联附件信息主键;多个用,隔开;页面可选择附件信息,也可直接上传")
private String attachId;
/**
* 0 1 2 3
*/
@ExcelProperty(value = "工单计划状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_plan_status")
private String planStatus;
/**
* 0 1ERP
*/
@ExcelProperty(value = "导入类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_import_flag")
private String importFlag;
/**
* 0 1 2
*/
@ExcelProperty(value = "完成标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_finish_flag")
private String finishFlag;
/**
*
*/
@ExcelProperty(value = "优先级")
private Long priority;
/**
* ID
*/
@ExcelProperty(value = "班次ID")
private Long shiftId;
/**
* ID
*/
@ExcelProperty(value = "班组ID")
private Long classTeamId;
/**
* L R
*/
@ExcelProperty(value = "模号", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "mes_model_code")
private String modelCode;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
private String materialCode;
private String materialName;
private String processName;
private String shiftName;
private String teamName;
}

@ -1,9 +1,16 @@
package org.dromara.mes.mapper;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* Mapper
*
@ -12,4 +19,108 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/
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);
/**
*
*
* @param processIds
* @return
*/
public int deleteProdBaseProcessUserByProcessIds(Long[] processIds);
/**
*
*
* @param prodBaseProcessUserList
* @return
*/
public int batchProdBaseProcessUser(List<ProdBaseProcessUserBo> prodBaseProcessUserList);
/**
*
*
* @param processId ID
* @return
*/
public int deleteProdBaseProcessUserByProcessId(Long processId);
}

@ -0,0 +1,15 @@
package org.dromara.mes.mapper;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 线Mapper
*
* @author LionLi
* @date 2025-01-09
*/
public interface ProdBaseProcessProdLineMapper extends BaseMapperPlus<ProdBaseProcessProdLine, ProdBaseProcessProdLineVo> {
}

@ -0,0 +1,15 @@
package org.dromara.mes.mapper;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author zangch
* @date 2025-01-09
*/
public interface ProdBaseProcessUserMapper extends BaseMapperPlus<ProdBaseProcessUser, ProdBaseProcessUserVo> {
}

@ -30,26 +30,26 @@ public interface ProdBaseRouteMapper extends BaseMapperPlus<ProdBaseRoute, ProdB
/**
* 线
*
* @param mesBaseRoute 线
* @param prodBaseRoute 线
* @return 线
*/
public List<ProdBaseRoute> selectProdBaseRouteList(ProdBaseRoute mesBaseRoute);
public List<ProdBaseRoute> selectProdBaseRouteList(ProdBaseRoute prodBaseRoute);
/**
* 线
*
* @param mesBaseRoute 线
* @param prodBaseRoute 线
* @return
*/
public int insertProdBaseRoute(ProdBaseRoute mesBaseRoute);
public int insertProdBaseRoute(ProdBaseRoute prodBaseRoute);
/**
* 线
*
* @param mesBaseRoute 线
* @param prodBaseRoute 线
* @return
*/
public int updateProdBaseRoute(ProdBaseRoute mesBaseRoute);
public int updateProdBaseRoute(ProdBaseRoute prodBaseRoute);
/**
* 线
@ -78,10 +78,10 @@ public interface ProdBaseRouteMapper extends BaseMapperPlus<ProdBaseRoute, ProdB
/**
* 线
*
* @param mesBaseRouteProcessList 线
* @param prodBaseRouteProcessList 线
* @return
*/
public int batchProdBaseRouteProcess(List<ProdBaseRouteProcessBo> mesBaseRouteProcessList);
public int batchProdBaseRouteProcess(List<ProdBaseRouteProcessBo> prodBaseRouteProcessList);
/**

@ -0,0 +1,32 @@
package org.dromara.mes.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.mes.domain.ProdOrderInfo;
import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import java.util.List;
/**
* Mapper
*
* @author Yinq
* @date 2025-01-09
*/
public interface ProdOrderInfoMapper extends BaseMapperPlus<ProdOrderInfo, ProdOrderInfoVo> {
/**
* ;
* @param page
* @param queryWrapper
* @return
*/
public Page<ProdOrderInfoVo> selectProdOrderInfoList(@Param("page") Page<ProdOrderInfoVo> page, @Param(Constants.WRAPPER) Wrapper<ProdOrderInfo> queryWrapper);
}

@ -0,0 +1,30 @@
package org.dromara.mes.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.dromara.mes.domain.ProdOrderInfo;
import org.dromara.mes.domain.ProdPlanInfo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author Yinq
* @date 2025-01-09
*/
public interface ProdPlanInfoMapper extends BaseMapperPlus<ProdPlanInfo, ProdPlanInfoVo> {
/**
*
* @param page
* @param queryWrapper
* @return
*/
public Page<ProdPlanInfoVo> selectProdPlanInfoList(@Param("page") Page<ProdPlanInfoVo> page, @Param(Constants.WRAPPER) Wrapper<ProdPlanInfo> queryWrapper);
}

@ -57,6 +57,14 @@ public interface IProdBaseProcessInfoService {
*/
Boolean updateByBo(ProdBaseProcessInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBoUser(ProdBaseProcessInfoBo bo);
/**
*
*

@ -0,0 +1,69 @@
package org.dromara.mes.service;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 线Service
*
* @author LionLi
* @date 2025-01-09
*/
public interface IProdBaseProcessProdLineService {
/**
* 线
*
* @param processId
* @return 线
*/
ProdBaseProcessProdLineVo queryById(Long processId);
/**
* 线
*
* @param bo
* @param pageQuery
* @return 线
*/
TableDataInfo<ProdBaseProcessProdLineVo> queryPageList(ProdBaseProcessProdLineBo bo, PageQuery pageQuery);
/**
* 线
*
* @param bo
* @return 线
*/
List<ProdBaseProcessProdLineVo> queryList(ProdBaseProcessProdLineBo bo);
/**
* 线
*
* @param bo 线
* @return
*/
Boolean insertByBo(ProdBaseProcessProdLineBo bo);
/**
* 线
*
* @param bo 线
* @return
*/
Boolean updateByBo(ProdBaseProcessProdLineBo bo);
/**
* 线
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,69 @@
package org.dromara.mes.service;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author zangch
* @date 2025-01-09
*/
public interface IProdBaseProcessUserService {
/**
*
*
* @param processId
* @return
*/
ProdBaseProcessUserVo queryById(Long processId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<ProdBaseProcessUserVo> queryPageList(ProdBaseProcessUserBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<ProdBaseProcessUserVo> queryList(ProdBaseProcessUserBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(ProdBaseProcessUserBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(ProdBaseProcessUserBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -76,5 +76,5 @@ public interface IProdBaseRouteService {
* @param routeId 线
* @return 线
*/
public ProdBaseRouteVo selectMesBaseRouteByRouteId(Long routeId);
public ProdBaseRouteVo selectProdBaseRouteByRouteId(Long routeId);
}

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

@ -0,0 +1,69 @@
package org.dromara.mes.service;
import org.dromara.mes.domain.ProdPlanInfo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.mes.domain.bo.ProdPlanInfoBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author Yinq
* @date 2025-01-09
*/
public interface IProdPlanInfoService {
/**
*
*
* @param planId
* @return
*/
ProdPlanInfoVo queryById(Long planId);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<ProdPlanInfoVo> queryPageList(ProdPlanInfoBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<ProdPlanInfoVo> queryList(ProdPlanInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(ProdPlanInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(ProdPlanInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -2,6 +2,7 @@ package org.dromara.mes.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
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.TableDataInfo;
@ -138,6 +139,17 @@ public class BaseClassTeamInfoServiceImpl implements IBaseClassTeamInfoService {
*/
private void validEntityBeforeSave(BaseClassTeamInfo entity){
//TODO 做一些数据校验,如唯一约束
// 校验编码是否重复
if (StringUtils.isNotBlank(entity.getTeamCode())) {
BaseClassTeamInfoBo query = new BaseClassTeamInfoBo();
query.setTeamCode(entity.getTeamCode());
MPJLambdaWrapper<BaseClassTeamInfo> lqw = buildQueryWrapper(query);
BaseClassTeamInfo baseClassTeamInfo = baseMapper.selectOne(lqw);
if (baseClassTeamInfo != null
&& !baseClassTeamInfo.getClassTeamId().equals(entity.getClassTeamId())) {
throw new ServiceException("编码已存在");
}
}
}
/**

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import com.github.yulichang.toolkit.JoinWrappers;
@ -111,6 +112,15 @@ public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
*/
private void validEntityBeforeSave(BaseMaterialType entity){
//TODO 做一些数据校验,如唯一约束
if (StringUtils.isNotBlank(entity.getMatrialTypeCode())) {
BaseMaterialTypeBo query = new BaseMaterialTypeBo();
query.setMatrialTypeCode(entity.getMatrialTypeCode());
MPJLambdaWrapper<BaseMaterialType> lqw = buildQueryWrapper(query);
BaseMaterialType baseMaterialType = baseMapper.selectOne(lqw);
if (baseMaterialType != null && !baseMaterialType.getMatrialTypeId().equals(entity.getMatrialTypeId())) {
throw new ServiceException("编码已存在");
}
}
}
/**
@ -124,6 +134,14 @@ public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
for (Long id : ids) {
//TODO 校验是否需要删除
BaseMaterialType query = new BaseMaterialType();
query.setParentId(id);
if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
throw new ServiceException("存在子节点,不允许删除");
}
}
}
return baseMapper.deleteByIds(ids) > 0;
}

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import com.github.yulichang.toolkit.JoinWrappers;
@ -79,6 +80,16 @@ public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitI
public Boolean insertByBo(BaseMeasurementUnitInfoBo bo) {
BaseMeasurementUnitInfo add = MapstructUtils.convert(bo, BaseMeasurementUnitInfo.class);
validEntityBeforeSave(add);
// 获取父节点信息
BaseMeasurementUnitInfoVo query = baseMapper.selectVoById(bo.getParentId());
if (query != null) {
//若父节点不为空则将父节点的ancestors拼接父节点id拼接成ancestors
add.setAncestors(query.getAncestors() + "," + bo.getParentId());
}else{
//若父节点为空则ancestors仅有父节点id
add.setAncestors(bo.getParentId().toString());
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setUnitId(add.getUnitId());
@ -104,6 +115,16 @@ public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitI
*/
private void validEntityBeforeSave(BaseMeasurementUnitInfo entity){
//TODO 做一些数据校验,如唯一约束
// 校验编码是否重复
if (StringUtils.isNotBlank(entity.getUnitCode())) {
BaseMeasurementUnitInfoBo query = new BaseMeasurementUnitInfoBo();
query.setUnitCode(entity.getUnitCode());
MPJLambdaWrapper<BaseMeasurementUnitInfo> lqw = buildQueryWrapper(query);
BaseMeasurementUnitInfo baseMeasurementUnitInfo = baseMapper.selectOne(lqw);
if (baseMeasurementUnitInfo != null && !baseMeasurementUnitInfo.getUnitId().equals(entity.getUnitId())) {
throw new ServiceException("编码已存在");
}
}
}
/**
@ -117,6 +138,14 @@ public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitI
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
for (Long id : ids) {
// 判断是否存在子节点
BaseMeasurementUnitInfo query = new BaseMeasurementUnitInfo();
query.setParentId(id);
if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
throw new ServiceException("存在子节点,不允许删除");
}
}
}
return baseMapper.deleteByIds(ids) > 0;
}

@ -3,6 +3,7 @@ package org.dromara.mes.service.impl;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.val;
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.TableDataInfo;
@ -130,6 +131,16 @@ public class BaseShiftInfoServiceImpl implements IBaseShiftInfoService {
*/
private void validEntityBeforeSave(BaseShiftInfo entity){
//TODO 做一些数据校验,如唯一约束
//校验编码是否重复
if (StringUtils.isNotBlank(entity.getShiftCode())) {
BaseShiftInfoBo query = new BaseShiftInfoBo();
query.setShiftCode(entity.getShiftCode());
MPJLambdaWrapper<BaseShiftInfo> lqw = buildQueryWrapper(query);
BaseShiftInfo baseShiftInfo = baseMapper.selectOne(lqw);
if (baseShiftInfo != null && !baseShiftInfo.getShiftId().equals(entity.getShiftId())) {
throw new ServiceException("编码已存在");
}
}
}
/**

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
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.TableDataInfo;
@ -121,6 +122,16 @@ public class BaseSupplierInfoServiceImpl implements IBaseSupplierInfoService {
*/
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("编码已存在");
}
}
}
/**

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
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.TableDataInfo;
@ -122,6 +123,16 @@ public class BaseToolingInfoServiceImpl implements IBaseToolingInfoService {
*/
private void validEntityBeforeSave(BaseToolingInfo entity){
//TODO 做一些数据校验,如唯一约束
// 校验编码是否已存在
if (StringUtils.isNotBlank(entity.getToolingCode())) {
BaseToolingInfoBo query = new BaseToolingInfoBo();
query.setToolingCode(entity.getToolingCode());
MPJLambdaWrapper<BaseToolingInfo> lqw = buildQueryWrapper(query);
BaseToolingInfo baseToolingInfo = baseMapper.selectOne(lqw);
if (baseToolingInfo != null && !baseToolingInfo.getToolingId().equals(entity.getToolingId())) {
throw new ServiceException("编码已存在");
}
}
}
/**

@ -1,5 +1,7 @@
package org.dromara.mes.service.impl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
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.TableDataInfo;
@ -118,6 +120,15 @@ public class ProdBaseFactoryInfoServiceImpl implements IProdBaseFactoryInfoServi
*/
private void validEntityBeforeSave(ProdBaseFactoryInfo entity){
//TODO 做一些数据校验,如唯一约束
if (StringUtils.isNotBlank(entity.getFactoryCode())) {
ProdBaseFactoryInfoBo query = new ProdBaseFactoryInfoBo();
query.setFactoryCode(entity.getFactoryCode());
LambdaQueryWrapper<ProdBaseFactoryInfo> lqw = buildQueryWrapper(query);
ProdBaseFactoryInfo baseProdBaseFactoryInfo = baseMapper.selectOne(lqw);
if (baseProdBaseFactoryInfo != null && !baseProdBaseFactoryInfo.getFactoryId().equals(entity.getFactoryId())) {
throw new ServiceException("编码已存在");
}
}
}
/**

@ -1,5 +1,9 @@
package org.dromara.mes.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
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.TableDataInfo;
@ -8,13 +12,24 @@ 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.satoken.utils.LoginHelper;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper;
import org.dromara.mes.mapper.ProdBaseProcessUserMapper;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseProcessInfoBo;
import org.dromara.mes.domain.vo.ProdBaseProcessInfoVo;
import org.dromara.mes.domain.ProdBaseProcessInfo;
import org.dromara.mes.mapper.ProdBaseProcessInfoMapper;
import org.dromara.mes.service.IProdBaseProcessInfoService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -31,6 +46,16 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
private final ProdBaseProcessInfoMapper baseMapper;
private final ProdBaseProcessUserServiceImpl prodBaseProcessUserService;
private final ProdBaseProcessProdLineServiceImpl prodBaseProcessProdlineService;
private final ProdBaseProcessUserMapper prodBaseProcessUserMapper;
private final ProdBaseProcessProdLineMapper prodBaseProcessProdlineMapper;
/**
*
*
@ -39,7 +64,23 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
*/
@Override
public ProdBaseProcessInfoVo queryById(Long processId){
return baseMapper.selectVoById(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);
}
return prodBaseProcessInfoVo;
}
/**
@ -72,6 +113,17 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdBaseProcessInfo> lqw = JoinWrappers.lambda(ProdBaseProcessInfo.class)
.selectAll(ProdBaseProcessInfo.class)
/* // 关联人员
.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())
@ -106,18 +158,91 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
* @param bo
* @return
*/
@Transactional
@Override
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<ProdBaseProcessProdLine> prodBaseProcessProdlineList = new ArrayList<>();
List<ProdBaseProcessProdLineBo> prodBaseProcessProdlineBoList = bo.getProdBaseProcessProdlineBoList();
if(ObjectUtil.isNotEmpty(prodBaseProcessProdlineBoList)){
prodBaseProcessProdlineList = MapstructUtils.convert(prodBaseProcessProdlineBoList, ProdBaseProcessProdLine.class);
update.setProdBaseProcessProdlineList(prodBaseProcessProdlineList);
}
baseMapper.deleteProdBaseProcessProdlineByProcessId(update.getProcessId());
try {
insertProdBaseProcessProdline(update);
}catch (Exception e){
throw new ServiceException("该工序已关联产线!");
}
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("编码已存在");
}
}
}
/**
@ -134,4 +259,58 @@ public class ProdBaseProcessInfoServiceImpl implements IProdBaseProcessInfoServi
}
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());
Long userId = prodBaseProcessUser.getUserId();
list.add(prodBaseProcessUser);
}
if (!list.isEmpty()) {
prodBaseProcessUserMapper.insertBatch(list);
}
}
}
}

@ -0,0 +1,133 @@
package org.dromara.mes.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseProcessProdLineBo;
import org.dromara.mes.domain.vo.ProdBaseProcessProdLineVo;
import org.dromara.mes.domain.ProdBaseProcessProdLine;
import org.dromara.mes.mapper.ProdBaseProcessProdLineMapper;
import org.dromara.mes.service.IProdBaseProcessProdLineService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 线Service
*
* @author LionLi
* @date 2025-01-09
*/
@RequiredArgsConstructor
@Service
public class ProdBaseProcessProdLineServiceImpl implements IProdBaseProcessProdLineService {
private final ProdBaseProcessProdLineMapper baseMapper;
/**
* 线
*
* @param processId
* @return 线
*/
@Override
public ProdBaseProcessProdLineVo queryById(Long processId){
return baseMapper.selectVoById(processId);
}
/**
* 线
*
* @param bo
* @param pageQuery
* @return 线
*/
@Override
public TableDataInfo<ProdBaseProcessProdLineVo> queryPageList(ProdBaseProcessProdLineBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ProdBaseProcessProdLine> lqw = buildQueryWrapper(bo);
Page<ProdBaseProcessProdLineVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 线
*
* @param bo
* @return 线
*/
@Override
public List<ProdBaseProcessProdLineVo> queryList(ProdBaseProcessProdLineBo bo) {
MPJLambdaWrapper<ProdBaseProcessProdLine> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ProdBaseProcessProdLine> buildQueryWrapper(ProdBaseProcessProdLineBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdBaseProcessProdLine> lqw = JoinWrappers.lambda(ProdBaseProcessProdLine.class)
.selectAll(ProdBaseProcessProdLine.class)
.eq(bo.getProcessId() != null, ProdBaseProcessProdLine::getProcessId, bo.getProcessId())
.eq(bo.getProdLineId() != null, ProdBaseProcessProdLine::getProdLineId, bo.getProdLineId())
.orderByDesc(ProdBaseProcessProdLine::getCreateTime);
return lqw;
}
/**
* 线
*
* @param bo 线
* @return
*/
@Override
public Boolean insertByBo(ProdBaseProcessProdLineBo bo) {
ProdBaseProcessProdLine add = MapstructUtils.convert(bo, ProdBaseProcessProdLine.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setProcessId(add.getProcessId());
}
return flag;
}
/**
* 线
*
* @param bo 线
* @return
*/
@Override
public Boolean updateByBo(ProdBaseProcessProdLineBo bo) {
ProdBaseProcessProdLine update = MapstructUtils.convert(bo, ProdBaseProcessProdLine.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ProdBaseProcessProdLine 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,134 @@
package org.dromara.mes.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdBaseProcessUserBo;
import org.dromara.mes.domain.vo.ProdBaseProcessUserVo;
import org.dromara.mes.domain.ProdBaseProcessUser;
import org.dromara.mes.mapper.ProdBaseProcessUserMapper;
import org.dromara.mes.service.IProdBaseProcessUserService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author zangch
* @date 2025-01-09
*/
@RequiredArgsConstructor
@Service
public class ProdBaseProcessUserServiceImpl implements IProdBaseProcessUserService {
private final ProdBaseProcessUserMapper baseMapper;
/**
*
*
* @param processId
* @return
*/
@Override
public ProdBaseProcessUserVo queryById(Long processId){
return baseMapper.selectVoById(processId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ProdBaseProcessUserVo> queryPageList(ProdBaseProcessUserBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ProdBaseProcessUser> lqw = buildQueryWrapper(bo);
Page<ProdBaseProcessUserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ProdBaseProcessUserVo> queryList(ProdBaseProcessUserBo bo) {
MPJLambdaWrapper<ProdBaseProcessUser> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ProdBaseProcessUser> buildQueryWrapper(ProdBaseProcessUserBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdBaseProcessUser> lqw = JoinWrappers.lambda(ProdBaseProcessUser.class)
.selectAll(ProdBaseProcessUser.class)
.eq(bo.getProcessId() != null, ProdBaseProcessUser::getProcessId, bo.getProcessId())
.eq(bo.getUserId() != null, ProdBaseProcessUser::getUserId, bo.getUserId())
.like(StringUtils.isNotBlank(bo.getUserName()), ProdBaseProcessUser::getUserName, bo.getUserName())
.orderByDesc(ProdBaseProcessUser::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ProdBaseProcessUserBo bo) {
ProdBaseProcessUser add = MapstructUtils.convert(bo, ProdBaseProcessUser.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setProcessId(add.getProcessId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(ProdBaseProcessUserBo bo) {
ProdBaseProcessUser update = MapstructUtils.convert(bo, ProdBaseProcessUser.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ProdBaseProcessUser entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -1,5 +1,6 @@
package org.dromara.mes.service.impl;
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.TableDataInfo;
@ -121,6 +122,17 @@ public class ProdBaseProdLineInfoServiceImpl implements IProdBaseProdLineInfoSer
*/
private void validEntityBeforeSave(ProdBaseProdLineInfo entity){
//TODO 做一些数据校验,如唯一约束
// 校验编码是否重复
if (StringUtils.isNotBlank(entity.getProdLineCode())) {
ProdBaseProdLineInfoBo query = new ProdBaseProdLineInfoBo();
query.setProdLineCode(entity.getProdLineCode());
MPJLambdaWrapper<ProdBaseProdLineInfo> lqw = buildQueryWrapper(query);
ProdBaseProdLineInfo prodBaseProdLineInfo = baseMapper.selectOne(lqw);
if (prodBaseProdLineInfo != null
&& !prodBaseProdLineInfo.getProdLineId().equals(entity.getProdLineId())) {
throw new ServiceException("编码已存在");
}
}
}
/**

@ -166,22 +166,22 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService {
public void insertProdBaseRouteProcess(ProdBaseRouteBo bo)
{
// 获取工艺路线中的工艺步骤列表
List<ProdBaseRouteProcessBo> mesBaseRouteProcessList = bo.getRouteProcessBoList();
List<ProdBaseRouteProcessBo> prodBaseRouteProcessList = bo.getRouteProcessBoList();
// 获取工艺路线ID
Long routeId = bo.getRouteId();
// 如果工艺步骤列表不为空
if (ObjectUtil.isNotNull(mesBaseRouteProcessList))
if (ObjectUtil.isNotNull(prodBaseRouteProcessList))
{
// 创建一个新的工艺步骤列表
List<ProdBaseRouteProcessBo> list = new ArrayList<ProdBaseRouteProcessBo>();
// 遍历每一个工艺步骤
for (ProdBaseRouteProcessBo mesBaseRouteProcess : mesBaseRouteProcessList)
for (ProdBaseRouteProcessBo prodBaseRouteProcess : prodBaseRouteProcessList)
{
// 设置工艺步骤的工艺路线ID
mesBaseRouteProcess.setRouteId(routeId);
prodBaseRouteProcess.setRouteId(routeId);
// 将工艺步骤添加到新的列表中
list.add(mesBaseRouteProcess);
list.add(prodBaseRouteProcess);
}
// 如果新的工艺步骤列表不为空
if (!list.isEmpty())
@ -209,7 +209,7 @@ public class ProdBaseRouteServiceImpl implements IProdBaseRouteService {
* @return 线
*/
@Override
public ProdBaseRouteVo selectMesBaseRouteByRouteId(Long routeId)
public ProdBaseRouteVo selectProdBaseRouteByRouteId(Long routeId)
{
return routeMapper.selectProdBaseRouteByRouteId(routeId);
}

@ -0,0 +1,157 @@
package org.dromara.mes.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdOrderInfoBo;
import org.dromara.mes.domain.vo.ProdOrderInfoVo;
import org.dromara.mes.domain.ProdOrderInfo;
import org.dromara.mes.mapper.ProdOrderInfoMapper;
import org.dromara.mes.service.IProdOrderInfoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author Yinq
* @date 2025-01-09
*/
@RequiredArgsConstructor
@Service
public class ProdOrderInfoServiceImpl implements IProdOrderInfoService {
private final ProdOrderInfoMapper baseMapper;
/**
*
*
* @param productOrderId
* @return
*/
@Override
public ProdOrderInfoVo queryById(Long productOrderId){
return baseMapper.selectVoById(productOrderId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ProdOrderInfoVo> queryPageList(ProdOrderInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ProdOrderInfo> lqw = buildQueryWrapper(bo);
Page<ProdOrderInfoVo> result = baseMapper.selectProdOrderInfoList(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ProdOrderInfoVo> queryList(ProdOrderInfoBo bo) {
MPJLambdaWrapper<ProdOrderInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ProdOrderInfo> buildQueryWrapper(ProdOrderInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdOrderInfo> lqw = JoinWrappers.lambda(ProdOrderInfo.class)
.selectAll(ProdOrderInfo.class)
.eq(bo.getProductOrderId() != null, ProdOrderInfo::getProductOrderId, bo.getProductOrderId())
.eq(StringUtils.isNotBlank(bo.getOrderCode()), ProdOrderInfo::getOrderCode, bo.getOrderCode())
.eq(bo.getSaleOrderId() != null, ProdOrderInfo::getSaleOrderId, bo.getSaleOrderId())
.eq(StringUtils.isNotBlank(bo.getProjectNo()), ProdOrderInfo::getProjectNo, bo.getProjectNo())
.eq(StringUtils.isNotBlank(bo.getOrderType()), ProdOrderInfo::getOrderType, bo.getOrderType())
.eq(bo.getMaterialId() != null, ProdOrderInfo::getMaterialId, bo.getMaterialId())
.eq(bo.getMaterialBomId() != null, ProdOrderInfo::getMaterialBomId, bo.getMaterialBomId())
.eq(StringUtils.isNotBlank(bo.getDispatchType()), ProdOrderInfo::getDispatchType, bo.getDispatchType())
.eq(bo.getDispatchId() != null, ProdOrderInfo::getDispatchId, bo.getDispatchId())
.eq(bo.getSaleAmount() != null, ProdOrderInfo::getSaleAmount, bo.getSaleAmount())
.eq(bo.getPlanDeliveryDate() != null, ProdOrderInfo::getPlanDeliveryDate, bo.getPlanDeliveryDate())
.eq(bo.getPlanAmount() != null, ProdOrderInfo::getPlanAmount, bo.getPlanAmount())
.eq(bo.getDispatchAmount() != null, ProdOrderInfo::getDispatchAmount, bo.getDispatchAmount())
.eq(bo.getCompleteAmount() != null, ProdOrderInfo::getCompleteAmount, bo.getCompleteAmount())
.eq(bo.getReleaseTime() != null, ProdOrderInfo::getReleaseTime, bo.getReleaseTime())
.eq(bo.getPlanBeginTime() != null, ProdOrderInfo::getPlanBeginTime, bo.getPlanBeginTime())
.eq(bo.getPlanEndTime() != null, ProdOrderInfo::getPlanEndTime, bo.getPlanEndTime())
.eq(bo.getRealBeginTime() != null, ProdOrderInfo::getRealBeginTime, bo.getRealBeginTime())
.eq(bo.getRealEndTime() != null, ProdOrderInfo::getRealEndTime, bo.getRealEndTime())
.eq(StringUtils.isNotBlank(bo.getOrderStatus()), ProdOrderInfo::getOrderStatus, bo.getOrderStatus())
.eq(StringUtils.isNotBlank(bo.getStockLockFlag()), ProdOrderInfo::getStockLockFlag, bo.getStockLockFlag())
.eq(bo.getPreOrderId() != null, ProdOrderInfo::getPreOrderId, bo.getPreOrderId())
.eq(StringUtils.isNotBlank(bo.getPreOrderCode()), ProdOrderInfo::getPreOrderCode, bo.getPreOrderCode())
.eq(StringUtils.isNotBlank(bo.getFinishFlag()), ProdOrderInfo::getFinishFlag, bo.getFinishFlag())
.eq(StringUtils.isNotBlank(bo.getReleaseFlag()), ProdOrderInfo::getReleaseFlag, bo.getReleaseFlag())
.eq(StringUtils.isNotBlank(bo.getOrderVersion()), ProdOrderInfo::getOrderVersion, bo.getOrderVersion())
.eq(bo.getFactoryId() != null, ProdOrderInfo::getFactoryId, bo.getFactoryId())
.orderByDesc(ProdOrderInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ProdOrderInfoBo bo) {
ProdOrderInfo add = MapstructUtils.convert(bo, ProdOrderInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setProductOrderId(add.getProductOrderId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(ProdOrderInfoBo bo) {
ProdOrderInfo update = MapstructUtils.convert(bo, ProdOrderInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ProdOrderInfo 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,160 @@
package org.dromara.mes.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.mes.domain.bo.ProdPlanInfoBo;
import org.dromara.mes.domain.vo.ProdPlanInfoVo;
import org.dromara.mes.domain.ProdPlanInfo;
import org.dromara.mes.mapper.ProdPlanInfoMapper;
import org.dromara.mes.service.IProdPlanInfoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author Yinq
* @date 2025-01-09
*/
@RequiredArgsConstructor
@Service
public class ProdPlanInfoServiceImpl implements IProdPlanInfoService {
private final ProdPlanInfoMapper baseMapper;
/**
*
*
* @param planId
* @return
*/
@Override
public ProdPlanInfoVo queryById(Long planId){
return baseMapper.selectVoById(planId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ProdPlanInfoVo> queryPageList(ProdPlanInfoBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ProdPlanInfo> lqw = buildQueryWrapper(bo);
Page<ProdPlanInfoVo> result = baseMapper.selectProdPlanInfoList(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<ProdPlanInfoVo> queryList(ProdPlanInfoBo bo) {
MPJLambdaWrapper<ProdPlanInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<ProdPlanInfo> buildQueryWrapper(ProdPlanInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<ProdPlanInfo> lqw = JoinWrappers.lambda(ProdPlanInfo.class)
.selectAll(ProdPlanInfo.class)
.eq(bo.getPlanId() != null, ProdPlanInfo::getPlanId, bo.getPlanId())
.eq(bo.getProductOrderId() != null, ProdPlanInfo::getProductOrderId, bo.getProductOrderId())
.eq(bo.getSaleOrderId() != null, ProdPlanInfo::getSaleOrderId, bo.getSaleOrderId())
.eq(StringUtils.isNotBlank(bo.getSaleorderCode()), ProdPlanInfo::getSaleorderCode, bo.getSaleorderCode())
.eq(StringUtils.isNotBlank(bo.getPlanCode()), ProdPlanInfo::getPlanCode, bo.getPlanCode())
.eq(StringUtils.isNotBlank(bo.getDispatchCode()), ProdPlanInfo::getDispatchCode, bo.getDispatchCode())
.eq(bo.getMaterialId() != null, ProdPlanInfo::getMaterialId, bo.getMaterialId())
.eq(bo.getMaterialBomId() != null, ProdPlanInfo::getMaterialBomId, bo.getMaterialBomId())
.eq(bo.getProcessId() != null, ProdPlanInfo::getProcessId, bo.getProcessId())
.eq(bo.getProcessOrder() != null, ProdPlanInfo::getProcessOrder, bo.getProcessOrder())
.eq(bo.getLastProcessId() != null, ProdPlanInfo::getLastProcessId, bo.getLastProcessId())
.eq(StringUtils.isNotBlank(bo.getFinalProcessFlag()), ProdPlanInfo::getFinalProcessFlag, bo.getFinalProcessFlag())
.eq(StringUtils.isNotBlank(bo.getReleaseType()), ProdPlanInfo::getReleaseType, bo.getReleaseType())
.eq(bo.getReleaseId() != null, ProdPlanInfo::getReleaseId, bo.getReleaseId())
.eq(bo.getProductionTime() != null, ProdPlanInfo::getProductionTime, bo.getProductionTime())
.eq(bo.getPlanAmount() != null, ProdPlanInfo::getPlanAmount, bo.getPlanAmount())
.eq(bo.getDispatchAmount() != null, ProdPlanInfo::getDispatchAmount, bo.getDispatchAmount())
.eq(bo.getCompleteAmount() != null, ProdPlanInfo::getCompleteAmount, bo.getCompleteAmount())
.eq(bo.getPlanBeginTime() != null, ProdPlanInfo::getPlanBeginTime, bo.getPlanBeginTime())
.eq(bo.getPlanEndTime() != null, ProdPlanInfo::getPlanEndTime, bo.getPlanEndTime())
.eq(bo.getRealBeginTime() != null, ProdPlanInfo::getRealBeginTime, bo.getRealBeginTime())
.eq(bo.getRealEndTime() != null, ProdPlanInfo::getRealEndTime, bo.getRealEndTime())
.eq(StringUtils.isNotBlank(bo.getAttachId()), ProdPlanInfo::getAttachId, bo.getAttachId())
.eq(StringUtils.isNotBlank(bo.getPlanStatus()), ProdPlanInfo::getPlanStatus, bo.getPlanStatus())
.eq(StringUtils.isNotBlank(bo.getImportFlag()), ProdPlanInfo::getImportFlag, bo.getImportFlag())
.eq(StringUtils.isNotBlank(bo.getFinishFlag()), ProdPlanInfo::getFinishFlag, bo.getFinishFlag())
.eq(bo.getPriority() != null, ProdPlanInfo::getPriority, bo.getPriority())
.eq(bo.getShiftId() != null, ProdPlanInfo::getShiftId, bo.getShiftId())
.eq(bo.getClassTeamId() != null, ProdPlanInfo::getClassTeamId, bo.getClassTeamId())
.eq(StringUtils.isNotBlank(bo.getModelCode()), ProdPlanInfo::getModelCode, bo.getModelCode())
.orderByDesc(ProdPlanInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(ProdPlanInfoBo bo) {
ProdPlanInfo add = MapstructUtils.convert(bo, ProdPlanInfo.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setPlanId(add.getPlanId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(ProdPlanInfoBo bo) {
ProdPlanInfo update = MapstructUtils.convert(bo, ProdPlanInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(ProdPlanInfo entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -4,4 +4,231 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.mes.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>
<select id="selectProdBaseProcessInfoUserByProcessId" parameterType="Long"
resultMap="ProdBaseProcessInfoProdBaseProcessUserResult">
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.user_id as sub_user_id,
b.user_name as sub_user_name,
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_user 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>
<insert id="batchProdBaseProcessProdline">
insert into prod_base_process_prod_line( process_id, prod_line_id) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.processId}, #{item.prodlineId})
</foreach>
</insert>
<delete id="deleteProdBaseProcessUserByProcessIds" parameterType="String">
delete from prod_base_process_user where process_id in
<foreach item="processId" collection="array" open="(" separator="," close=")">
#{processId}
</foreach>
</delete>
<delete id="deleteProdBaseProcessUserByProcessId" parameterType="Long">
delete from prod_base_process_user where process_id = #{processId}
</delete>
<insert id="batchProdBaseProcessUser">
insert into prod_base_process_user( process_id, user_id, user_name, create_by, create_time,tenant_id) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.processId}, #{item.userId}, #{item.userName}, #{item.createBy}, #{item.createTime}, #{item.tenantId})
</foreach>
</insert>
</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.mes.mapper.ProdBaseProcessProdLineMapper">
</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.mes.mapper.ProdBaseProcessUserMapper">
</mapper>

@ -54,7 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from prod_base_route a
left join prod_base_route_process b on b.route_id = a.route_id
left join mes_base_process_info p on p.process_id = b.process_id
left join prod_base_process_info p on p.process_id = b.process_id
</sql>
<select id="selectProdBaseRouteList" parameterType="ProdBaseRoute" resultMap="ProdBaseRouteResult">
@ -195,7 +195,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bsi.production_time productionTime,
mf.multiStationFlag
from prod_base_route_process brp
left join mes_base_process_info bpi on bpi.process_id = brp.process_id
left join prod_base_process_info bpi on bpi.process_id = brp.process_id
left join mes_base_station_info bsi on bsi.process_id = bpi.process_id
left join (select brp.process_id, count(*) multiStationFlag
from prod_base_route_process brp

@ -0,0 +1,21 @@
<?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.mes.mapper.ProdOrderInfoMapper">
<select id="selectProdOrderInfoList" parameterType="ProdOrderInfoBo" resultType="ProdOrderInfoVo">
select
<if test="ew.getSqlSelect != null">
${ew.getSqlSelect},
bmi.material_name
</if>
<if test="ew.getSqlSelect == null">
*
</if>
from prod_order_info t
left join base_material_info bmi on bmi.material_id = t.material_id
${ew.getCustomSqlSegment}
</select>
</mapper>

@ -0,0 +1,29 @@
<?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.mes.mapper.ProdPlanInfoMapper">
<select id="selectProdPlanInfoList" parameterType="ProdPlanInfoBo" resultType="ProdPlanInfoVo">
select
<if test="ew.getSqlSelect != null">
${ew.getSqlSelect},
bmi.material_code,
bmi.material_name,
pbpi.process_name,
bsi.shift_name,
bcti.team_name
</if>
<if test="ew.getSqlSelect == null">
*
</if>
from prod_plan_info t
left join base_material_info bmi on bmi.material_id = t.material_id
left join prod_base_process_info pbpi on pbpi.process_id = t.process_id
left join base_shift_info bsi on bsi.shift_id = t.shift_id
left join base_class_team_info bcti on bcti.class_team_id = t.class_team_id
${ew.getCustomSqlSegment}
</select>
</mapper>

@ -0,0 +1,106 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.bo.WmsAllocateOrderBo;
import org.dromara.wms.domain.vo.WmsAllocateOrderVo;
import org.dromara.wms.service.IWmsAllocateOrderService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/system/allocateOrder
*
* @author LionLi
* @date 2025-01-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/allocateOrder")
public class WmsAllocateOrderController extends BaseController {
private final IWmsAllocateOrderService wmsAllocateOrderService;
/**
*
*/
@SaCheckPermission("system:allocateOrder:list")
@GetMapping("/list")
public TableDataInfo<WmsAllocateOrderVo> list(WmsAllocateOrderBo bo, PageQuery pageQuery) {
return wmsAllocateOrderService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("system:allocateOrder:export")
@Log(title = "调拨工单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsAllocateOrderBo bo, HttpServletResponse response) {
List<WmsAllocateOrderVo> list = wmsAllocateOrderService.queryList(bo);
ExcelUtil.exportExcel(list, "调拨工单", WmsAllocateOrderVo.class, response);
}
/**
*
*
* @param aoId
*/
@SaCheckPermission("system:allocateOrder:query")
@GetMapping("/{aoId}")
public R<WmsAllocateOrderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long aoId) {
return R.ok(wmsAllocateOrderService.queryById(aoId));
}
/**
*
*/
@SaCheckPermission("system:allocateOrder:add")
@Log(title = "调拨工单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<String> add(@RequestBody WmsAllocateOrderBo bo) {
return R.ok(wmsAllocateOrderService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("system:allocateOrder:edit")
@Log(title = "调拨工单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsAllocateOrderBo bo) {
return toAjax(wmsAllocateOrderService.updateByBo(bo));
}
/**
*
*
* @param aoIds
*/
@SaCheckPermission("system:allocateOrder:remove")
@Log(title = "调拨工单", businessType = BusinessType.DELETE)
@DeleteMapping("/{aoIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] aoIds) {
return toAjax(wmsAllocateOrderService.deleteWithValidByIds(List.of(aoIds), true));
}
}

@ -0,0 +1,119 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.bo.WmsAllocateOrderDetailBo;
import org.dromara.wms.domain.vo.WmsAllocateOrderDetailVo;
import org.dromara.wms.service.IWmsAllocateOrderDetailService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/system/allocateOrderDetail
*
* @author LionLi
* @date 2025-01-09
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/allocateOrderDetail")
public class WmsAllocateOrderDetailController extends BaseController {
private final IWmsAllocateOrderDetailService wmsAllocateOrderDetailService;
/**
*
*/
@SaCheckPermission("system:allocateOrderDetail:list")
@GetMapping("/list")
public TableDataInfo<WmsAllocateOrderDetailVo> list(WmsAllocateOrderDetailBo bo, PageQuery pageQuery) {
return wmsAllocateOrderDetailService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("system:allocateOrderDetail:export")
@Log(title = "调拨子", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsAllocateOrderDetailBo bo, HttpServletResponse response) {
List<WmsAllocateOrderDetailVo> list = wmsAllocateOrderDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "调拨子", WmsAllocateOrderDetailVo.class, response);
}
/**
*
*
* @param aoDId
*/
@SaCheckPermission("system:allocateOrderDetail:query")
@GetMapping("/{aoDId}")
public R<WmsAllocateOrderDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long aoDId) {
return R.ok(wmsAllocateOrderDetailService.queryById(aoDId));
}
/**
*
*/
@SaCheckPermission("system:allocateOrderDetail:add")
@Log(title = "调拨子", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add( @RequestBody List<WmsAllocateOrderDetailBo> bo) {
return toAjax(wmsAllocateOrderDetailService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("system:allocateOrderDetail:edit")
@Log(title = "调拨子", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsAllocateOrderDetailBo bo) {
return toAjax(wmsAllocateOrderDetailService.updateByBo(bo));
}
/**
*
*
* @param aoDIds
*/
@SaCheckPermission("system:allocateOrderDetail:remove")
@Log(title = "调拨子", businessType = BusinessType.DELETE)
@DeleteMapping("/{aoDIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] aoDIds) {
return toAjax(wmsAllocateOrderDetailService.deleteWithValidByIds(List.of(aoDIds), true));
}
@SaCheckPermission("system:allocateOrderDetail:remove")
@Log(title = "调拨子", businessType = BusinessType.DELETE)
@DeleteMapping("removeDetail/{aoDId}")
public R<Void> removeDetail(
@PathVariable Long aoDId) {
return toAjax(wmsAllocateOrderDetailService.deleteById(aoDId));
}
@GetMapping("selectAllocateDetails")
public R<List<WmsAllocateOrderDetailVo>> selectAllocateDetails(Long aoDId){
return R.ok(wmsAllocateOrderDetailService.selectAllocateDetails());
}
}

@ -114,4 +114,10 @@ public class WmsBaseLocationController extends BaseController {
List<WmsBaseLocationVo> list = wmsBaseLocationService.queryList(bo);
return R.ok(list);
}
@GetMapping("getWmsBaseLocationVoList")
public R<List<WmsBaseLocationVo>> getWmsBaseLocationVoList(WmsBaseLocationBo bo) {
List<WmsBaseLocationVo> list = wmsBaseLocationService.queryVoList(bo);
return R.ok(list);
}
}

@ -77,7 +77,7 @@ public class WmsInstockDetailController extends BaseController {
@Log(title = "入库单-物料", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@RequestBody WmsInstockDetailBo bo) {
public R<Void> add(@RequestBody List<WmsInstockDetailBo> bo) {
return toAjax(wmsInstockDetailService.insertByBo(bo));
}
@ -104,4 +104,11 @@ public class WmsInstockDetailController extends BaseController {
@PathVariable Long[] instockDetailIds) {
return toAjax(wmsInstockDetailService.deleteWithValidByIds(List.of(instockDetailIds), true));
}
@SaCheckPermission("system:instockDetail:remove")
@Log(title = "入库单-物料", businessType = BusinessType.DELETE)
@DeleteMapping("/removeInstockDetail/{instockDetailId}")
public R<Void> removeInstockDetail( @PathVariable Long instockDetailId) {
return toAjax(wmsInstockDetailService.deleteById(instockDetailId)>0);
}
}

@ -77,8 +77,8 @@ public class WmsInstockOrderController extends BaseController {
@Log(title = "入库单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add( @RequestBody WmsInstockOrderBo bo) {
return toAjax(wmsInstockOrderService.insertByBo(bo));
public R<WmsInstockOrderVo> add( @RequestBody WmsInstockOrderBo bo) {
return R.ok(wmsInstockOrderService.insertByBo(bo));
}
/**
@ -88,7 +88,7 @@ public class WmsInstockOrderController extends BaseController {
@Log(title = "入库单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsInstockOrderBo bo) {
public R<Void> edit(@RequestBody WmsInstockOrderBo bo) {
return toAjax(wmsInstockOrderService.updateByBo(bo));
}

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.bo.WmsInventoryCheckBo;
import org.dromara.wms.domain.vo.WmsInventoryCheckVo;
import org.dromara.wms.service.IWmsInventoryCheckService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/system/inventoryCheck
*
* @author LionLi
* @date 2025-01-10
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/inventoryCheck")
public class WmsInventoryCheckController extends BaseController {
private final IWmsInventoryCheckService wmsInventoryCheckService;
/**
*
*/
@SaCheckPermission("system:inventoryCheck:list")
@GetMapping("/list")
public TableDataInfo<WmsInventoryCheckVo> list(WmsInventoryCheckBo bo, PageQuery pageQuery) {
return wmsInventoryCheckService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("system:inventoryCheck:export")
@Log(title = "库存盘点", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsInventoryCheckBo bo, HttpServletResponse response) {
List<WmsInventoryCheckVo> list = wmsInventoryCheckService.queryList(bo);
ExcelUtil.exportExcel(list, "库存盘点", WmsInventoryCheckVo.class, response);
}
/**
*
*
* @param inventoryCheckId
*/
@SaCheckPermission("system:inventoryCheck:query")
@GetMapping("/{inventoryCheckId}")
public R<WmsInventoryCheckVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long inventoryCheckId) {
return R.ok(wmsInventoryCheckService.queryById(inventoryCheckId));
}
/**
*
*/
@SaCheckPermission("system:inventoryCheck:add")
@Log(title = "库存盘点", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@RequestBody WmsInventoryCheckBo bo) {
return toAjax(wmsInventoryCheckService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("system:inventoryCheck:edit")
@Log(title = "库存盘点", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsInventoryCheckBo bo) {
return toAjax(wmsInventoryCheckService.updateByBo(bo));
}
/**
*
*
* @param inventoryCheckIds
*/
@SaCheckPermission("system:inventoryCheck:remove")
@Log(title = "库存盘点", businessType = BusinessType.DELETE)
@DeleteMapping("/{inventoryCheckIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] inventoryCheckIds) {
return toAjax(wmsInventoryCheckService.deleteWithValidByIds(List.of(inventoryCheckIds), true));
}
/**
*
*/
@GetMapping("getWmsInventoryCheckList")
public R<List<WmsInventoryCheckVo>> getWmsInventoryChecklist(WmsInventoryCheckBo bo) {
List<WmsInventoryCheckVo> list = wmsInventoryCheckService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.bo.WmsInventoryCheckRecordBo;
import org.dromara.wms.domain.vo.WmsInventoryCheckRecordVo;
import org.dromara.wms.service.IWmsInventoryCheckRecordService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/system/inventoryCheckRecord
*
* @author LionLi
* @date 2025-01-10
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/inventoryCheckRecord")
public class WmsInventoryCheckRecordController extends BaseController {
private final IWmsInventoryCheckRecordService wmsInventoryCheckRecordService;
/**
*
*/
@SaCheckPermission("system:inventoryCheckRecord:list")
@GetMapping("/list")
public TableDataInfo<WmsInventoryCheckRecordVo> list(WmsInventoryCheckRecordBo bo, PageQuery pageQuery) {
return wmsInventoryCheckRecordService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("system:inventoryCheckRecord:export")
@Log(title = "盘点记录和调整工单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsInventoryCheckRecordBo bo, HttpServletResponse response) {
List<WmsInventoryCheckRecordVo> list = wmsInventoryCheckRecordService.queryList(bo);
ExcelUtil.exportExcel(list, "盘点记录和调整工单", WmsInventoryCheckRecordVo.class, response);
}
/**
*
*
* @param icRecordId
*/
@SaCheckPermission("system:inventoryCheckRecord:query")
@GetMapping("/{icRecordId}")
public R<WmsInventoryCheckRecordVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long icRecordId) {
return R.ok(wmsInventoryCheckRecordService.queryById(icRecordId));
}
/**
*
*/
@SaCheckPermission("system:inventoryCheckRecord:add")
@Log(title = "盘点记录和调整工单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsInventoryCheckRecordBo bo) {
return toAjax(wmsInventoryCheckRecordService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("system:inventoryCheckRecord:edit")
@Log(title = "盘点记录和调整工单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsInventoryCheckRecordBo bo) {
return toAjax(wmsInventoryCheckRecordService.updateByBo(bo));
}
/**
*
*
* @param icRecordIds
*/
@SaCheckPermission("system:inventoryCheckRecord:remove")
@Log(title = "盘点记录和调整工单", businessType = BusinessType.DELETE)
@DeleteMapping("/{icRecordIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] icRecordIds) {
return toAjax(wmsInventoryCheckRecordService.deleteWithValidByIds(List.of(icRecordIds), true));
}
/**
*
*/
@GetMapping("getWmsInventoryCheckRecordList")
public R<List<WmsInventoryCheckRecordVo>> getWmsInventoryCheckRecordlist(WmsInventoryCheckRecordBo bo) {
List<WmsInventoryCheckRecordVo> list = wmsInventoryCheckRecordService.queryList(bo);
return R.ok(list);
}
}

@ -48,6 +48,17 @@ public class WmsInventoryController extends BaseController {
return wmsInventoryService.queryPageList(bo, pageQuery);
}
/**
*
* @param bo
* @param pageQuery
* @return
*/
@GetMapping("/listInventoryAlarm")
public TableDataInfo<WmsInventoryVo> listInventoryAlarm(WmsInventoryBo bo, PageQuery pageQuery) {
return wmsInventoryService.listInventoryAlarm(bo, pageQuery);
}
/**
*
*/
@ -113,4 +124,9 @@ public class WmsInventoryController extends BaseController {
BigDecimal bigDecimal = wmsInventoryService.materailCount(materialId);
return R.ok(wmsInventoryService.materailCount(materialId));
}
@GetMapping("/getMaterialInfoList")
public R<List<WmsInventoryVo>> getMaterialInfoList(WmsInventoryBo bo) {
return R.ok(wmsInventoryService.getMaterialInfoList(bo));
}
}

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.bo.WmsMoveOrderBo;
import org.dromara.wms.domain.vo.WmsMoveOrderVo;
import org.dromara.wms.service.IWmsMoveOrderService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/system/moveOrder
*
* @author LionLi
* @date 2025-01-10
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/moveOrder")
public class WmsMoveOrderController extends BaseController {
private final IWmsMoveOrderService wmsMoveOrderService;
/**
*
*/
@SaCheckPermission("system:moveOrder:list")
@GetMapping("/list")
public TableDataInfo<WmsMoveOrderVo> list(WmsMoveOrderBo bo, PageQuery pageQuery) {
return wmsMoveOrderService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("system:moveOrder:export")
@Log(title = "移库工单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsMoveOrderBo bo, HttpServletResponse response) {
List<WmsMoveOrderVo> list = wmsMoveOrderService.queryList(bo);
ExcelUtil.exportExcel(list, "移库工单", WmsMoveOrderVo.class, response);
}
/**
*
*
* @param moveId
*/
@SaCheckPermission("system:moveOrder:query")
@GetMapping("/{moveId}")
public R<WmsMoveOrderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long moveId) {
return R.ok(wmsMoveOrderService.queryById(moveId));
}
/**
*
*/
@SaCheckPermission("system:moveOrder:add")
@Log(title = "移库工单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsMoveOrderBo bo) {
return toAjax(wmsMoveOrderService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("system:moveOrder:edit")
@Log(title = "移库工单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsMoveOrderBo bo) {
return toAjax(wmsMoveOrderService.updateByBo(bo));
}
/**
*
*
* @param moveIds
*/
@SaCheckPermission("system:moveOrder:remove")
@Log(title = "移库工单", businessType = BusinessType.DELETE)
@DeleteMapping("/{moveIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] moveIds) {
return toAjax(wmsMoveOrderService.deleteWithValidByIds(List.of(moveIds), true));
}
/**
*
*/
@GetMapping("getWmsMoveOrderList")
public R<List<WmsMoveOrderVo>> getWmsMoveOrderlist(WmsMoveOrderBo bo) {
List<WmsMoveOrderVo> list = wmsMoveOrderService.queryList(bo);
return R.ok(list);
}
}

@ -6,6 +6,9 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.WmsInstockDetail;
import org.dromara.wms.domain.WmsOutstockDetail;
import org.dromara.wms.domain.bo.WmsInstockDetailBo;
import org.dromara.wms.domain.bo.WmsOutstockDetailBo;
import org.dromara.wms.domain.vo.WmsOutstockDetailVo;
import org.dromara.wms.service.IWmsOutstockDetailService;
@ -77,7 +80,7 @@ public class WmsOutstockDetailController extends BaseController {
@Log(title = "出库单-物料", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@RequestBody WmsOutstockDetailBo bo) {
public R<Void> add(@RequestBody List<WmsOutstockDetailBo> bo) {
return toAjax(wmsOutstockDetailService.insertByBo(bo));
}
@ -101,7 +104,14 @@ public class WmsOutstockDetailController extends BaseController {
@Log(title = "出库单-物料", businessType = BusinessType.DELETE)
@DeleteMapping("/{outstockDetailIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] outstockDetailIds) {
@PathVariable Long outstockDetailIds) {
return toAjax(wmsOutstockDetailService.deleteWithValidByIds(List.of(outstockDetailIds), true));
}
@SaCheckPermission("system:outstockDetail:remove")
@Log(title = "出库单-物料", businessType = BusinessType.DELETE)
@DeleteMapping("detailRemove/{outstockDetailId}")
public R<Void> removeOutstockDetailId(@PathVariable Long outstockDetailId) {
return toAjax(wmsOutstockDetailService.deleteById(outstockDetailId)>0);
}
}

@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.wms.domain.WmsOutstockOrder;
import org.dromara.wms.domain.bo.WmsOutstockOrderBo;
import org.dromara.wms.domain.vo.WmsOutstockOrderVo;
import org.dromara.wms.service.IWmsOutstockOrderService;
@ -76,8 +77,8 @@ public class WmsOutstockOrderController extends BaseController {
@Log(title = "出库单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsOutstockOrderBo bo) {
return toAjax(wmsOutstockOrderService.insertByBo(bo));
public R<WmsOutstockOrderVo> add(@RequestBody WmsOutstockOrderBo bo) {
return R.ok(wmsOutstockOrderService.insertByBo(bo));
}
/**

@ -87,7 +87,7 @@ public class WmsOutstockRecordController extends BaseController {
@Log(title = "出库记录", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsOutstockRecordBo bo) {
public R<Void> edit(@RequestBody WmsOutstockRecordBo bo) {
return toAjax(wmsOutstockRecordService.updateByBo(bo));
}

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.wms.domain.vo.WmsPurchaseOrderVo;
import org.dromara.wms.domain.bo.WmsPurchaseOrderBo;
import org.dromara.wms.service.IWmsPurchaseOrderService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
* 访:/wms/wmsPurchaseOrder
*
* @author ZangCH
* @date 2025-01-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wmsPurchaseOrder")
public class WmsPurchaseOrderController extends BaseController {
private final IWmsPurchaseOrderService wmsPurchaseOrderService;
/**
*
*/
@SaCheckPermission("wms:wmsPurchaseOrder:list")
@GetMapping("/list")
public TableDataInfo<WmsPurchaseOrderVo> list(WmsPurchaseOrderBo bo, PageQuery pageQuery) {
return wmsPurchaseOrderService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("wms:wmsPurchaseOrder:export")
@Log(title = "采购订单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsPurchaseOrderBo bo, HttpServletResponse response) {
List<WmsPurchaseOrderVo> list = wmsPurchaseOrderService.queryList(bo);
ExcelUtil.exportExcel(list, "采购订单", WmsPurchaseOrderVo.class, response);
}
/**
*
*
* @param poId
*/
@SaCheckPermission("wms:wmsPurchaseOrder:query")
@GetMapping("/{poId}")
public R<WmsPurchaseOrderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long poId) {
return R.ok(wmsPurchaseOrderService.queryById(poId));
}
/**
*
*/
@SaCheckPermission("wms:wmsPurchaseOrder:add")
@Log(title = "采购订单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsPurchaseOrderBo bo) {
return toAjax(wmsPurchaseOrderService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("wms:wmsPurchaseOrder:edit")
@Log(title = "采购订单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsPurchaseOrderBo bo) {
return toAjax(wmsPurchaseOrderService.updateByBo(bo));
}
/**
*
*
* @param poIds
*/
@SaCheckPermission("wms:wmsPurchaseOrder:remove")
@Log(title = "采购订单", businessType = BusinessType.DELETE)
@DeleteMapping("/{poIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] poIds) {
return toAjax(wmsPurchaseOrderService.deleteWithValidByIds(List.of(poIds), true));
}
/**
*
*/
@GetMapping("getWmsPurchaseOrderList")
public R<List<WmsPurchaseOrderVo>> getWmsPurchaseOrderlist(WmsPurchaseOrderBo bo) {
List<WmsPurchaseOrderVo> list = wmsPurchaseOrderService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.wms.domain.vo.WmsPurchaseOrderDetailVo;
import org.dromara.wms.domain.bo.WmsPurchaseOrderDetailBo;
import org.dromara.wms.service.IWmsPurchaseOrderDetailService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* -
* 访:/wms/wmsPurchaseOrderDetail
*
* @author ZangCH
* @date 2025-01-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wmsPurchaseOrderDetail")
public class WmsPurchaseOrderDetailController extends BaseController {
private final IWmsPurchaseOrderDetailService wmsPurchaseOrderDetailService;
/**
* -
*/
@SaCheckPermission("wms:wmsPurchaseOrderDetail:list")
@GetMapping("/list")
public TableDataInfo<WmsPurchaseOrderDetailVo> list(WmsPurchaseOrderDetailBo bo, PageQuery pageQuery) {
return wmsPurchaseOrderDetailService.queryPageList(bo, pageQuery);
}
/**
* -
*/
@SaCheckPermission("wms:wmsPurchaseOrderDetail:export")
@Log(title = "采购订单-物料", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsPurchaseOrderDetailBo bo, HttpServletResponse response) {
List<WmsPurchaseOrderDetailVo> list = wmsPurchaseOrderDetailService.queryList(bo);
ExcelUtil.exportExcel(list, "采购订单-物料", WmsPurchaseOrderDetailVo.class, response);
}
/**
* -
*
* @param poDId
*/
@SaCheckPermission("wms:wmsPurchaseOrderDetail:query")
@GetMapping("/{poDId}")
public R<WmsPurchaseOrderDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long poDId) {
return R.ok(wmsPurchaseOrderDetailService.queryById(poDId));
}
/**
* -
*/
@SaCheckPermission("wms:wmsPurchaseOrderDetail:add")
@Log(title = "采购订单-物料", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsPurchaseOrderDetailBo bo) {
return toAjax(wmsPurchaseOrderDetailService.insertByBo(bo));
}
/**
* -
*/
@SaCheckPermission("wms:wmsPurchaseOrderDetail:edit")
@Log(title = "采购订单-物料", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsPurchaseOrderDetailBo bo) {
return toAjax(wmsPurchaseOrderDetailService.updateByBo(bo));
}
/**
* -
*
* @param poDIds
*/
@SaCheckPermission("wms:wmsPurchaseOrderDetail:remove")
@Log(title = "采购订单-物料", businessType = BusinessType.DELETE)
@DeleteMapping("/{poDIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] poDIds) {
return toAjax(wmsPurchaseOrderDetailService.deleteWithValidByIds(List.of(poDIds), true));
}
/**
* -
*/
@GetMapping("getWmsPurchaseOrderDetailList")
public R<List<WmsPurchaseOrderDetailVo>> getWmsPurchaseOrderDetaillist(WmsPurchaseOrderDetailBo bo) {
List<WmsPurchaseOrderDetailVo> list = wmsPurchaseOrderDetailService.queryList(bo);
return R.ok(list);
}
}

@ -4,6 +4,8 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import java.io.Serial;
@ -156,12 +158,12 @@ public class BaseMaterialInfo extends TenantEntity {
/**
*
*/
private Long maxStockAmount;
private BigDecimal maxStockAmount;
/**
*
*/
private Long minStockAmount;
private BigDecimal minStockAmount;
/**
*

@ -0,0 +1,130 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* wms_allocate_order
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@TableName("wms_allocate_order")
public class WmsAllocateOrder{
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(type = IdType.AUTO)
private Long aoId;
/**
*
*/
private String allocateOrderCode;
/**
*
*/
private String materialCategories;
/**
* ID
*/
private Long planWarehouseId;
/**
*
*/
private String orderStatus;
/**
* ID
*/
private Long targetWarehouseId;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
/**
*
*/
private String createOut;
/**
*
*/
private String outCode;
/**
*
*/
private String createIn;
/**
*
*/
private String inCode;
/**
*
*/
private String inMethod;
/**
* id
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private String planWarehouseCode;
@TableField(exist = false)
private String targetWarehouseCode;
}

@ -0,0 +1,82 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.util.Date;
/**
* wms_allocate_order_detail
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@TableName("wms_allocate_order_detail")
public class WmsAllocateOrderDetail {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(type = IdType.AUTO)
private Long aoDId;
/**
*
*/
private String allocateCode;
/**
* id
*/
private Long materialId;
/**
*
*/
private Long allocateOrderQty;
/**
* erp
*/
private String erpSynchronousStatus;
/**
* erp
*/
private Long erpSynchronousQty;
/**
* id
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private String materialCode;
}

@ -25,6 +25,7 @@ public class WmsInstockDetail{
/**
*
*/
@TableId(type = IdType.AUTO)
private Long instockDetailId;
/**

@ -93,6 +93,9 @@ public class WmsInventory{
private Date updateTime;
@TableField(exist = false)
private String warehouseCode;//字段映射
@TableField(exist = false)
private String materialCode;//字段映射
private String warehouseId;
}

@ -0,0 +1,112 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* wms_inventory_check
*
* @author LionLi
* @date 2025-01-10
*/
@Data
@TableName("wms_inventory_check")
public class WmsInventoryCheck {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long inventoryCheckId;
/**
*
*/
private String checkCode;
/**
*
*/
private String materialCategories;
/**
* ID
*/
private Long planWarehouseId;
/**
* 123
*/
private String checkType;
/**
* 023
*/
private String checkStatus;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
/**
* id
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private String warehouseCode;//字段映射
}

@ -0,0 +1,150 @@
package org.dromara.wms.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* wms_inventory_check_record
*
* @author LionLi
* @date 2025-01-10
*/
@Data
@TableName("wms_inventory_check_record")
public class WmsInventoryCheckRecord {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long icRecordId;
/**
*
*/
private String materialCategories;
/**
*
*/
private String checkCode;
/**
*
*/
private String batchCode;
/**
* id
*/
private Long materialId;
/**
*
*/
private String locationCode;
/**
*
*/
private String materialCode;
/**
*
*/
private String materialName;
/**
*
*/
private String inventoryQty;
/**
*
*/
private Long checkQty;
/**
* (01)
*/
private String checkStatus;
/**
* erp
*/
private String erpSynchronousStatus;
/**
* erp
*/
private Long erpSynchronousQty;
/**
* 01
*/
private String isAdjust;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
/**
* 01
*/
private String adjustStatus;
/**
* 1
*/
private String adjustType;
/**
* id
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}

@ -0,0 +1,119 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* wms_move_order
*
* @author LionLi
* @date 2025-01-10
*/
@Data
@TableName("wms_move_order")
public class WmsMoveOrder{
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
private Long moveId;
/**
* ID
*/
private Long materialId;
/**
*
*/
private String materialCategories;
/**
* ID
*/
private Long warehouseId;
/**
*
*/
private String planLocationCode;
/**
* (012)
*/
private String orderStatus;
/**
*
*/
private String targetLocationCode;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
/**
* erp
*/
private String erpSynchronousStatus;
/**
* erp
*/
private Long erpSynchronousQty;
/**
* id
*/
private String tenantId;
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private String warehouseCode;
@TableField(exist = false)
private String materialCode;
}

@ -79,8 +79,9 @@ public class WmsOutstockDetail {
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@TableField(exist = false)
private String materialCode;
private String materialName;
}

@ -1,5 +1,7 @@
package org.dromara.wms.domain;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.ibm.icu.math.BigDecimal;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@ -55,7 +57,8 @@ public class WmsOutstockRecord extends TenantEntity {
/**
*
*/
private Long outstockQty;
@TableField(typeHandler = JacksonTypeHandler.class)
private java.math.BigDecimal outstockQty;
/**
*
@ -70,7 +73,8 @@ public class WmsOutstockRecord extends TenantEntity {
/**
* erp
*/
private Long erpSynchronousQty;
@TableField(typeHandler = JacksonTypeHandler.class)
private java.math.BigDecimal erpSynchronousQty;
/**
@ -84,4 +88,8 @@ public class WmsOutstockRecord extends TenantEntity {
private String materialUnit;
@TableField(exist = false)
private String materialSpec;
@TableField(exist = false)
private java.math.BigDecimal returnQty;
private String returnFlag;
}

@ -0,0 +1,93 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* wms_purchase_order
*
* @author ZangCH
* @date 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_purchase_order")
public class WmsPurchaseOrder extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "po_id", type = IdType.AUTO)
private Long poId;
/**
*
*/
private String poNo;
/**
* (123)
*/
private String poStatus;
/**
*
*/
private String planDeliveryDate;
/**
* ID
*/
private Long supplierId;
/**
* (1,2ERP,34)
*/
private String poType;
/**
* ID
*/
private Long erpId;
/**
*
*/
private String remark;
/**
*
*/
private String materialCategories;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
}

@ -0,0 +1,71 @@
package org.dromara.wms.domain;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* - wms_purchase_order_detail
*
* @author ZangCH
* @date 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("wms_purchase_order_detail")
public class WmsPurchaseOrderDetail extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "po_d_id", type = IdType.AUTO)
private Long poDId;
/**
*
*/
private String materialCode;
/**
*
*/
private String materialName;
/**
*
*/
private String poNo;
/**
*
*/
private Long taxPrice;
/**
*
*/
private Long purchaseQty;
/**
*
*/
private String materialSpe;
/**
*
*/
private String unitName;
/**
* ==
*/
private Long deliveryQty;
}

@ -4,6 +4,8 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -45,7 +47,7 @@ public class WmsReturnOrder {
/**
*
*/
private Long planAmount;
private BigDecimal planAmount;
/**
* ID
@ -65,7 +67,7 @@ public class WmsReturnOrder {
/**
*
*/
private Long returnAmount;
private BigDecimal returnAmount;
/**
* 退
@ -127,5 +129,8 @@ public class WmsReturnOrder {
private Date updateTime;
@TableField(exist = false)
private String warehouseCode;//字段映射
@TableField(exist = false)
private String materialCode;
}

@ -8,6 +8,8 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -158,12 +160,12 @@ public class BaseMaterialInfoBo extends BaseEntity {
/**
*
*/
private Long maxStockAmount;
private BigDecimal maxStockAmount;
/**
*
*/
private Long minStockAmount;
private BigDecimal minStockAmount;
/**
*

@ -0,0 +1,119 @@
package org.dromara.wms.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.wms.domain.WmsAllocateOrder;
/**
* wms_allocate_order
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsAllocateOrder.class, reverseConvertGenerate = false)
public class WmsAllocateOrderBo extends BaseEntity {
/**
*
*/
// @NotNull(message = "表主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long aoId;
/**
*
*/
// @NotBlank(message = "调拨单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String allocateOrderCode;
/**
*
*/
// @NotBlank(message = "物料大类不能为空", groups = { AddGroup.class, EditGroup.class })
private String materialCategories;
/**
* ID
*/
// @NotNull(message = "出库仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long planWarehouseId;
/**
*
*/
// @NotBlank(message = "工单状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String orderStatus;
/**
* ID
*/
// @NotNull(message = "入库仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long targetWarehouseId;
/**
*
*/
// @NotBlank(message = "审核人不能为空", groups = { AddGroup.class, EditGroup.class })
private String auditBy;
/**
*
*/
// @NotNull(message = "审核时间不能为空", groups = { AddGroup.class, EditGroup.class })
private Date auditTime;
/**
* (0,1,2)
*/
// @NotBlank(message = "审核状态(0待审核,1审核通过,2审核未通过)不能为空", groups = { AddGroup.class, EditGroup.class })
private String auditStatus;
/**
*
*/
// @NotBlank(message = "审核意见不能为空", groups = { AddGroup.class, EditGroup.class })
private String auditComments;
/**
*
*/
// @NotBlank(message = "是否创建出库单不能为空", groups = { AddGroup.class, EditGroup.class })
private String createOut;
/**
*
*/
// @NotBlank(message = "出库单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String outCode;
/**
*
*/
// @NotBlank(message = "是否创建入库单不能为空", groups = { AddGroup.class, EditGroup.class })
private String createIn;
/**
*
*/
// @NotBlank(message = "入库单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String inCode;
/**
*
*/
// @NotBlank(message = "入库方式不能为空", groups = { AddGroup.class, EditGroup.class })
private String inMethod;
private String tenantId;
private String planWarehouseCode;
private String targetWarehouseCode;
}

@ -0,0 +1,61 @@
package org.dromara.wms.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.wms.domain.WmsAllocateOrderDetail;
/**
* wms_allocate_order_detail
*
* @author LionLi
* @date 2025-01-09
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsAllocateOrderDetail.class, reverseConvertGenerate = false)
public class WmsAllocateOrderDetailBo extends BaseEntity {
/**
*
*/
// @NotNull(message = "调拨子表主键不能为空", groups = { AddGroup.class, EditGroup.class })
private Long aoDId;
/**
*
*/
// @NotBlank(message = "调拨单号不能为空", groups = { AddGroup.class, EditGroup.class })
private String allocateCode;
/**
* id
*/
// @NotNull(message = "物料id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long materialId;
/**
*
*/
// @NotNull(message = "调拨数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long allocateOrderQty;
/**
* erp
*/
// @NotBlank(message = "erp同步状态不能为空", groups = { AddGroup.class, EditGroup.class })
private String erpSynchronousStatus;
/**
* erp
*/
// @NotNull(message = "erp同步数量不能为空", groups = { AddGroup.class, EditGroup.class })
private Long erpSynchronousQty;
private String tenantId;
}

@ -76,5 +76,6 @@ public class WmsInventoryBo extends BaseEntity {
@NotNull(message = "仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long storeId;
private String tenantId;
private String warehouseId;
}

@ -0,0 +1,92 @@
package org.dromara.wms.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.wms.domain.WmsInventoryCheck;
/**
* wms_inventory_check
*
* @author LionLi
* @date 2025-01-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsInventoryCheck.class, reverseConvertGenerate = false)
public class WmsInventoryCheckBo extends BaseEntity {
/**
*
*/
private Long inventoryCheckId;
/**
*
*/
private String checkCode;
/**
*
*/
private String materialCategories;
/**
* ID
*/
private Long planWarehouseId;
/**
* 123
*/
private String checkType;
/**
* 023
*/
private String checkStatus;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
/**
*
*/
private Date beginTime;
/**
*
*/
private Date endTime;
private String tenantId;
}

@ -0,0 +1,132 @@
package org.dromara.wms.domain.bo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.wms.domain.WmsInventoryCheckRecord;
/**
* wms_inventory_check_record
*
* @author LionLi
* @date 2025-01-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = WmsInventoryCheckRecord.class, reverseConvertGenerate = false)
public class WmsInventoryCheckRecordBo extends BaseEntity {
/**
*
*/
private Long icRecordId;
/**
*
*/
private String materialCategories;
/**
*
*/
private String checkCode;
/**
*
*/
private String batchCode;
/**
* id
*/
private Long materialId;
/**
*
*/
private String locationCode;
/**
*
*/
private String materialCode;
/**
*
*/
private String materialName;
/**
*
*/
private String inventoryQty;
/**
*
*/
private Long checkQty;
/**
* (01)
*/
private String checkStatus;
/**
* erp
*/
private String erpSynchronousStatus;
/**
* erp
*/
private Long erpSynchronousQty;
/**
* 01
*/
private String isAdjust;
/**
*
*/
private String auditBy;
/**
*
*/
private Date auditTime;
/**
* (0,1,2)
*/
private String auditStatus;
/**
*
*/
private String auditComments;
/**
* 01
*/
private String adjustStatus;
/**
* 1
*/
private String adjustType;
private String tenantId;
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save