diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/SaleOrderEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/SaleOrderEnum.java index 892d8a7c..b85b96b3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/SaleOrderEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/SaleOrderEnum.java @@ -13,10 +13,9 @@ import java.util.Map; public enum SaleOrderEnum{ // 1-生成、2-前段提交、3-后段提交、4-生产中、5-完成 CREATE("创建", "1"), - FRONT("前段提交", "2"), - BEHIND("后段提交", "3"), - PRODUCTING("生产中", "4"), - COMPLETE("完成", "6"), + FRONT("APS已提交", "2"), + PRODUCTING("生产中", "3"), + COMPLETE("完成", "4"), ; private String name; private String code; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java index 811f7f21..c2838268 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/WorkerOrderEnum.java @@ -9,7 +9,7 @@ import java.util.stream.Collectors; * @Date: 2023/3/16 */ public enum WorkerOrderEnum { - // 1-创建、2-下发、3-生产中、4-暂停、5-完成 6-强制完成 + // 1-创建、2-下发、3-生产中、4-暂停、5-自动完成 6-完成 7-强制完成 8-取消 CREATE("创建", "1"), SEND("下发", "2"), PRODUCTING("生产中", "3"), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/common/utils/DateUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/common/utils/DateUtil.java index 6df7ac26..8d84ffe3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/common/utils/DateUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/common/utils/DateUtil.java @@ -18,450 +18,464 @@ import java.util.Date; * * @author ruoyi */ -public class DateUtil extends org.apache.commons.lang3.time.DateUtils{ - public static String YYYY = "yyyy"; - public static String YYYY_MM = "yyyy-MM"; - public static String YYYY_MM_DD = "yyyy-MM-dd"; - public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; - public static String YYYYMMDDHHMMSS_MS = "yyyyMMddHHmmssSS"; - public static final DateTimeFormatter DFY_MD_HMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - public static final DateTimeFormatter DFY_MD = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +public class DateUtil extends org.apache.commons.lang3.time.DateUtils { + public static String YYYY = "yyyy"; + public static String YYYY_MM = "yyyy-MM"; + public static String YYYY_MM_DD = "yyyy-MM-dd"; + public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + public static String YYYYMMDDHHMMSS_MS = "yyyyMMddHHmmssSS"; + public static final DateTimeFormatter DFY_MD_HMS = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + public static final DateTimeFormatter DFY_MD = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - /** - * LocalDateTime 转时间戳 - * - * @param localDateTime / - * @return / - */ - public static Long getTimeStamp(LocalDateTime localDateTime) { - return localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond(); - } + /** + * LocalDateTime 转时间戳 + * + * @param localDateTime / + * @return / + */ + public static Long getTimeStamp(LocalDateTime localDateTime) { + return localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond(); + } - /** - * 时间戳转LocalDateTime - * - * @param timeStamp / - * @return / - */ - public static LocalDateTime fromTimeStamp(Long timeStamp) { - return LocalDateTime.ofEpochSecond(timeStamp, 0, OffsetDateTime.now().getOffset()); - } + /** + * 时间戳转LocalDateTime + * + * @param timeStamp / + * @return / + */ + public static LocalDateTime fromTimeStamp(Long timeStamp) { + return LocalDateTime.ofEpochSecond(timeStamp, 0, OffsetDateTime.now().getOffset()); + } - /** - * LocalDateTime 转 Date - * Jdk8 后 不推荐使用 {@link Date} Date - * - * @param localDateTime / - * @return / - */ - public static Date toDate(LocalDateTime localDateTime) { - return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); - } + /** + * LocalDateTime 转 Date + * Jdk8 后 不推荐使用 {@link Date} Date + * + * @param localDateTime / + * @return / + */ + public static Date toDate(LocalDateTime localDateTime) { + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } - /** - * LocalDate 转 Date - * Jdk8 后 不推荐使用 {@link Date} Date - * - * @param localDate / - * @return / - */ - public static Date toDate(LocalDate localDate) { - return toDate(localDate.atTime(LocalTime.now(ZoneId.systemDefault()))); - } + /** + * LocalDate 转 Date + * Jdk8 后 不推荐使用 {@link Date} Date + * + * @param localDate / + * @return / + */ + public static Date toDate(LocalDate localDate) { + return toDate(localDate.atTime(LocalTime.now(ZoneId.systemDefault()))); + } - /** - * Date转 LocalDateTime - * Jdk8 后 不推荐使用 {@link Date} Date - * - * @param date / - * @return / - */ - public static LocalDateTime toLocalDateTime(Date date) { - return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); - } + /** + * Date转 LocalDateTime + * Jdk8 后 不推荐使用 {@link Date} Date + * + * @param date / + * @return / + */ + public static LocalDateTime toLocalDateTime(Date date) { + return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); + } - /** - * 日期 格式化 - * - * @param localDateTime / - * @param patten / - * @return / - */ - public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) { - DateTimeFormatter df = DateTimeFormatter.ofPattern(patten); - return df.format(localDateTime); - } + /** + * 日期 格式化 + * + * @param localDateTime / + * @param patten / + * @return / + */ + public static String localDateTimeFormat(LocalDateTime localDateTime, String patten) { + DateTimeFormatter df = DateTimeFormatter.ofPattern(patten); + return df.format(localDateTime); + } - /** - * 日期 格式化 - * - * @param localDateTime / - * @param df / - * @return / - */ - public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) { - return df.format(localDateTime); - } + /** + * 日期 格式化 + * + * @param localDateTime / + * @param df / + * @return / + */ + public static String localDateTimeFormat(LocalDateTime localDateTime, DateTimeFormatter df) { + return df.format(localDateTime); + } - /** - * 日期格式化 yyyy-MM-dd HH:mm:ss - * - * @param localDateTime / - * @return / - */ - public static String localDateTimeFormatyMdHms(LocalDateTime localDateTime) { - return DFY_MD_HMS.format(localDateTime); - } + /** + * 日期格式化 yyyy-MM-dd HH:mm:ss + * + * @param localDateTime / + * @return / + */ + public static String localDateTimeFormatyMdHms(LocalDateTime localDateTime) { + return DFY_MD_HMS.format(localDateTime); + } - /** - * 日期格式化 yyyy-MM-dd - * - * @param localDateTime / - * @return / - */ - public String localDateTimeFormatyMd(LocalDateTime localDateTime) { - return DFY_MD.format(localDateTime); - } + /** + * 日期格式化 yyyy-MM-dd + * + * @param localDateTime / + * @return / + */ + public String localDateTimeFormatyMd(LocalDateTime localDateTime) { + return DFY_MD.format(localDateTime); + } - /** - * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd - * - * @param localDateTime / - * @return / - */ - public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, String pattern) { - DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); - return LocalDateTime.from(dateTimeFormatter.parse(localDateTime)); - } + /** + * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd + * + * @param localDateTime / + * @return / + */ + public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, String pattern) { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); + return LocalDateTime.from(dateTimeFormatter.parse(localDateTime)); + } - /** - * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd - * - * @param localDateTime / - * @return / - */ - public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, DateTimeFormatter dateTimeFormatter) { - return LocalDateTime.from(dateTimeFormatter.parse(localDateTime)); - } + /** + * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd + * + * @param localDateTime / + * @return / + */ + public static LocalDateTime parseLocalDateTimeFormat(String localDateTime, DateTimeFormatter dateTimeFormatter) { + return LocalDateTime.from(dateTimeFormatter.parse(localDateTime)); + } - /** - * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd HH:mm:ss - * - * @param localDateTime / - * @return / - */ - public static LocalDateTime parseLocalDateTimeFormatyMdHms(String localDateTime) { - return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime)); - } + /** + * 字符串转 LocalDateTime ,字符串格式 yyyy-MM-dd HH:mm:ss + * + * @param localDateTime / + * @return / + */ + public static LocalDateTime parseLocalDateTimeFormatyMdHms(String localDateTime) { + return LocalDateTime.from(DFY_MD_HMS.parse(localDateTime)); + } - private static String[] parsePatterns = { - "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM" - }; + private static String[] parsePatterns = { + "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM" + }; - /** - * 获取当前Date型日期 - * - * @return Date() 当前日期 - */ - public static Date getNowDate() { - return new Date(); - } + /** + * 获取当前Date型日期 + * + * @return Date() 当前日期 + */ + public static Date getNowDate() { + return new Date(); + } - /** - * 获取当前日期, 默认格式为yyyy-MM-dd - * - * @return String - */ - public static String getDate() { - return dateTimeNow(YYYY_MM_DD); - } + /** + * 获取当前日期, 默认格式为yyyy-MM-dd + * + * @return String + */ + public static String getDate() { + return dateTimeNow(YYYY_MM_DD); + } - public static final String getTime() { - return dateTimeNow(YYYY_MM_DD_HH_MM_SS); - } + public static final String getTime() { + return dateTimeNow(YYYY_MM_DD_HH_MM_SS); + } - public static final String dateTimeNowMs() { - return dateTimeNow(YYYYMMDDHHMMSS_MS); - } + public static final String dateTimeNowMs() { + return dateTimeNow(YYYYMMDDHHMMSS_MS); + } - public static final String dateTimeNow(final String format) { - return parseDateToStr(format, new Date()); - } + public static final String dateTimeNow(final String format) { + return parseDateToStr(format, new Date()); + } - public static final String dateTime(final Date date) { - return parseDateToStr(YYYY_MM_DD, date); - } + public static final String dateTime(final Date date) { + return parseDateToStr(YYYY_MM_DD, date); + } - public static final String parseDateToStr(final String format, final Date date) { - return new SimpleDateFormat(format).format(date); - } + public static final String parseDateToStr(final String format, final Date date) { + return new SimpleDateFormat(format).format(date); + } - public static final Date dateTime(final String format, final String ts) { - try { - return new SimpleDateFormat(format).parse(ts); - } - catch(ParseException e) { - throw new RuntimeException(e); - } - } + public static final Date dateTime(final String format, final String ts) { + try { + return new SimpleDateFormat(format).parse(ts); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } - /** - * 日期路径 即年/月/日 如2018/08/08 - */ - public static final String datePath() { - Date now = new Date(); - return DateFormatUtils.format(now, "yyyy/MM/dd"); - } + /** + * 日期路径 即年/月/日 如2018/08/08 + */ + public static final String datePath() { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy/MM/dd"); + } - /** - * 日期路径 即年/月/日 如20180808 - */ - public static final String dateTime() { - Date now = new Date(); - return DateFormatUtils.format(now, "yyyyMMdd"); - } + /** + * 日期路径 即年/月/日 如20180808 + */ + public static final String dateTime() { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyyMMdd"); + } - /** - * 日期路径 即年/月/日 如20180808 - */ - public static final String year() { - Date now = new Date(); - return DateFormatUtils.format(now, "yyyy"); - } + /** + * 日期路径 即年/月/日 如20180808 + */ + public static final String year() { + Date now = new Date(); + return DateFormatUtils.format(now, "yyyy"); + } - /** - * 日期型字符串转化为日期 格式 - */ - public static Date parseDates(Object str, Integer index) { - if(str == null) { - return null; - } - try { - return parseDate(str.toString(), parsePatterns[index]); - } - catch(ParseException e) { - return null; - } - } + /** + * 日期型字符串转化为日期 格式 + */ + public static Date parseDates(Object str, Integer index) { + if (str == null) { + return null; + } + try { + return parseDate(str.toString(), parsePatterns[index]); + } catch (ParseException e) { + return null; + } + } - /** - * 获取服务器启动时间 - */ - public static Date getServerStartDate() { - long time = ManagementFactory.getRuntimeMXBean().getStartTime(); - return new Date(time); - } + /** + * 获取服务器启动时间 + */ + public static Date getServerStartDate() { + long time = ManagementFactory.getRuntimeMXBean().getStartTime(); + return new Date(time); + } - /** - * 计算两个时间差 - */ - public static String getDatePoor(Date endDate, Date nowDate) { - long nd = 1000 * 24 * 60 * 60; - long nh = 1000 * 60 * 60; - long nm = 1000 * 60; - // long ns = 1000; - // 获得两个时间的毫秒时间差异 - long diff = endDate.getTime() - nowDate.getTime(); - // 计算差多少天 - long day = diff / nd; - // 计算差多少小时 - long hour = diff % nd / nh; - // 计算差多少分钟 - long min = diff % nd % nh / nm; - // 计算差多少秒//输出结果 - // long sec = diff % nd % nh % nm / ns; - return day + "天" + hour + "小时" + min + "分钟"; - } + /** + * 计算两个时间差 + */ + public static String getDatePoor(Date endDate, Date nowDate) { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + // long ns = 1000; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - nowDate.getTime(); + // 计算差多少天 + long day = diff / nd; + // 计算差多少小时 + long hour = diff % nd / nh; + // 计算差多少分钟 + long min = diff % nd % nh / nm; + // 计算差多少秒//输出结果 + // long sec = diff % nd % nh % nm / ns; + return day + "天" + hour + "小时" + min + "分钟"; + } - /** - * 计算两个时间差 - */ - public static long getDatePoorHour(Date endDate, Date nowDate) { - long nd = 1000 * 24 * 60 * 60; - long nh = 1000 * 60 * 60; - long nm = 1000 * 60; - // long ns = 1000; - // 获得两个时间的毫秒时间差异 - long diff = endDate.getTime() - nowDate.getTime(); - // 计算差多少小时 - long hour = diff % nd / nh; - return hour; - } + /** + * 计算两个时间差 + */ + public static long getDatePoorHour(Date endDate, Date nowDate) { + long nd = 1000 * 24 * 60 * 60; + long nh = 1000 * 60 * 60; + long nm = 1000 * 60; + // long ns = 1000; + // 获得两个时间的毫秒时间差异 + long diff = endDate.getTime() - nowDate.getTime(); + // 计算差多少小时 + long hour = diff % nd / nh; + return hour; + } - /** - * @Description: 根据年月日计算月份差 - * @Params: - * @Returns: - * @Author: gbx - * @Date: 2022/5/7 9:56 - * @Version 1.0 - */ - public static long getDateDiff(Date startDateTime, Date endDateTime) { - SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); - String startDate = df.format(startDateTime); - String endTime = df.format(endDateTime); - Temporal temporalNowDate = LocalDate.parse(startDate); - Temporal temporalStartTime = LocalDate.parse(endTime); - return ChronoUnit.MONTHS.between(temporalStartTime, temporalNowDate); - } + /** + * 根据年月日计算月份差 + */ + public static long getDateDiff(Date startDateTime, Date endDateTime) { + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + String startDate = df.format(startDateTime); + String endTime = df.format(endDateTime); + Temporal temporalNowDate = LocalDate.parse(startDate); + Temporal temporalStartTime = LocalDate.parse(endTime); + return ChronoUnit.MONTHS.between(temporalStartTime, temporalNowDate); + } - public static Date getTime(Date date, int amount) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - //把日期往后增加一天.整数往后推,负数往前移动(1:表示明天、-1:表示昨天,0:表示今天) - calendar.add(Calendar.DATE, amount); - return calendar.getTime(); - } + /** + * 根据一个时间段计算另一段时间段的结束时间 + */ + public static Date getDateEndFromInterval(String startDateTime, String endDateTime, Date startTime) { + // 开始和结束时间 + LocalDateTime intervalStart = LocalDateTime.parse(startDateTime, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")); + LocalDateTime intervalEnd = LocalDateTime.parse(endDateTime, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")); + // 计算时间间隔时长 + long intervalDuration = ChronoUnit.SECONDS.between(intervalStart, intervalEnd); + long interval2EndEpochSecond = startTime.toInstant().getEpochSecond() + intervalDuration; + return Date.from(Instant.ofEpochSecond(interval2EndEpochSecond)); + } - /** - * 获取过去第几天的日期 - * - * @param past - * @return - */ - public static String getPastDate(Date date, int past) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past); - Date today = calendar.getTime(); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - String result = format.format(today); - return result; - } - public static Date getSameDayHourTime(Date date, int hourOfDay) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.MILLISECOND, 0); - return calendar.getTime(); - } + public static Date getTime(Date date, int amount) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + //把日期往后增加一天.整数往后推,负数往前移动(1:表示明天、-1:表示昨天,0:表示今天) + calendar.add(Calendar.DATE, amount); + return calendar.getTime(); + } - public static String getStringDateMonthByDate(Date date) { - return parseDateToStr(YYYY_MM, date); - } + /** + * 获取过去第几天的日期 + * + * @param past + * @return + */ + public static String getPastDate(Date date, int past) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past); + Date today = calendar.getTime(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + String result = format.format(today); + return result; + } - public static Date getDateMonthByString(String date) { - return dateTime(YYYY_MM, date); - } + public static Date getSameDayHourTime(Date date, int hourOfDay) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.MILLISECOND, 0); + return calendar.getTime(); + } - /** - * 根据 年、月 获取对应的月份 的 天数 - */ - public static int getDaysByYearMonth(Date date) { - Calendar a = Calendar.getInstance(); - a.setTime(date); - a.set(Calendar.DATE, 1); - a.roll(Calendar.DATE, -1); - int maxDate = a.get(Calendar.DATE); - return maxDate; - } + public static String getStringDateMonthByDate(Date date) { + return parseDateToStr(YYYY_MM, date); + } - public static int getDaysByYearMonth2(int year, int month) { - Calendar a = Calendar.getInstance(); - a.set(Calendar.YEAR, year); - a.set(Calendar.MONTH, month - 1); - a.set(Calendar.DATE, 1); - a.roll(Calendar.DATE, -1); - int maxDate = a.get(Calendar.DATE); - return maxDate; - } + public static Date getDateMonthByString(String date) { + return dateTime(YYYY_MM, date); + } - //获取年月yyyymm - public static String getYearMonth() { - String months = ""; - Calendar a = Calendar.getInstance(); - Integer year = a.get(Calendar.YEAR); - Integer month = a.get(Calendar.MONTH); - if(month <= 9) { - months = "0" + month; - } - else{ - months = month.toString(); - } - return year + months; - } + /** + * 根据 年、月 获取对应的月份 的 天数 + */ + public static int getDaysByYearMonth(Date date) { + Calendar a = Calendar.getInstance(); + a.setTime(date); + a.set(Calendar.DATE, 1); + a.roll(Calendar.DATE, -1); + int maxDate = a.get(Calendar.DATE); + return maxDate; + } - /** - * 字符串转换为Date - * - * @param - * @return - */ - public static Date toDateByStartTime(String startTime) - throws ParseException { - startTime = startTime + " 00:00:00"; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date beginDate = dateFormat.parse(startTime); - return beginDate; - } + public static int getDaysByYearMonth2(int year, int month) { + Calendar a = Calendar.getInstance(); + a.set(Calendar.YEAR, year); + a.set(Calendar.MONTH, month - 1); + a.set(Calendar.DATE, 1); + a.roll(Calendar.DATE, -1); + int maxDate = a.get(Calendar.DATE); + return maxDate; + } - public static Date toDateByEndTime(String endTime) - throws ParseException { - endTime = endTime + " 23:59:59"; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date endDate = dateFormat.parse(endTime); - return endDate; - } + //获取年月yyyymm + public static String getYearMonth() { + String months = ""; + Calendar a = Calendar.getInstance(); + Integer year = a.get(Calendar.YEAR); + Integer month = a.get(Calendar.MONTH); + if (month <= 9) { + months = "0" + month; + } else { + months = month.toString(); + } + return year + months; + } - public static String getDate(Date date) - throws ParseException { - LocalDate time = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - String format = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - return format; - } + /** + * 字符串转换为Date + * + * @param + * @return + */ + public static Date toDateByStartTime(String startTime) + throws ParseException { + startTime = startTime + " 00:00:00"; + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date beginDate = dateFormat.parse(startTime); + return beginDate; + } - public static String getDate1(Date date) - throws ParseException { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - LocalDate time = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - String format = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - return format; - } + public static Date toDateByEndTime(String endTime) + throws ParseException { + endTime = endTime + " 23:59:59"; + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date endDate = dateFormat.parse(endTime); + return endDate; + } - public static String getDateStringYmd(String date) { - if(StringUtils.isBlank(date)) { - return ""; - } - if(!date.contains(":")) { - return date; - } - if(date.contains(".")) { - int currentYear = cn.hutool.core.date.DateUtil.thisYear(); // 假设默认使用2023年份 - String[] dateParts = date.split("\\."); - String month = dateParts[1]; - String day = dateParts[2]; - // 将提取的部分拼接成标准的日期格式"yyyy-MM-dd" - return currentYear + "-" + month + "-" + day; - } - LocalDateTime dateTime = LocalDateTime.parse(date.replace("/", "-"), DFY_MD_HMS); - return dateTime.format(DFY_MD); - } + public static String getDate(Date date) + throws ParseException { + LocalDate time = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + String format = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + return format; + } - public static Date getDate(String date) - throws ParseException { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - Date format = dateFormat.parse(date); - return format; - } + public static String getDate1(Date date) + throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + LocalDate time = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + String format = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + return format; + } - public static Date dateByEndTime(Date endTime) - throws ParseException { - String date = getDate(endTime); - date = date + " 23:59:59"; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date endDate = dateFormat.parse(date); - return endDate; - } + public static String getDateStringYmd(String date) { + if (StringUtils.isBlank(date)) { + return ""; + } + if (!date.contains(":")) { + return date; + } + if (date.contains(".")) { + int currentYear = cn.hutool.core.date.DateUtil.thisYear(); // 假设默认使用2023年份 + String[] dateParts = date.split("\\."); + String month = dateParts[1]; + String day = dateParts[2]; + // 将提取的部分拼接成标准的日期格式"yyyy-MM-dd" + return currentYear + "-" + month + "-" + day; + } + LocalDateTime dateTime = LocalDateTime.parse(date.replace("/", "-"), DFY_MD_HMS); + return dateTime.format(DFY_MD); + } - public static Date dateByStartTime(Date startTime) - throws ParseException { - String date = getDate(startTime); - date = date + " 00:00:00"; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - Date endDate = dateFormat.parse(date); - return endDate; - } + public static Date getDate(String date) + throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date format = dateFormat.parse(date); + return format; + } + + public static Date getDates(String date,String dateParseFormat ) + throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat(dateParseFormat); + Date format = dateFormat.parse(date); + return format; + } + + + public static Date dateByEndTime(Date endTime) + throws ParseException { + String date = getDate(endTime); + date = date + " 23:59:59"; + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date endDate = dateFormat.parse(date); + return endDate; + } + + public static Date dateByStartTime(Date startTime) + throws ParseException { + String date = getDate(startTime); + date = date + " 00:00:00"; + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date endDate = dateFormat.parse(date); + return endDate; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java index 3116b672..f33ed5e3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java @@ -81,4 +81,7 @@ public interface IPdmBiPersoncorrdeviceService extends IService queryAllDevice(DeviceUserQuery whereJson); + + + public void batchInsert(List deviceList); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java index bfda37fb..510bdb1e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java @@ -10,6 +10,8 @@ import org.nl.wms.device_manage.service.userdevice.dto.DeviceUserQuery; import org.nl.wms.mps_manage.other.service.dto.PersoncorrdeviceDto; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -89,4 +91,10 @@ public class PdmBiPersoncorrdeviceServiceImpl extends ServiceImpl queryAllDevice(DeviceUserQuery query) { return this.baseMapper.queryAllDevice(query); } + + + @Override + public void batchInsert(List deviceList) { + this.saveBatch(deviceList, deviceList.size()); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/WorkteamService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/WorkteamService.java index cdda683f..b44cabb2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/WorkteamService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/WorkteamService.java @@ -36,7 +36,7 @@ public interface WorkteamService { * @param team_id ID * @return Workteam */ - WorkteamDto findById(Long team_id); + WorkteamDto findById(String team_id); /** * 根据编码查询 @@ -62,7 +62,7 @@ public interface WorkteamService { * 多选删除 * @param ids / */ - void deleteAll(Long[] ids); + void deleteAll(String[] ids); /** * 班制下拉 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/TeamcorrpersonDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/TeamcorrpersonDto.java index dd8cd440..20504768 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/TeamcorrpersonDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/TeamcorrpersonDto.java @@ -14,14 +14,17 @@ import java.io.Serializable; **/ @Data public class TeamcorrpersonDto implements Serializable { - - /** 班组人员对应标识 */ - /** 防止精度丢失 */ + /** 班组人员对应标识 */ + /** + * 防止精度丢失 + */ @JsonSerialize(using= ToStringSerializer.class) private Long team_person_id; + + @JsonSerialize(using= ToStringSerializer.class) /** 班组标识 */ - private Long team_id; + private String team_id; /** 操作工标识 */ private Long jockey_id; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamDto.java index e1cbc962..391c89dd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamDto.java @@ -4,61 +4,72 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; - import java.io.Serializable; /** -* @description / -* @author geng by -* @date 2022-05-25 -**/ + * @author geng by + * @description / + * @date 2022-05-25 + **/ @Data -public class WorkteamDto implements Serializable { - - /** 班组标识 */ - /** 防止精度丢失 */ - @JsonSerialize(using= ToStringSerializer.class) - private Long team_id; - - /** 班组编码 */ - private String team_code; - - /** 班组名称 */ - private String team_name; - - /** 班制标识 */ - private Long classsystem_id; - - /** 备注 */ - private String remark; - - /** 是否启用 */ - private String is_active; - - /** 创建人 */ - private String create_id; - - /** 创建人姓名 */ - private String create_name; - - /** 创建时间 */ - private String create_time; - - /** 修改人 */ - private String update_id; - - /** 修改人姓名 */ - private String update_name; - - /** 修改时间 */ - private String update_time; - - /** 部门ID */ - private Long sysdeptid; - - /** 公司ID */ - private Long syscompanyid; - - /** 是否删除 */ - private String is_delete; +public class WorkteamDto implements Serializable{ + + @JsonSerialize(using = ToStringSerializer.class) + private String team_id; + /** + * 班组编码 + */ + private String team_code; + /** + * 班组名称 + */ + private String team_name; + /** + * 班制标识 + */ + private Long classsystem_id; + /** + * 备注 + */ + private String remark; + /** + * 是否启用 + */ + private String is_active; + /** + * 创建人 + */ + private String create_id; + /** + * 创建人姓名 + */ + private String create_name; + /** + * 创建时间 + */ + private String create_time; + /** + * 修改人 + */ + private String update_id; + /** + * 修改人姓名 + */ + private String update_name; + /** + * 修改时间 + */ + private String update_time; + /** + * 部门ID + */ + private Long sysdeptid; + /** + * 公司ID + */ + private Long syscompanyid; + /** + * 是否删除 + */ + private String is_delete; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamMenuDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamMenuDto.java new file mode 100644 index 00000000..1e985840 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/dto/WorkteamMenuDto.java @@ -0,0 +1,40 @@ +package org.nl.wms.mps_manage.other.service.dto; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import org.nl.wms.system_manage.service.user.dto.UserDto; + +import java.io.Serializable; +import java.util.List; + +/** + * @author gbx + * @description / + * @date 2022-10-10 + **/ +@Data +@JsonIgnoreProperties +public class WorkteamMenuDto implements Serializable{ + private String t_id; + /** + * 班组名称 + */ + private String t_name; + /** + * 班制标识 + */ + private String id; + /** + * 班组名称 + */ + private String name; + + /** + * 设备编码 + */ + private String device_code; + + List childMenu; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/PersoncorrdeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/PersoncorrdeviceServiceImpl.java index ee237822..833c8c80 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/PersoncorrdeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/PersoncorrdeviceServiceImpl.java @@ -1,7 +1,5 @@ - package org.nl.wms.mps_manage.other.service.impl; - import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -9,16 +7,15 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; - import lombok.RequiredArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; - import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.mps_manage.other.service.PersoncorrdeviceService; import org.nl.wms.mps_manage.other.service.dto.PersoncorrdeviceDto; - import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,217 +31,213 @@ import java.util.Map; @Service @RequiredArgsConstructor @Slf4j -public class PersoncorrdeviceServiceImpl implements PersoncorrdeviceService { +public class PersoncorrdeviceServiceImpl implements PersoncorrdeviceService{ + @Override + public Map queryAll(Map whereJson, Pageable page) { + String search = MapUtil.getStr(whereJson, "search"); + JSONObject map = new JSONObject(); + map.put("flag", "1"); + if(!StrUtil.isEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "view_person.jockey_id"); + return json; + } - @Override - public Map queryAll(Map whereJson, Pageable page) { - String search = MapUtil.getStr(whereJson, "search"); - JSONObject map = new JSONObject(); - map.put("flag", "1"); - if (!StrUtil.isEmpty(search)) { - map.put("search", "%" + search + "%"); - } - JSONObject json = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "view_person.jockey_id"); - return json; - } + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + JSONArray arr = wo.query().getResultJSONArray(0); + if(ObjectUtil.isNotEmpty(arr)) { + return arr.toJavaList(PersoncorrdeviceDto.class); + } + return null; + } - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(PersoncorrdeviceDto.class); - return null; - } + @Override + public PersoncorrdeviceDto findById(Long team_person_device_id) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + JSONObject json = wo.query("team_person_device_id = '" + team_person_device_id + "'").uniqueResult(0); + if(ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(PersoncorrdeviceDto.class); + } + return null; + } - @Override - public PersoncorrdeviceDto findById(Long team_person_device_id) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - JSONObject json = wo.query("team_person_device_id = '" + team_person_device_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(PersoncorrdeviceDto.class); - } - return null; - } + @Override + public PersoncorrdeviceDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if(ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(PersoncorrdeviceDto.class); + } + return null; + } - @Override - public PersoncorrdeviceDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(PersoncorrdeviceDto.class); - } - return null; - } + @Override + @Transactional(rollbackFor = Exception.class) + public void create(PersoncorrdeviceDto dto) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + dto.setTeam_person_device_id(IdUtil.getSnowflake(1, 1).nextId()); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } - @Override - @Transactional(rollbackFor = Exception.class) - public void create(PersoncorrdeviceDto dto) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); + @Override + @Transactional(rollbackFor = Exception.class) + public void update(PersoncorrdeviceDto dto) { + PersoncorrdeviceDto entity = this.findById(dto.getTeam_person_device_id()); + if(entity == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + for(Long jockey_id : ids) { + wo.delete("jockey_id = '" + jockey_id + "'"); + } + } - dto.setTeam_person_device_id(IdUtil.getSnowflake(1, 1).nextId()); + @Override + @Transactional(rollbackFor = Exception.class) + public void addPersons(JSONObject param) { + final JSONArray persons = param.getJSONArray("persons"); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + for(int i = 0; i < persons.size(); i++) { + final JSONObject jsonObject = persons.getJSONObject(i); + final String id = jsonObject.getString("id"); + final JSONArray jsonArray = wo.query("jockey_id = '" + id + "'").getResultJSONArray(0); + if(ObjectUtil.isEmpty(jsonArray)) { + JSONObject map = new JSONObject(); + map.put("team_person_device_id", IdUtil.getSnowflake(1, 1).nextId()); + map.put("jockey_id", id); + wo.insert(map); + } + } + } - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } + @Override + public Map getDeviceByPerson(Map whereJson, Pageable page) { + String user_id = MapUtil.getStr(whereJson, "user_id"); + JSONObject map2 = new JSONObject(); + map2.put("flag", "3"); + map2.put("user_id", user_id); + //根据人员获取设备信息 + JSONObject json = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map2).pageQuery(WqlUtil.getHttpContext(page), "device.device_code"); + JSONArray jsonArray = json.getJSONArray("content"); + JSONArray newContent = new JSONArray(); + for(int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + JSONObject map = new JSONObject(); + String device_id = jsonObject.getString("device_id"); + map.put("flag", "4"); + map.put("device_id", device_id); + //获取设备所拥有的项点信息 + JSONArray itemArray = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map).process().getResultJSONArray(0); + JSONObject newMap = new JSONObject(); + newMap.put("team_person_device_id", jsonObject.getString("team_person_device_id")); + newMap.put("device_id", jsonObject.getString("device_id")); + newMap.put("device_code", jsonObject.getString("device_code")); + newMap.put("device_name", jsonObject.getString("device_name")); + newMap.put("workprocedure_code", jsonObject.getString("workprocedure_code")); + newMap.put("workprocedure_name", jsonObject.getString("workprocedure_name")); + //循环每个设备的项点信息,将项点所对应的键设为项点编码,对应动态表格的prop + for(int j = 0; j < itemArray.size(); j++) { + JSONObject itemObject = itemArray.getJSONObject(j); + newMap.put(itemObject.getString("item_code"), itemObject.getString("item_value")); + } + newContent.add(newMap); + } + json.put("content", newContent); + return json; + } - @Override - @Transactional(rollbackFor = Exception.class) - public void update(PersoncorrdeviceDto dto) { - PersoncorrdeviceDto entity = this.findById(dto.getTeam_person_device_id()); - if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + @Override + public Map getHeader(JSONObject param) { + //动态获取设备类型下对应的项点信息 + String user_id = param.getString("user_id"); + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("user_id", user_id); + final JSONArray jsonArray = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map).process().getResultJSONArray(0); + JSONArray newArray = new JSONArray(); + for(int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String item_name = jsonObject.getString("item_name"); + JSONObject json = new JSONObject(); + json.put("label", item_name); + //将表格prop设置为项点编码 + json.put("prop", jsonObject.getString("item_code")); + json.put("show", true); + if(item_name.length() >= 6) { + json.put("width", "150"); + } + newArray.add(json); + } + JSONObject resultMap = new JSONObject(); + resultMap.put("newArray", newArray); + return resultMap; + } - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); + @Override + public JSONArray getDeviceIdByUserId(JSONObject param) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + final JSONArray resultJSONArray = wo.query("jockey_id = '" + param.getString("user_id") + "'").getResultJSONArray(0); + return resultJSONArray; + } + @Override + @Transactional(rollbackFor = Exception.class) + public void addDevices(JSONObject param) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + final String user_id = param.getString("user_id"); + final JSONArray devices = param.getJSONArray("devices"); + final JSONObject is_exists = wo.query("jockey_id = '" + user_id + "' and (device_id is null or device_id = '" + "" + "')").uniqueResult(0); + if(ObjectUtil.isNotEmpty(is_exists)) { + wo.delete("jockey_id = '" + user_id + "'"); + } + for(int i = 0; i < devices.size(); i++) { + final JSONObject jsonObject = devices.getJSONObject(i); + final String device_id = jsonObject.getString("device_id"); + final JSONObject object = wo.query("jockey_id = '" + user_id + "' and device_id = '" + device_id + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(object)) { + JSONObject map = new JSONObject(); + map.put("team_person_device_id", IdUtil.getSnowflake(1, 1).nextId()); + map.put("jockey_id", user_id); + map.put("device_id", device_id); + wo.insert(map); + } + } + } - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - for (Long jockey_id : ids) { - wo.delete("jockey_id = '" + jockey_id + "'"); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void addPersons(JSONObject param) { - final JSONArray persons = param.getJSONArray("persons"); - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - for (int i = 0; i < persons.size(); i++) { - final JSONObject jsonObject = persons.getJSONObject(i); - final String id = jsonObject.getString("id"); - final JSONArray jsonArray = wo.query("jockey_id = '" + id + "'").getResultJSONArray(0); - if (ObjectUtil.isEmpty(jsonArray)) { - JSONObject map = new JSONObject(); - map.put("team_person_device_id", IdUtil.getSnowflake(1, 1).nextId()); - map.put("jockey_id", id); - wo.insert(map); - } - } - } - - @Override - public Map getDeviceByPerson(Map whereJson, Pageable page) { - String user_id = MapUtil.getStr(whereJson, "user_id"); - JSONObject map2 = new JSONObject(); - map2.put("flag", "3"); - map2.put("user_id", user_id); - //根据人员获取设备信息 - JSONObject json = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map2).pageQuery(WqlUtil.getHttpContext(page), "device.device_code"); - JSONArray jsonArray = json.getJSONArray("content"); - JSONArray newContent = new JSONArray(); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - JSONObject map = new JSONObject(); - String device_id = jsonObject.getString("device_id"); - map.put("flag", "4"); - map.put("device_id", device_id); - //获取设备所拥有的项点信息 - JSONArray itemArray = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map).process().getResultJSONArray(0); - JSONObject newMap = new JSONObject(); - newMap.put("team_person_device_id", jsonObject.getString("team_person_device_id")); - newMap.put("device_id", jsonObject.getString("device_id")); - newMap.put("device_code", jsonObject.getString("device_code")); - newMap.put("device_name", jsonObject.getString("device_name")); - newMap.put("workprocedure_code", jsonObject.getString("workprocedure_code")); - newMap.put("workprocedure_name", jsonObject.getString("workprocedure_name")); - //循环每个设备的项点信息,将项点所对应的键设为项点编码,对应动态表格的prop - for (int j = 0; j < itemArray.size(); j++) { - JSONObject itemObject = itemArray.getJSONObject(j); - newMap.put(itemObject.getString("item_code"), itemObject.getString("item_value")); - } - newContent.add(newMap); - } - json.put("content", newContent); - return json; - } - - @Override - public Map getHeader(JSONObject param) { - //动态获取设备类型下对应的项点信息 - String user_id = param.getString("user_id"); - JSONObject map = new JSONObject(); - map.put("flag", "2"); - map.put("user_id", user_id); - final JSONArray jsonArray = WQL.getWO("MPS_Personcorrdevice001").addParamMap(map).process().getResultJSONArray(0); - JSONArray newArray = new JSONArray(); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - String item_name = jsonObject.getString("item_name"); - JSONObject json = new JSONObject(); - json.put("label", item_name); - //将表格prop设置为项点编码 - json.put("prop", jsonObject.getString("item_code")); - json.put("show", true); - if (item_name.length() >= 6) { - json.put("width", "150"); - } - newArray.add(json); - } - JSONObject resultMap = new JSONObject(); - resultMap.put("newArray", newArray); - return resultMap; - } - - @Override - public JSONArray getDeviceIdByUserId(JSONObject param) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - final JSONArray resultJSONArray = wo.query("jockey_id = '" + param.getString("user_id") + "'").getResultJSONArray(0); - return resultJSONArray; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void addDevices(JSONObject param) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - final String user_id = param.getString("user_id"); - final JSONArray devices = param.getJSONArray("devices"); - final JSONObject is_exists = wo.query("jockey_id = '" + user_id + "' and (device_id is null or device_id = '" + "" + "')").uniqueResult(0); - if (ObjectUtil.isNotEmpty(is_exists)) { - wo.delete("jockey_id = '" + user_id + "'"); - } - for (int i = 0; i < devices.size(); i++) { - final JSONObject jsonObject = devices.getJSONObject(i); - final String device_id = jsonObject.getString("device_id"); - final JSONObject object = wo.query("jockey_id = '" + user_id + "' and device_id = '" + device_id + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(object)) { - JSONObject map = new JSONObject(); - map.put("team_person_device_id", IdUtil.getSnowflake(1, 1).nextId()); - map.put("jockey_id", user_id); - map.put("device_id", device_id); - wo.insert(map); - } - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteRow(JSONObject param) { - JSONArray rows = param.getJSONArray("rows"); - final String user_id = param.getString("user_id"); - WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); - for (int i = 0; i < rows.size(); i++) { - final JSONObject jsonObject = rows.getJSONObject(i); - final String team_person_device_id = jsonObject.getString("team_person_device_id"); - final JSONArray resultJSONArray = wo.query("team_person_device_id = '" + team_person_device_id + "'").getResultJSONArray(0); - wo.delete("team_person_device_id = '" + team_person_device_id + "'"); - } - final JSONArray resultJSONArray = wo.query("jockey_id = '" + user_id + "'").getResultJSONArray(0); - if (ObjectUtil.isEmpty(resultJSONArray)){ - JSONObject map = new JSONObject(); - map.put("team_person_device_id",IdUtil.getSnowflake(1, 1).nextId()); - map.put("jockey_id",user_id); - wo.insert(map); - } - } - + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteRow(JSONObject param) { + JSONArray rows = param.getJSONArray("rows"); + final String user_id = param.getString("user_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_personcorrdevice"); + for(int i = 0; i < rows.size(); i++) { + final JSONObject jsonObject = rows.getJSONObject(i); + final String team_person_device_id = jsonObject.getString("team_person_device_id"); + final JSONArray resultJSONArray = wo.query("team_person_device_id = '" + team_person_device_id + "'").getResultJSONArray(0); + wo.delete("team_person_device_id = '" + team_person_device_id + "'"); + } + final JSONArray resultJSONArray = wo.query("jockey_id = '" + user_id + "'").getResultJSONArray(0); + if(ObjectUtil.isEmpty(resultJSONArray)) { + JSONObject map = new JSONObject(); + map.put("team_person_device_id", IdUtil.getSnowflake(1, 1).nextId()); + map.put("jockey_id", user_id); + wo.insert(map); + } + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/WorkteamServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/WorkteamServiceImpl.java index 6651a8b0..cfd16170 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/WorkteamServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/other/service/impl/WorkteamServiceImpl.java @@ -4,7 +4,6 @@ package org.nl.wms.mps_manage.other.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; @@ -12,6 +11,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.IdUtil; import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; @@ -63,7 +63,7 @@ public class WorkteamServiceImpl implements WorkteamService { } @Override - public WorkteamDto findById(Long team_id) { + public WorkteamDto findById(String team_id) { WQLObject wo = WQLObject.getWQLObject("pdm_bi_workteam"); JSONObject json = wo.query("team_id = '" + team_id + "'").uniqueResult(0); if (ObjectUtil.isNotEmpty(json)) { @@ -95,7 +95,7 @@ public class WorkteamServiceImpl implements WorkteamService { WorkteamDto byCode = this.findByCode(team_code); if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!"); - dto.setTeam_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setTeam_id(IdUtil.getStringId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); dto.setUpdate_id(currentUserId); @@ -138,10 +138,10 @@ public class WorkteamServiceImpl implements WorkteamService { @Override @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { + public void deleteAll(String[] ids) { WQLObject wo = WQLObject.getWQLObject("pdm_bi_workteam"); WQLObject wo_person = WQLObject.getWQLObject("PDM_BI_TeamCorrPerson"); - for (Long team_id : ids) { + for (String team_id : ids) { wo.delete("team_id = '" + team_id + "'"); wo_person.delete("team_id = '" + team_id + "'"); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java index 96521de8..0485b54a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java @@ -9,6 +9,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import org.nl.common.domain.query.PageQuery; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml index b374fc9b..a9504d7d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -20,6 +20,14 @@ and der.sale_code = #{query.sale_code} + + and ( + der.sale_code = #{query.search} or + mater.material_code LIKE '%${query.search}%' or + mater.material_name LIKE '%${query.search}%' or + mater.material_spec LIKE '%${query.search}%' + ) + and der.status = #{query.status} @@ -45,7 +53,9 @@ and #{query.plan_end_time} >= der.plandeliver_date - order by der.sale_code,seq_no + + order by ${pageQuery.sort} + - SELECT device.* FROM @@ -13,14 +12,13 @@ and device.workprocedure_id = #{workprocedure_id} - and device.product_area = #{product_area} and device.device_code not in ( select o.device_code as device_code from PDM_produce_workOrder o - where '5' > o.workorder_status and o.is_delete = '0' ) + where '5' > o.workorder_status and o.is_delete = '0' and device_code IS NOT NULL) + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java index 37fb0560..22678ffd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java @@ -1,14 +1,43 @@ package org.nl.wms.product_manage.service.teamcorrPerson.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.nl.common.enums.StatusEnum; +import org.nl.common.enums.WorkerOrderEnum; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.RedissonUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.device_manage.service.userdevice.IPdmBiPersoncorrdeviceService; +import org.nl.wms.device_manage.service.userdevice.dao.PdmBiPersoncorrdevice; +import org.nl.wms.device_manage.service.userdevice.dao.mapper.PdmBiPersoncorrdeviceMapper; +import org.nl.wms.mps_manage.other.service.dto.WorkteamMenuDto; import org.nl.wms.product_manage.service.teamcorrPerson.dao.PdmBiTeamcorrperson; import org.nl.wms.product_manage.service.teamcorrPerson.dao.mapper.PdmBiTeamcorrpersonMapper; import org.nl.wms.product_manage.service.teamcorrPerson.IPdmBiTeamcorrpersonService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.product_manage.service.teamcorrPerson.dto.WorkTeamQuery; +import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.stream.Collectors; /** *

@@ -19,15 +48,128 @@ import java.util.Map; * @since 2023-06-20 */ @Service -public class PdmBiTeamcorrpersonServiceImpl extends ServiceImpl implements IPdmBiTeamcorrpersonService { +public class PdmBiTeamcorrpersonServiceImpl extends ServiceImpl implements IPdmBiTeamcorrpersonService{ + @Resource + private PdmBiTeamcorrpersonMapper pdmBiTeamcorrpersonMapper; + @Resource + private IPdmBiPersoncorrdeviceService pdmBiPersoncorrdeviceService; + @Resource + private PdmBiPersoncorrdeviceMapper pdmBiPersoncorrdeviceMapper; - @Override - public List queryAll(WorkTeamQuery query) { - return this.baseMapper.queryAll(query); - } + @Resource + private IPdmProduceWorkorderService pdmProduceWorkorderService; - @Override - public List queryUser(WorkTeamQuery query) { - return this.baseMapper.queryUser(query); - } + + @Resource + @Qualifier("meshandlerPool") + private ThreadPoolExecutor pool; + + @Override + public List queryAll(WorkTeamQuery query) { + return this.baseMapper.queryAll(query); + } + + @Override + public List queryUser(WorkTeamQuery query) { + return this.baseMapper.queryUser(query); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTeamSelect(JSONArray params) { + List paramList = new ArrayList<>(); + List deviceList = new ArrayList<>(); + String device_code = ""; + int num =0; + for(int i = 0; i < params.size(); i++) { + JSONArray innerArray = params.getJSONArray(i); + for(int j = 0; j < innerArray.size(); j++) { + num++; + String value = innerArray.getString(j); + if(value.contains("device_no")) { + device_code = value.substring(value.indexOf(":") + 1); + continue; + } + paramList.add(value); + } + } + if(num>2) + { + throw new BadRequestException("一台设备只能绑定一个人员"); + } + String finalDevice_code = device_code; + RedissonUtils.lock(() -> + { + pdmBiPersoncorrdeviceMapper.delete(new LambdaQueryWrapper().eq(PdmBiPersoncorrdevice::getDevice_code, finalDevice_code)); + }, device_code, null); + for(String s : paramList) { + PdmBiPersoncorrdevice pdmBiPersoncorrdevice = new PdmBiPersoncorrdevice(); + pdmBiPersoncorrdevice.setId(IdUtil.getStringId()); + pdmBiPersoncorrdevice.setDevice_code(device_code); + pdmBiPersoncorrdevice.setUser_id(s); + deviceList.add(pdmBiPersoncorrdevice); + } + if(deviceList.size() > 0) { + pdmBiPersoncorrdeviceService.batchInsert(deviceList); + } + //更新设备绑定的人员到工单 + pdmProduceWorkorderService.update(new LambdaUpdateWrapper().eq(PdmProduceWorkorder::getDevice_code,device_code).in(PdmProduceWorkorder::getWorkorder_status, WorkerOrderEnum.CREATE.getCode(),WorkerOrderEnum.SEND.getCode(),WorkerOrderEnum.STOP.getCode()).set(PdmProduceWorkorder::getCurrent_produce_person_id,paramList.get(0))); + } + + @Override + public Map queryTeamSelect(JSONObject queryParams) { + Map queryList = new HashMap<>(); + List> capList = new ArrayList<>(); + CompletableFuture future1 = CompletableFuture.supplyAsync(() -> + { + List menuQueryResult = pdmBiTeamcorrpersonMapper.queryTeamList("-1"); + List menuResult = getWorkteamMenuDtos(menuQueryResult, false, queryParams.getString("device_code")); + return queryList.put("menuResult", menuResult); + }, pool); + CompletableFuture future2 = CompletableFuture.supplyAsync(() -> + { + List checkQueryResult = pdmBiTeamcorrpersonMapper.queryTeamList("d.user_id"); + List checkResult = getWorkteamMenuDtos(checkQueryResult, true, queryParams.getString("device_code")); + return queryList.put("checkResult", checkResult); + }, pool); + //线程list + capList.add(future1); + capList.add(future2); + CompletableFuture completableFuture = CompletableFuture.allOf(capList.toArray(new CompletableFuture[capList.size()])); + completableFuture.join(); + return queryList; + } + + private static List getWorkteamMenuDtos(List queryResult, boolean isfilter, String device_code) { + Map parentMap = new HashMap<>(); + List result = new ArrayList<>(); + for(WorkteamMenuDto item : queryResult) { + String tId = item.getT_id(); + String tName = item.getT_name(); + if(!parentMap.containsKey(tId)) { + WorkteamMenuDto parent = new WorkteamMenuDto(); + parent.setT_id(tId); + parent.setT_name(tName); + parent.setChildMenu(new ArrayList<>()); + parentMap.put(tId, parent); + result.add(parent); + } + WorkteamMenuDto parent = parentMap.get(tId); + WorkteamMenuDto child = new WorkteamMenuDto(); + if(isfilter) { + //只取设备绑定的人员信息 + if(device_code.equals(item.getDevice_code())) { + child.setId(item.getId()); + child.setName(item.getName()); + parent.getChildMenu().add(child); + } + } + else{ + child.setId(item.getId()); + child.setName(item.getName()); + parent.getChildMenu().add(child); + } + } + return result; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java index 62852fce..0f3fff82 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java @@ -3,6 +3,7 @@ package org.nl.wms.product_manage.service.workorder; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; +import org.apache.poi.hpsf.Decimal; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.wms.analysis_manage.productCapacity.service.dto.ProductCapQuery; @@ -19,6 +20,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.math.BigDecimal; import java.util.List; import java.util.Map; @@ -196,7 +198,15 @@ public interface IPdmProduceWorkorderService extends IService queryAdjustWorkOrder(WorkorderQuery param); + + + List queryStatisticsSpec(WorkorderQuery param); + + List> queryMouldsSpec(WorkorderQuery param); + + BigDecimal getWorkOrderplanQty(JSONObject param); - List queryAdjustWorkOrder(String device_code); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java index 1a397b31..217429d7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java @@ -27,212 +27,215 @@ import lombok.experimental.SuperBuilder; @NoArgsConstructor @Builder @TableName("pdm_produce_workorder") -public class PdmProduceWorkorder implements Serializable{ - private static final long serialVersionUID = 1L; - /** - * 工单编号 - */ - @TableId(value = "workorder_id") - private String workorder_id; - /** - * 工单编号 - */ - private String workorder_code; - /** - * 班次类型 - */ - private String shift_type_scode; - /** - * 工序编码 - */ - private String workprocedure_id; - /** - * 生产区域 - */ - private String product_area; - /** - * 计划数量 - */ - private BigDecimal plan_qty; - /** - * 实际数量 - */ - @TableField(exist = false) - private BigDecimal real_qty; - /** - * 人员实际数量 - */ - private BigDecimal person_real_qty; - /** - * 电气实际数量 - */ - private BigDecimal dq_real_qty; - /** - * 物料标识 - */ - private String material_id; +public class PdmProduceWorkorder implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 工单编号 + */ + @TableId(value = "workorder_id") + private String workorder_id; + /** + * 工单编号 + */ + private String workorder_code; + /** + * 班次类型 + */ + private String shift_type_scode; + /** + * 工序编码 + */ + private String workprocedure_id; + /** + * 生产区域 + */ + private String product_area; + /** + * 计划数量 + */ + private BigDecimal plan_qty; + /** + * 实际数量 + */ + @TableField(exist = false) + private BigDecimal real_qty; + /** + * 人员实际数量 + */ + private BigDecimal person_real_qty; + /** + * 电气实际数量 + */ + private BigDecimal dq_real_qty; + /** + * 物料标识 + */ + private String material_id; +// /** +// * 物料编码 +// */ +// private String material_code; +// /** +// * 物料单重 +// */ +// private BigDecimal material_weight; + /** + * 计划生产开始时间 + */ + private String planproducestart_date; + /** + * 计划生产结束时间 + */ + private String planproduceend_date; + /** + * 实际生产开始时间 + */ + private String realproducestart_date; + /** + * 实际生产结束时间 + */ + private String realproduceend_date; + /** + * 当前生产设备编码 + */ + private String device_code; + /** + * 当前生产人员id + */ + private String current_produce_person_id; + /** + * 操作工是否允许修改报工数量 + */ + private Boolean is_canupdate_update; + /** + * 物料系列 + */ + private String materialprocess_series; + /** + * 工单状态 + */ + private String workorder_status; + /** + * 是否搬运 + */ + private Boolean is_needmove; + /** + * 销售单标识 + */ + private String sale_id; + /** + * 创建类型 + */ + private String create_type; + /** + * 工单是否异常 + */ + private Boolean is_error; + /** + * 异常信息 + */ + private String error_info; + /** + * 备注 + */ + private String remark; + /** + * 创建人 + */ + private String create_id; + /** + * 创建人 + */ + private String create_name; + /** + * 创建时间 + */ + private String create_time; + /** + * 是否删除 + */ + private Boolean is_delete; + /** + * 报工数量 + */ + private BigDecimal report_qty; + // 工单类型 10手工工单。20排产工单 + private String order_type_scode; + //报废总;报修总 + private BigDecimal nok_qty; + private BigDecimal repare_qty; + /** + * 下发人 + */ + private String down_id; + /** + * 下发人 + */ + private String down_name; + /** + * 下发时间 + */ + private String down_time; -// /** -// * 物料单重 -// */ -// private BigDecimal material_weight; - /** - * 计划生产开始时间 - */ - private String planproducestart_date; - /** - * 计划生产结束时间 - */ - private String planproduceend_date; - /** - * 实际生产开始时间 - */ - private String realproducestart_date; - /** - * 实际生产结束时间 - */ - private String realproduceend_date; - /** - * 当前生产设备编码 - */ - private String device_code; - /** - * 当前生产人员id - */ - private String current_produce_person_id; - /** - * 操作工是否允许修改报工数量 - */ - private Boolean is_canupdate_update; - /** - * 物料系列 - */ - private String materialprocess_series; - /** - * 工单状态 - */ - private String workorder_status; - /** - * 是否搬运 - */ - private Boolean is_needmove; - /** - * 销售单标识 - */ - private String sale_id; - /** - * 创建类型 - */ - private String create_type; - /** - * 工单是否异常 - */ - private Boolean is_error; - /** - * 异常信息 - */ - private String error_info; - /** - * 备注 - */ - private String remark; - /** - * 创建人 - */ - private String create_id; - /** - * 创建人 - */ - private String create_name; - /** - * 创建时间 - */ - private String create_time; - /** - * 是否删除 - */ - private Boolean is_delete; - /** - * 报工数量 - */ - private BigDecimal report_qty; - // 工单类型 10手工工单。20排产工单 - private String order_type_scode; - //报废总;报修总 - private BigDecimal nok_qty; - private BigDecimal repare_qty; - /** - * 下发人 - */ - private String down_id; - /** - * 下发人 - */ - private String down_name; - /** - * 下发时间 - */ - private String down_time; - - /** - * 开工时间 - */ - private String open_time; + /** + * 开工时间 + */ + private String open_time; - /** - * 增长率 - */ - private BigDecimal slope; + /** + * 增长率 + */ + private BigDecimal slope; - /** - * 完工人 - */ - private String confirm_id; - /** - * 完工人 - */ - private String confirm_name; - /** - * 完工时间 - */ - private String confirm_time; - /** - * aps工单状态 - */ - private String aps_workorder_status; - /** - * aps变更标识 - */ - private String aps_update_flag; - /** - * aps变更时间 - */ - private String aps_update_time; - /** - * aps内部修改标识 - */ - private String aps_update_inner_flag; - /** - * 包装扩展信息 - */ - private String package_ext; - /** - * - */ - private Integer is_used_fxx; - /** - * 修改人 - */ - private String update_id; - /** - * 修改人姓名 - */ - private String update_name; - /** - * 修改时间 - */ - private Date update_time; + /** + * 完工人 + */ + private String confirm_id; + /** + * 完工人 + */ + private String confirm_name; + /** + * 完工时间 + */ + private String confirm_time; + /** + * aps工单状态 + */ + private String aps_workorder_status; + /** + * aps变更标识 + */ + private String aps_update_flag; + /** + * aps变更时间 + */ + private String aps_update_time; + /** + * aps内部修改标识 + */ + private String aps_update_inner_flag; + /** + * 包装扩展信息 + */ + private String package_ext; + /** + * 是否属于封箱线 + */ + private Integer is_used_fxx; + /** + * 修改人 + */ + private String update_id; + /** + * 修改人姓名 + */ + private String update_name; + /** + * 修改时间 + */ + private Date update_time; /** * 报工时间 @@ -240,12 +243,33 @@ public class PdmProduceWorkorder implements Serializable{ private String stop_time; - /** - * aps工作顺序号 - */ - private Integer aps_workorder_no; + /** + * aps工作顺序号 + */ + private Integer aps_workorder_no; + /** + * aps实际开始时间 + */ + private Date aps_realproducestart_date; + + /** + * aps实际结束时间 + */ + private Date aps_realproduceend_date; + + /** + * aps指定数量 + */ + private BigDecimal aps_assign_qty; + + + /** + * aps工单类型:S父工单O子工单 + */ + private String aps_work_type; + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java index facbf59c..09dd46a2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java @@ -6,6 +6,7 @@ import org.nl.wms.analysis_manage.productCapacity.service.dto.ProductCapQuery; import org.nl.wms.analysis_manage.qlmanage.dto.QualityQuery; import org.nl.wms.analysis_manage.scrapRate.service.dto.ScrapRateQuery; import org.nl.wms.analysis_manage.workingGoods.service.dto.ByProcessQuery; +import org.nl.wms.device_manage.ios.service.structIvt.dto.StructIvtEmQuery; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto; import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; @@ -21,62 +22,92 @@ import java.util.Map; * @author generator * @since 2023-04-26 */ -public interface PdmProduceWorkorderMapper extends BaseMapper { +public interface PdmProduceWorkorderMapper extends BaseMapper{ + List pageQuery(@Param("query") WorkorderQuery query); - List pageQuery(@Param("query") WorkorderQuery query); + List getworkOrderDtl(String workorder_id); - List getworkOrderDtl(String workorder_id); + int batchUpdateByParam(@Param("event") List event, @Param("workorder_id") String workorder_id); - int batchUpdateByParam(@Param("event") List event, @Param("workorder_id")String workorder_id); + List orderList(Map qeury); - List orderList(Map qeury); + List orderListByDevLimit(Map qeury); - List orderListByDevLimit(Map qeury); + List queryExistWorkOrder(); - List queryExistWorkOrder(); + /** + * 批量新增 + * + * @param entities 新增实体集合 + */ + void insertBatch(@Param("entities") List entities); - /** - * 批量新增 - * - * @param entities 新增实体集合 - */ - void insertBatch(@Param("entities") List entities); + /** + * 在制品分析 + * + * @param query + * @return + */ + List goodAnalysis(ByProcessQuery query); - /** - * 在制品分析 - * @param query - * @return - */ - List goodAnalysis(ByProcessQuery query); + /** + * 根据设备获取工单信息 + * + * @param + * @return + */ + List queryAdjustWorkOrder(@Param("query") WorkorderQuery query); - /** - * 排产调整按设备查工单 - * @param device_code - * @return - */ - List queryAdjustWorkOrder(String device_code); + /** + * 获取设备开机数 + * + * @param + * @return + */ + List queryDeviceCount(@Param("query") WorkorderQuery query); - /** - * 不合格品统计 - * @param query - * @return - */ - List scrapRate(ScrapRateQuery query); - /** - * 不合格品统计 - * @param query - * @return - */ - List productCap(ProductCapQuery query); - /** - * 工序质量统计 - * @param query - * @return - */ - List qualityAnalysis(QualityQuery query); - List qualityAnalysisByDevice(QualityQuery query); + /** + * 根据规格统计工单信息 + * + * @param + * @return + */ + List queryStatisticsSpec(@Param("query") WorkorderQuery query); + /** + * 根据设备统计装车信息 + * + * @param + * @return + */ + List queryMouldsSpec(@Param("query") WorkorderQuery query); + + /** + * 不合格品统计 + * + * @param query + * @return + */ + List scrapRate(ScrapRateQuery query); + + /** + * 不合格品统计 + * + * @param query + * @return + */ + List productCap(ProductCapQuery query); + + /** + * 工序质量统计 + * + * @param query + * @return + */ + List qualityAnalysis(QualityQuery query); + + List qualityAnalysisByDevice(QualityQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml index 4cab98c3..de7b624f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml @@ -23,15 +23,22 @@ LEFT JOIN sys_user users ON users.user_id = ShiftOrder.current_produce_person_id LEFT JOIN pdm_bi_device device ON ShiftOrder.device_code = device.device_code WHERE - ShiftOrder.is_delete = '0' + ShiftOrder.is_delete = '0' AND ShiftOrder.aps_work_type != 'S' and ShiftOrder.workorder_code like concat('%',#{query.workorder_code},'%') + + and ShiftOrder.workorder_code !=0 and ShiftOrder.device_code IS NOT NULL + and find_in_set(ShiftOrder.workorder_status, #{query.order_status}) - and ShiftOrder.device_code like '%${query.device_code}%' + and ShiftOrder.device_code like concat('%',#{query.device_code},'%') + + + and ShiftOrder.create_type = #{query.create_type} + and ShiftOrder.shift_type_scode = #{query.shift_type_scode} @@ -134,6 +141,7 @@ workorder.order_type_scode, workorder.nok_qty, workorder.repare_qty, + workorder.aps_workorder_no, workorder.down_id, workorder.down_name, workorder.down_time, @@ -292,31 +300,164 @@ + + + + + + + + + + + + + + - diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java index 659ed746..7d4594ae 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java @@ -18,7 +18,9 @@ import java.util.Map; public class WorkorderQuery extends BaseQuery { private String workorder_code; + private String filter_order_code; private String device_code; + private String titleSort; private String material; private String material_code; private String order_status; @@ -28,10 +30,13 @@ public class WorkorderQuery extends BaseQuery { private String workprocedure_id; private String workprocedure_codes; private String sale_id; + private String create_type; private String shift_type_scode; private String product_series; private String product_area; private String is_error; + private Integer tabIndex; + private String orderBy; @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 51ba84bc..f8a16326 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -31,10 +31,12 @@ import org.nl.wms.analysis_manage.productCapacity.service.dto.ProductCapQuery; import org.nl.wms.analysis_manage.qlmanage.dto.QualityQuery; import org.nl.wms.analysis_manage.scrapRate.service.dto.ScrapRateQuery; import org.nl.wms.analysis_manage.workingGoods.service.dto.ByProcessQuery; +import org.nl.wms.device_manage.service.userdevice.IPdmBiPersoncorrdeviceService; import org.nl.wms.ext_manage.acs.service.WmsToAcsService; import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.mps_manage.other.service.WorkOrderImportEnum; import org.nl.wms.mps_manage.other.service.dto.ProduceshiftorderDto; import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder; import org.nl.wms.mps_manage.saleorder.service.impl.MpsSaleOrderServiceImpl; @@ -54,12 +56,14 @@ import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureServic import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService; import org.nl.wms.system_manage.service.user.ISysUserService; import org.nl.wms.system_manage.service.user.dao.SysUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; @@ -71,10 +75,13 @@ import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.ParseException; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static org.nl.modules.common.utils.DateUtil.*; + /** *

* 生产工单表 服务实现类 @@ -85,289 +92,441 @@ import java.util.stream.Collectors; */ @Service @Slf4j -public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService{ - @Autowired - private IMdPbClassstandardService classstandardService; - @Autowired - private WmsToAcsService wmsToAcsService; - @Autowired - private ISysUserService userService; - @Autowired - private IMdMeMaterialbaseService materialbaseService; - @Autowired - private IPdmBiDeviceService deviceService; - @Resource - private PdmProduceWorkorderMapper pdmProduceWorkorderMapper; - @Resource - private IPdmBiWorkprocedureService workprocedureService; - @Resource - private IPdmProduceWorkorderrecordService reportRecordService; - @Autowired - private ISchBaseTaskService taskService; - @Resource - private MpsSaleOrderServiceImpl mpsSaleOrderServiceImpl; +public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService { + @Autowired + private IMdPbClassstandardService classstandardService; + @Autowired + private WmsToAcsService wmsToAcsService; + @Autowired + private ISysUserService userService; + @Autowired + private IMdMeMaterialbaseService materialbaseService; + @Autowired + private IPdmBiDeviceService deviceService; + @Resource + private PdmProduceWorkorderMapper pdmProduceWorkorderMapper; + @Resource + private IPdmBiWorkprocedureService workprocedureService; + @Resource + private IPdmProduceWorkorderrecordService reportRecordService; + @Autowired + private ISchBaseTaskService taskService; + @Resource + private IStIvtStructivtBcpService iStIvtStructivtBcpService; + @Resource + private IPdmBiPersoncorrdeviceService iPdmBiPersoncorrdeviceService; + @Resource + private MpsSaleOrderServiceImpl mpsSaleOrderServiceImpl; - @Override - public TableDataInfo queryAll(WorkorderQuery query, PageQuery pageQuery) { - if(!StringUtils.isEmpty(query.getProduct_series())) { - String collect = classstandardService.getChildIdStr(query.getProduct_series()).stream().collect(Collectors.joining("','")); - query.setProduct_series("('" + collect + "')"); - } - if(!StringUtils.isEmpty(query.getOrder_status()) && query.getOrder_status().contains("-1")) { - query.setOrder_status(query.getOrder_status().replaceAll("-1", "1,2,3,4")); - } - Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()).setOrderBy("ShiftOrder.workorder_code desc"); - List result = pdmProduceWorkorderMapper.pageQuery(query); - TableDataInfo build = TableDataInfo.build(result); - build.setTotalElements(page.getTotal()); - return build; - } + @Override + public TableDataInfo queryAll(WorkorderQuery query, PageQuery pageQuery) { + String orderBy = "ShiftOrder.workorder_code"; + if (!StringUtils.isEmpty(query.getProduct_series())) { + String collect = classstandardService.getChildIdStr(query.getProduct_series()).stream().collect(Collectors.joining("','")); + query.setProduct_series("('" + collect + "')"); + } + if (!StringUtils.isEmpty(query.getOrder_status()) && query.getOrder_status().contains("-1")) { + query.setOrder_status(query.getOrder_status().replaceAll("-1", "1,2,3,4")); + } + if (!StringUtils.isEmpty(query.getFilter_order_code())) { + orderBy = "ShiftOrder.aps_workorder_no desc"; + } + if (!StringUtils.isEmpty(query.getTitleSort())) { + orderBy = query.getTitleSort(); + } + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()).setOrderBy(orderBy); + List result = pdmProduceWorkorderMapper.pageQuery(query); + TableDataInfo build = TableDataInfo.build(result); + build.setTotalElements(page.getTotal()); + return build; + } - @Override - public Object queryAll(Map whereJson) { - return this.list(); - } + @Override + public Object queryAll(Map whereJson) { + return this.list(); + } - @Override - public void create(JSONObject form) { - JSONObject ext = form.getJSONObject("package_ext"); - PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); - if(ext != null) { - entity.setPackage_ext(ext.toJSONString()); - } - entity.setWorkorder_id(IdUtil.getStringId()); - entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER")); - String current_produce_person_id = form.getString("current_produce_person_id"); - entity.setCurrent_produce_person_id(current_produce_person_id); - if (StringUtils.isEmpty(current_produce_person_id)){ - entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId()); - } - entity.setCreate_id(SecurityUtils.getCurrentUserId()); - entity.setCreate_name(SecurityUtils.getCurrentNickName()); - entity.setCreate_time(DateUtil.now()); - entity.setCreate_type(StatusEnum.PCINTO.getCode()); - entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode()); - entity.setAps_update_time(DateUtil.now()); - this.save(entity); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id()); - } + @Override + public void create(JSONObject form) { + JSONObject ext = form.getJSONObject("package_ext"); + BigDecimal planQty = form.getBigDecimal("plan_qty"); + if (planQty.compareTo(BigDecimal.ZERO) <= 0) { + throw new BadRequestException("计划数量应大于0"); + } + PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); + if (ext != null) { + entity.setPackage_ext(ext.toJSONString()); + } + entity.setWorkorder_id(IdUtil.getStringId()); + entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER")); + String current_produce_person_id = form.getString("current_produce_person_id"); + entity.setCurrent_produce_person_id(current_produce_person_id); + if (StringUtils.isEmpty(current_produce_person_id)){ + entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId()); + } + if (StringUtils.isEmpty(current_produce_person_id)){ + entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId()); + } + entity.setCreate_id(SecurityUtils.getCurrentUserId()); + entity.setCreate_name(SecurityUtils.getCurrentNickName()); + entity.setCreate_time(DateUtil.now()); + entity.setCreate_type(StatusEnum.PCINTO.getCode()); + entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode()); + entity.setAps_update_time(DateUtil.now()); + this.save(entity); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id()); + } - @Override - public void insertBatch(List entities) { - pdmProduceWorkorderMapper.insertBatch(entities); - } + @Override + public void insertBatch(List entities) { + pdmProduceWorkorderMapper.insertBatch(entities); + } - @Override - public void updateForm(JSONObject form) { - Assert.notNull(form, "参数不能为空"); - PdmProduceWorkorder one = this.getOne(new QueryWrapper().eq("workorder_id", form.getString("workorder_id")).in("workorder_status", "1", "2", "4")); - if(one == null) { - throw new BadRequestException("工单生产状态下不允许修改"); - } - PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); - entity.setDown_time(DateUtil.now()); - entity.setDown_id(SecurityUtils.getCurrentUserId()); - entity.setDown_name(SecurityUtils.getCurrentNickName()); - entity.setAps_update_time(DateUtil.now()); - entity.setUpdate_time(new Date()); - entity.setReal_qty(null); - this.updateById(entity); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id()); - } + @Override + public void updateForm(JSONObject form) { + Assert.notNull(form, "参数不能为空"); + PdmProduceWorkorder one = this.getOne(new QueryWrapper().eq("workorder_id", form.getString("workorder_id")).in("workorder_status", "1", "2", "4")); + if (one == null) { + throw new BadRequestException("工单状态非生产状态下不允许修改"); + } + PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); + entity.setDown_time(DateUtil.now()); + entity.setDown_id(SecurityUtils.getCurrentUserId()); + entity.setDown_name(SecurityUtils.getCurrentNickName()); + entity.setAps_update_time(DateUtil.now()); + entity.setUpdate_time(new Date()); + entity.setReal_qty(null); + this.updateById(entity); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id()); + } - @Override - public List getDtl(JSONObject param) { - return this.baseMapper.getworkOrderDtl(param.getString("workorder_id")); - } - - @Override - public void down(List ids) { - if(ids == null || ids.size() == 0) { - return; - } - List workorders = this.list(new QueryWrapper().in("workorder_id", ids).lt("workorder_status", WorkerOrderEnum.AUTO_COMPLETE.getCode())); - if(workorders.size() != ids.size()) { - throw new BadRequestException("完成的工单不允许再次下发"); - } - List list = this.list(new QueryWrapper().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0")).in("workorder_id", ids)); - //aps排产完成的工单,生成工单编号再下发 - if(list.size() > 0) { - list.forEach(r -> - { - UpdateWrapper updateWrapper = new UpdateWrapper(); - updateWrapper.eq("workorder_id", r.getWorkorder_id()); - updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); - updateWrapper.set("device_code", r.getDevice_code()); - updateWrapper.set("workprocedure_id", r.getWorkprocedure_id()); - updateWrapper.set("aps_update_flag", "M"); - updateWrapper.set("aps_update_inner_flag", "M"); - updateWrapper.set("aps_update_time", DateUtil.now()); - updateWrapper.set("update_time", DateUtil.now()); - updateWrapper.set("update_id", SecurityUtils.getCurrentUserId()); - updateWrapper.set("update_name", SecurityUtils.getCurrentNickName()); - this.update(updateWrapper); - }); - } - this.update(new UpdateWrapper().set("workorder_status", WorkerOrderEnum.SEND.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("update_time", new Date()).set("down_time", new Date()).in("workorder_id", ids)); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0])); - } - - @Override - public void unDown(List ids) { - if(ids == null || ids.size() == 0) { - return; - } - List list = this.list(new QueryWrapper().ne("workorder_status", WorkerOrderEnum.SEND.getCode()).in("workorder_id", ids)); - if(list.size() > 0) { - throw new BadRequestException("只有下发状态的工单才能取消下发"); - } - this.update(new UpdateWrapper().set("workorder_status", WorkerOrderEnum.CREATE.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("down_time", new Date()).in("workorder_id", ids)); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0])); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void finish(JSONObject param) { - //强制完成时修改工单状态 - String workorder_id = param.getJSONObject("row").getString("workorder_id"); - PdmProduceWorkorder pdmProduceWorkorder = this.getOne(new QueryWrapper().eq("workorder_id", workorder_id)); - //aps排产完成的工单,生成工单编号再下发 - if(StringUtils.isEmpty(pdmProduceWorkorder.getWorkorder_code()) || pdmProduceWorkorder.getWorkorder_code().equals("0")) { - this.update(new UpdateWrapper().eq("workorder_id", pdmProduceWorkorder.getWorkorder_id()).set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"))); - } - BigDecimal report_qty = pdmProduceWorkorder.getReport_qty(); - if (report_qty == null){ - report_qty = new BigDecimal(0); - } - this.update(new UpdateWrapper().set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()).set("confirm_id", SecurityUtils.getCurrentUserId()).set("confirm_name", SecurityUtils.getCurrentNickName()).set("confirm_time", new Date()).set("aps_workorder_status", "B").set("realproduceend_date", DateUtil.now().replace("-", "/")).set("aps_update_flag", "M").set("aps_update_inner_flag", "M").set("aps_update_time", DateUtil.now()).set("update_time", DateUtil.now()).set("update_id", SecurityUtils.getCurrentUserId()).set("update_name", SecurityUtils.getCurrentNickName()).in("workorder_id", workorder_id)); - JSONArray array = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("workorder_id", workorder_id); - map.put("type", WorkerOrderEnum.COMPLETE.getCode()); - array.add(map); - //强制完成时,取消剩余未下发的任务 - taskService.update(new UpdateWrapper().set("task_status", StatusEnum.TASK_CANNEL.getCode()).eq("table_fk_id", pdmProduceWorkorder.getWorkorder_code()).lt("task_status", StatusEnum.TASK_RUNNING.getCode())); - Map result = wmsToAcsService.orderStatusUpdate(array); - if(!HttpStatus.OK.equals(result.get("status"))) { - log.error((String) result.get("message")); - } - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id); - } - - @Override - @Transactional - public Object report(JSONObject param) { - Assert.notNull(new Object[]{param, param.get("report_qty"), param.getString("workorder_id")}, "请求参数不能为空"); - PdmProduceWorkorder workorder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); - Assert.notNull(workorder, "当前工单不存在"); - // if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { - // throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); - // } - List reportList = reportRecordService.list(new QueryWrapper().eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成"))); - PdmProduceWorkorderrecord one = new PdmProduceWorkorderrecord(); - if(reportList.size() > 0) { - one = reportList.get(0); - } - else{ - throw new BadRequestException(param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); - } - //Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); - workorder.setReport_qty(workorder.getReport_qty() == null ? BigDecimal.ZERO : workorder.getReport_qty()); - workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty"))); - if(workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) { - workorder.setRealproduceend_date(DateUtil.now().replace("-", "/")); - workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode()); - workorder.setAps_workorder_status("B"); - workorder.setConfirm_time(DateUtil.now()); - workorder.setConfirm_id(SecurityUtils.getCurrentUserId()); - workorder.setConfirm_name(SecurityUtils.getCurrentNickName()); - } - else{ - workorder.setWorkorder_status(WorkerOrderEnum.STOP.getCode()); - } - JSONArray array = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("workorder_id", workorder.getWorkorder_id()); - map.put("type", WorkerOrderEnum.COMPLETE.getCode()); - array.add(map); - wmsToAcsService.orderStatusUpdate(array); - //触发APS修改指令 - workorder.setAps_update_flag("M"); - workorder.setAps_update_inner_flag("M"); - workorder.setAps_update_time(DateUtil.now()); - workorder.setUpdate_time(new Date()); - workorder.setUpdate_id(SecurityUtils.getCurrentUserId()); - workorder.setUpdate_name(SecurityUtils.getCurrentNickName()); - workorder.setStop_time(DateUtil.now()); - workorder.setReal_qty(null); - this.updateById(workorder); - reportRecordService.update(new UpdateWrapper().set("report_qty", param.getBigDecimal("report_qty")).set("report_status", ReportEnum.REPORT_STATUS.code("报工")).set("operatetime_end", DateUtil.now()).set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())).eq("macoperate_id", one.getMacoperate_id())); - return one.getMacoperate_id(); - } + @Override + public List getDtl(JSONObject param) { + return this.baseMapper.getworkOrderDtl(param.getString("workorder_id")); + } - @Override - public List queryExistWorkOrder() { - return pdmProduceWorkorderMapper.queryExistWorkOrder(); - } + /** + * 工单下发 + */ + @Override + public void down(List ids) { + if (ids == null || ids.size() == 0) { + return; + } + List workorders = this.list(new QueryWrapper().in("workorder_id", ids)); + //工单下发校验 + checkWorkOrder(workorders); + List list = this.list(new QueryWrapper().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0").or().eq("create_type", "3")).in("workorder_id", ids)); + //aps排产完成的工单,生成工单编号再下发 + if (list.size() > 0) { + list.forEach(r -> + { + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("workorder_id", r.getWorkorder_id()); + //updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + updateWrapper.set("device_code", r.getDevice_code()); + updateWrapper.set("workprocedure_id", r.getWorkprocedure_id()); + updateWrapper.set("aps_update_flag", "M"); + updateWrapper.set("aps_update_inner_flag", "M"); + updateWrapper.set("aps_update_time", DateUtil.now()); + updateWrapper.set("update_time", DateUtil.now()); + updateWrapper.set("update_id", SecurityUtils.getCurrentUserId()); + updateWrapper.set("update_name", SecurityUtils.getCurrentNickName()); + this.update(updateWrapper); + }); + } + this.update(new UpdateWrapper().set("workorder_status", WorkerOrderEnum.SEND.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("update_time", new Date()).set("down_time", new Date()).in("workorder_id", ids)); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0])); + } - @Override - public void updateReport(JSONObject param) { - Assert.notNull(param, "参数不能为空"); - PdmProduceWorkorderrecord record = reportRecordService.getOne(new QueryWrapper().eq("macoperate_id", param.getString("macoperate_id"))); - PdmProduceWorkorder workorder = this.getOne(new QueryWrapper().eq("workorder_id", record.getWorkorder_id())); - if(!workorder.getIs_canupdate_update()) { - throw new BadRequestException("当前工单设置为不允许修改报工记录"); - } - UpdateWrapper updateWrapper = new UpdateWrapper<>(); - if(param.getBigDecimal("nok_qty") != null) { - updateWrapper.set("nok_qty", param.getBigDecimal("nok_qty")); - } - if(param.getBigDecimal("repare_qty") != null) { - updateWrapper.set("repare_qty", param.getBigDecimal("repare_qty")); - } - updateWrapper.set("report_qty", param.getBigDecimal("report_qty")); - reportRecordService.update(updateWrapper.eq("macoperate_id", param.getString("macoperate_id"))); - } + //工单下发前校验 + public void checkWorkOrder(List workorders) { + //1.校验批量下发工单中是否存在已完成的/未绑定设备的工单/未绑定人员的 + boolean isFinished = workorders.stream().anyMatch(workorder -> Integer.parseInt(workorder.getWorkorder_status()) > 5 || Integer.parseInt(workorder.getWorkorder_status()) == 2 || StringUtils.isBlank(workorder.getDevice_code()) || StringUtils.isBlank(workorder.getCurrent_produce_person_id())); + if (isFinished) { + throw new BadRequestException("存在未分派人员或已下发或已完成或的工单,无法下发"); + } + //2.校验批量工单中是否有绑定相同设备 + //工作顺序号排序 + workorders = workorders.stream().sorted(Comparator.comparing(PdmProduceWorkorder::getAps_workorder_no)).collect(Collectors.toList()); + // boolean hasSameDeviceCode = workorders.stream().collect(Collectors.groupingBy(PdmProduceWorkorder::getDevice_code, Collectors.counting())).values().stream().anyMatch(count -> count > 1); + // if(hasSameDeviceCode) { + // throw new BadRequestException("一台设备只能下发一个工单"); + // } + //3.校验单个工单下发,校验下发工单列表中是否存在相同工序中更小的工单下发顺序号 + if (workorders.size() == 1) { + compareWorkorderNo(workorders.get(0).getAps_workorder_no(), workorders.get(0).getWorkprocedure_id(), workorders.get(0).getDevice_code()); + } + //根据设备号和工序分组,进行下发顺序校验 + Map> groupedWorkorders = workorders.stream().collect(Collectors.groupingBy(workorder -> workorder.getWorkprocedure_id() + "-" + workorder.getDevice_code())); + groupedWorkorders.forEach((workprocedureId, workorderList) -> + { + if (!workorderList.isEmpty() && workprocedureId.contains("-")) { + //4.批量下发,校验工单顺序是否相邻或相等,校验批量工单中的每个工单的设备,是否存在已下发的工单,如果存在,不允许继续下发 + compareWorkorderAdjoin(workorderList); + String deviceCode = workprocedureId.split("-")[1]; + PdmProduceWorkorder firstWorkorder = workorderList.get(0); + //5.校验批量下发工单列表中是否存在相同工序中更小的工单下发顺序号 + compareWorkorderNo(firstWorkorder.getAps_workorder_no(), firstWorkorder.getWorkprocedure_id(), deviceCode); + } + }); + } - public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) { - List workorders = this.list(new QueryWrapper().in("workorder_id", ids)); - for(PdmProduceWorkorder one : workorders) { - WorkorderRecord record = WorkorderRecord.builder().workorder_id(one.getWorkorder_id()).device_code(one.getDevice_code()).dq_init_qty(one.getReal_qty()).dq_finish_qty(one.getReal_qty()).operatetime_start(one.getCreate_time()).workprocedure_id(one.getWorkprocedure_id()).operatetime_end(DateUtil.now()).shift_type_scode(one.getShift_type_scode()).product_area(one.getProduct_area()).build(); - OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record); - } - } + private void compareWorkorderAdjoin(List workorders) { + for (int i = 1; i < workorders.size(); i++) { + PdmProduceWorkorder previousWorkorder = workorders.get(i - 1); + // 下发校验设备是否已有工单,一台设备只允许一个状态为下发的工单 + // List workorderList = this.list(new LambdaQueryWrapper().eq(PdmProduceWorkorder::getDevice_code, previousWorkorder.getDevice_code()).eq(PdmProduceWorkorder::getWorkorder_status, WorkerOrderEnum.SEND.getCode())); + // if (workorderList.size() > 0) { + // throw new BadRequestException("该设备已存在已下发的工单"); + // } + // 无需校验顺序号 + // if (workorders.size() == 1) { + // break; + // } + PdmProduceWorkorder currentWorkorder = workorders.get(i); + int currentApsWorkorderNo = currentWorkorder.getAps_workorder_no(); + int previousApsWorkorderNo = previousWorkorder.getAps_workorder_no(); + if (currentApsWorkorderNo != previousApsWorkorderNo + 1 && currentApsWorkorderNo != previousApsWorkorderNo) { + throw new BadRequestException("下发顺序有问题,请检查"); + } + } + } - @Override - @Transactional(rollbackFor = Exception.class) - public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) { - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - //A1_TW_+device_code 日期2023/5/30 - //material_spec='24030921S' - String name = file.getOriginalFilename(); - if(name.contains("弯头")) { - 推弯(inputStream); - } - if(name.contains("综合")) { - 综合(inputStream); - } - } - catch(Exception e) { - e.printStackTrace(); - throw new BadRequestException(e.getMessage()); - } - finally { - if(inputStream != null) { - try { - inputStream.close(); - } - catch(Exception ex) { - } - } - } - } + /** + * 校验下发工单列表中是否存在相同工序中更小的工单下发顺序号 + */ + private void compareWorkorderNo(Integer max, String workprocedureId, String deviceCode) { + Integer min = 0; + List workorderList = this.list(new QueryWrapper().eq("workprocedure_id", workprocedureId).eq("workorder_status", WorkerOrderEnum.CREATE.getCode()).eq("create_type", 3).eq("device_code", deviceCode)); + Optional minWorkorder = workorderList.stream().min(Comparator.comparing(PdmProduceWorkorder::getAps_workorder_no)); + if (minWorkorder.isPresent()) { + min = minWorkorder.get().getAps_workorder_no(); + if (!Objects.equals(max, min)) { + if (max > min) { + throw new BadRequestException("存在下发顺序更小的工单,请优先下发"); + } + } + } + } + + /** + * 工单取消下发 + */ + @Override + public void unDown(List ids) { + if (ids == null || ids.size() == 0) { + return; + } + List list = this.list(new QueryWrapper().ne("workorder_status", WorkerOrderEnum.SEND.getCode()).in("workorder_id", ids)); + if (list.size() > 0) { + throw new BadRequestException("只有下发状态的工单才能取消下发"); + } + this.update(new UpdateWrapper().set("workorder_status", WorkerOrderEnum.CREATE.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("down_time", new Date()).in("workorder_id", ids)); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0])); + } + + /** + * 工单强制完成 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void finish(JSONObject param) { + //强制完成时修改工单状态 + String workorder_id = param.getJSONObject("row").getString("workorder_id"); + PdmProduceWorkorder pdmProduceWorkorder = this.getOne(new QueryWrapper().eq("workorder_id", workorder_id)); + //aps排产完成的工单,生成工单编号再下发 + if (StringUtils.isEmpty(pdmProduceWorkorder.getWorkorder_code()) || "0".equals(pdmProduceWorkorder.getWorkorder_code())) { + this.update(new UpdateWrapper().eq("workorder_id", pdmProduceWorkorder.getWorkorder_id()).set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"))); + } + BigDecimal report_qty = pdmProduceWorkorder.getReport_qty(); + if (report_qty == null){ + report_qty = new BigDecimal(0); + } + try { + //根据计划实际生产时间获取计算对应APS实际生产时间 + Date interval2End = getDateEndFromInterval(pdmProduceWorkorder.getRealproducestart_date(), pdmProduceWorkorder.getPlanproduceend_date(), pdmProduceWorkorder.getAps_realproducestart_date()); + pdmProduceWorkorder.setAps_realproduceend_date(interval2End); + pdmProduceWorkorder.setAps_realproduceend_date(getDates(pdmProduceWorkorder.getPlanproduceend_date(),pdmProduceWorkorder.getCreate_type().equals(StatusEnum.APSINTO.getCode())?"yyyy/MM/dd HH:mm:ss":"yyyy-MM-dd HH:mm:ss")); + } catch (ParseException e) { + throw new BadRequestException(e.getMessage()); + } + pdmProduceWorkorder.setWorkorder_status(WorkerOrderEnum.FORCE_COMPLETE.getCode()); + pdmProduceWorkorder.setConfirm_id(SecurityUtils.getCurrentUserId()); + pdmProduceWorkorder.setConfirm_name(SecurityUtils.getCurrentNickName()); + pdmProduceWorkorder.setConfirm_time(DateUtil.now()); + pdmProduceWorkorder.setAps_workorder_status("B"); + pdmProduceWorkorder.setRealproduceend_date(DateUtil.now().replace("-", "/")); + pdmProduceWorkorder.setAps_update_flag("M"); + pdmProduceWorkorder.setAps_update_inner_flag("M"); + pdmProduceWorkorder.setAps_update_time(DateUtil.now()); + pdmProduceWorkorder.setUpdate_time(new Date()); + pdmProduceWorkorder.setUpdate_id(SecurityUtils.getCurrentUserId()); + pdmProduceWorkorder.setUpdate_name(SecurityUtils.getCurrentNickName()); + this.updateById(pdmProduceWorkorder); + + //更新刻字数量 + //todo 测试是否累加还是直接更新报工数量 + updateLetteringQty(pdmProduceWorkorder); + JSONArray array = new JSONArray(); + JSONObject map = new JSONObject(); + map.put("workorder_id", workorder_id); + map.put("type", WorkerOrderEnum.COMPLETE.getCode()); + array.add(map); + //强制完成时,取消剩余未下发的任务 + taskService.update(new UpdateWrapper().set("task_status", StatusEnum.TASK_CANNEL.getCode()).eq("table_fk_id", pdmProduceWorkorder.getWorkorder_code()).lt("task_status", StatusEnum.TASK_RUNNING.getCode())); + Map result = wmsToAcsService.orderStatusUpdate(array); + if (!HttpStatus.OK.equals(result.get("status"))) { + log.error((String) result.get("message")); + } + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id); + } + + /** + * 工单报工 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Object report(JSONObject param) { + Assert.notNull(new Object[]{param, param.get("report_qty"), param.getString("workorder_id")}, "请求参数不能为空"); + PdmProduceWorkorder workorder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + Assert.notNull(workorder, "当前工单不存在"); + // if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { + // throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); + // } + List reportList = reportRecordService.list(new QueryWrapper().eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成"))); + PdmProduceWorkorderrecord one; + if (reportList.size() > 0) { + one = reportList.get(0); + } else { + throw new BadRequestException(param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); + } + //Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); + workorder.setReport_qty(workorder.getReport_qty() == null ? BigDecimal.ZERO : workorder.getReport_qty()); + workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty"))); + + //自动完工 + if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) { + workorder.setRealproduceend_date(DateUtil.now().replace("-", "/")); + workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode()); + workorder.setAps_workorder_status("B"); + workorder.setConfirm_time(DateUtil.now()); + workorder.setConfirm_id(SecurityUtils.getCurrentUserId()); + workorder.setConfirm_name(SecurityUtils.getCurrentNickName()); + try { + //根据计划实际生产时间获取计算对应APS实际生产时间 + Date interval2End = getDateEndFromInterval(workorder.getRealproducestart_date(), workorder.getPlanproduceend_date(), workorder.getAps_realproducestart_date()); + workorder.setAps_realproduceend_date(interval2End); + workorder.setAps_realproduceend_date(getDates(workorder.getPlanproduceend_date(),workorder.getCreate_type().equals(StatusEnum.APSINTO.getCode())?"yyyy/MM/dd HH:mm:ss":"yyyy-MM-dd HH:mm:ss")); + } catch (ParseException e) { + throw new BadRequestException(e.getMessage()); + } + } else { + //工单暂停 + workorder.setWorkorder_status(WorkerOrderEnum.STOP.getCode()); + } + JSONArray array = new JSONArray(); + JSONObject map = new JSONObject(); + map.put("workorder_id", workorder.getWorkorder_id()); + map.put("type", WorkerOrderEnum.COMPLETE.getCode()); + array.add(map); + wmsToAcsService.orderStatusUpdate(array); + //触发APS修改指令 + workorder.setAps_update_flag("M"); + workorder.setAps_update_inner_flag("M"); + workorder.setAps_update_time(DateUtil.now()); + workorder.setUpdate_time(new Date()); + workorder.setUpdate_id(SecurityUtils.getCurrentUserId()); + workorder.setUpdate_name(SecurityUtils.getCurrentNickName()); + workorder.setReal_qty(null); + this.updateById(workorder); + //更新刻字数量 + //todo 测试是否累加还是直接更新报工数量 + updateLetteringQty(workorder); + reportRecordService.update(new UpdateWrapper().set("report_qty", param.getBigDecimal("report_qty")).set("report_status", ReportEnum.REPORT_STATUS.code("报工")).set("operatetime_end", DateUtil.now()).set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())).eq("macoperate_id", one.getMacoperate_id())); + return one.getMacoperate_id(); + } + + /** + * 报工更新刻字数量 + */ + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public void updateLetteringQty(PdmProduceWorkorder workorder) { + if (WorkOrderImportEnum.KZ.getId().equals(workorder.getWorkprocedure_id()) && workorder.getSale_id() != null && workorder.getSale_id().contains("-")) { + String[] saleInfo = workorder.getSale_id().split("-"); + if (saleInfo.length == 2) { + String saleCode = saleInfo[0]; + String saleNo = saleInfo[1]; + MpsSaleOrder mpsSaleOrder = mpsSaleOrderServiceImpl.getOne(new LambdaUpdateWrapper().eq(MpsSaleOrder::getSale_code, saleCode).eq(MpsSaleOrder::getSeq_no, saleNo)); + if (mpsSaleOrder != null) { + BigDecimal reportQty = workorder.getReport_qty(); + mpsSaleOrder.setLettering_qty(mpsSaleOrder.getLettering_qty().add(reportQty)); + mpsSaleOrderServiceImpl.updateById(mpsSaleOrder); + } + } + } + } + + @Override + public List queryExistWorkOrder() { + return pdmProduceWorkorderMapper.queryExistWorkOrder(); + } + + @Override + public void updateReport(JSONObject param) { + Assert.notNull(param, "参数不能为空"); + PdmProduceWorkorderrecord record = reportRecordService.getOne(new QueryWrapper().eq("macoperate_id", param.getString("macoperate_id"))); + PdmProduceWorkorder workorder = this.getOne(new QueryWrapper().eq("workorder_id", record.getWorkorder_id())); + if (!workorder.getIs_canupdate_update()) { + throw new BadRequestException("当前工单设置为不允许修改报工记录"); + } + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + if (param.getBigDecimal("nok_qty") != null) { + updateWrapper.set("nok_qty", param.getBigDecimal("nok_qty")); + } + if (param.getBigDecimal("repare_qty") != null) { + updateWrapper.set("repare_qty", param.getBigDecimal("repare_qty")); + } + updateWrapper.set("report_qty", param.getBigDecimal("report_qty")); + reportRecordService.update(updateWrapper.eq("macoperate_id", param.getString("macoperate_id"))); + } + + public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) { + List workorders = this.list(new QueryWrapper().in("workorder_id", ids)); + for (PdmProduceWorkorder one : workorders) { + WorkorderRecord record = WorkorderRecord.builder().workorder_id(one.getWorkorder_id()).device_code(one.getDevice_code()).dq_init_qty(one.getReal_qty()).dq_finish_qty(one.getReal_qty()).operatetime_start(one.getCreate_time()).workprocedure_id(one.getWorkprocedure_id()).operatetime_end(DateUtil.now()).shift_type_scode(one.getShift_type_scode()).product_area(one.getProduct_area()).build(); + OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request, HttpServletResponse response) { + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + //A1_TW_+device_code 日期2023/5/30 + //material_spec='24030921S' + String name = file.getOriginalFilename(); + if (name.contains("弯头")) { + 推弯(inputStream); + } + if (name.contains("综合")) { + 综合(inputStream); + } + } catch (Exception e) { + e.printStackTrace(); + throw new BadRequestException(e.getMessage()); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (Exception ex) { + } + } + } + } private void 推弯(InputStream inputStream) { ExcelReader excelReader = ExcelUtil.getReader(inputStream, "推弯计划表"); @@ -399,10 +558,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl devices = listMap.get(item.getWorkprocedure_id()); - if(item.getWorkprocedure_id().equals("1535144356586165920")) { + if("1535144356586165920".equals(item.getWorkprocedure_id())) { item.setDevice_code("A1_DC_" + item.getDevice_code().replaceAll("-", "_")); } - else if(item.getWorkprocedure_id().equals("1535143882327724032")) { + else if("1535143882327724032".equals(item.getWorkprocedure_id())) { item.setDevice_code("A1_XY_" + item.getDevice_code().replaceAll("-", "_")); } else{ @@ -657,85 +815,123 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("device_code", param.getString("device_code")).in("workorder_status", "3", "4").eq("is_delete", false).ne("workorder_id", param.getString("workorder_id"))); - if(ObjectUtil.isNotEmpty(result)) { - throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); - } - JSONArray array = new JSONArray(); - JSONObject order = packageForm(param); - //开工时更新设备生产的物料规格 - // deviceService.update(new UpdateWrapper() - // .set("spec",order.getString("material_spec")) - // .eq("device_code",order.getString("device_code"))); - array.add(order); - //下发acs - PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); - workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode()); - workOrder.setRealproducestart_date(DateUtil.now().replace("-", "/")); - //触发APS修改指令 - workOrder.setReport_qty(workOrder.getReport_qty() == null ? BigDecimal.ZERO : workOrder.getReport_qty()); - workOrder.setAps_update_flag("M"); - workOrder.setAps_update_inner_flag("M"); - workOrder.setAps_update_time(DateUtil.now()); - workOrder.setUpdate_time(new Date()); - workOrder.setUpdate_id(SecurityUtils.getCurrentUserId()); - workOrder.setUpdate_name(SecurityUtils.getCurrentNickName()); - workOrder.setRepare_qty(new BigDecimal(0)); - workOrder.setReal_qty(null); - workOrder.setOpen_time(DateUtil.now()); - this.update(workOrder, new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); - //开工为首道工序时,更新订单状态为开工 - PdmBiWorkprocedure isFirst = workprocedureService.getOne(new LambdaUpdateWrapper().eq(PdmBiWorkprocedure::getWorkprocedure_id, workOrder.getWorkprocedure_id()).eq(PdmBiWorkprocedure::getIs_first, 1)); - if(isFirst != null) { - mpsSaleOrderServiceImpl.update(new LambdaUpdateWrapper().eq(MpsSaleOrder::getAps_sale_code, workOrder.getSale_id()).set(MpsSaleOrder::getStatus, SaleOrderEnum.PRODUCTING.getCode())); - } - PdmProduceWorkorderrecord workorderrecord = packageRecordForm(workOrder); - try { - reportRecordService.save(workorderrecord); - } - catch(Exception ex) { - throw new BadRequestException("当前工单存在未报工的报工记录,请先进行报工"); - } - Map resp = wmsToAcsService.order(array); - String status = String.valueOf(resp.get("status")); - if(!status.equals("200")) { - throw new BadRequestException(resp.get("message") != null ? String.valueOf(resp.get("message")) : "acs反馈异常"); - } - return RestBusinessTemplate.execute(() -> resp); - } + /** + * 工单开工 + */ + @Override + @Transactional + public Object openStart(JSONObject param) { + //获取前台传入的开工的工单信息 + //1-创建、2-下发、3-生产中、4-暂停、6-完成 + //判断该工单状态 + try { + PdmProduceWorkorder result = this.getOne(new QueryWrapper().eq("device_code", param.getString("device_code")).in("workorder_status", "3", "4").eq("is_delete", false).ne("workorder_id", param.getString("workorder_id"))); + if (ObjectUtil.isNotEmpty(result)) { + throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); + } + JSONArray array = new JSONArray(); + JSONObject order = packageForm(param); + //开工时更新设备生产的物料规格 + // deviceService.update(new UpdateWrapper() + // .set("spec",order.getString("material_spec")) + // .eq("device_code",order.getString("device_code"))); + array.add(order); + //下发acs + PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode()); + workOrder.setRealproducestart_date(DateUtil.now().replace("-", "/")); + //触发APS修改指令 + workOrder.setReport_qty(workOrder.getReport_qty() == null ? BigDecimal.ZERO : workOrder.getReport_qty()); + workOrder.setAps_update_flag("M"); + workOrder.setAps_update_inner_flag("M"); + workOrder.setAps_update_time(DateUtil.now()); + workOrder.setUpdate_time(new Date()); + workOrder.setUpdate_id(SecurityUtils.getCurrentUserId()); + workOrder.setUpdate_name(SecurityUtils.getCurrentNickName()); + workOrder.setAps_realproducestart_date(getDates(workOrder.getPlanproducestart_date(),workOrder.getCreate_type().equals(StatusEnum.APSINTO.getCode())?"yyyy/MM/dd HH:mm:ss":"yyyy-MM-dd HH:mm:ss")); + workOrder.setReal_qty(null); + workOrder.setAps_assign_qty(workOrder.getPlan_qty()); + workOrder.setOpen_time(DateUtil.now()); + this.update(workOrder, new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + //aps拆分的工单,如果有工单因为顺序调整,提前开工,则需要把计划最早开工的工单设置开始时间 + if (workOrder.getWorkorder_id().indexOf(":") != workOrder.getWorkorder_id().lastIndexOf(":")) { + String workOrderId = workOrder.getWorkorder_id().substring(0, workOrder.getWorkorder_id().indexOf(":", workOrder.getWorkorder_id().indexOf(":") + 1)); - @NotNull - private PdmProduceWorkorderrecord packageRecordForm(PdmProduceWorkorder workOrder) { - PdmProduceWorkorderrecord workorderrecord = new PdmProduceWorkorderrecord(); - workorderrecord.setMacoperate_id(IdUtil.getStringId()); - workorderrecord.setWorkorder_id(workOrder.getWorkorder_id()); - workorderrecord.setWorkprocedure_id(workOrder.getWorkprocedure_id()); - workorderrecord.setDevice_code(workOrder.getDevice_code()); - workorderrecord.setProduct_area(workOrder.getProduct_area()); - workorderrecord.setReport_status(ReportEnum.REPORT_STATUS.code("生成")); - workorderrecord.setProduce_person_id(SecurityUtils.getCurrentUserId()); - workorderrecord.setOperatetime_start(DateUtil.now()); - workorderrecord.setShift_type_scode(workOrder.getShift_type_scode()); - return workorderrecord; - } + Optional sonWorkOrder = Optional.ofNullable(getOne(new QueryWrapper().lambda() + .like(PdmProduceWorkorder::getWorkorder_id, workOrderId) + .ne(PdmProduceWorkorder::getAps_work_type,"S") + .orderByAsc(PdmProduceWorkorder::getPlanproducestart_date) + .last("LIMIT 1"))); + sonWorkOrder.ifPresent(workOrders -> { + try { + workOrders.setAps_assign_qty(workOrders.getPlan_qty()); + workOrders.setAps_realproducestart_date(getDates(workOrders.getPlanproducestart_date(),workOrders.getCreate_type().equals(StatusEnum.APSINTO.getCode())?"yyyy/MM/dd HH:mm:ss":"yyyy-MM-dd HH:mm:ss")); + workOrders.setUpdate_time(new Date()); + } catch (ParseException e) { + throw new BadRequestException(e.getMessage()); + } + this.updateById(workOrders); + + }); + //父工单强制指定需生产数量 + Optional fatherWorkOrder = Optional.ofNullable(getOne(new QueryWrapper().lambda() + .like(PdmProduceWorkorder::getWorkorder_id, workOrderId) + .eq(PdmProduceWorkorder::getAps_work_type,"S") + .last("LIMIT 1"))); + fatherWorkOrder.ifPresent(workOrders -> { + workOrders.setAps_assign_qty(workOrders.getPlan_qty()); + workOrders.setUpdate_time(new Date()); + this.updateById(workOrders); + }); + } + //开工为首道工序时,更新订单状态为开工 + PdmBiWorkprocedure isFirst = workprocedureService.getOne(new LambdaUpdateWrapper().eq(PdmBiWorkprocedure::getWorkprocedure_id, workOrder.getWorkprocedure_id()).eq(PdmBiWorkprocedure::getIs_first, 1)); + if (isFirst != null) { + mpsSaleOrderServiceImpl.update(new LambdaUpdateWrapper().eq(MpsSaleOrder::getAps_sale_code, workOrder.getSale_id()).set(MpsSaleOrder::getStatus, SaleOrderEnum.PRODUCTING.getCode())); + } + PdmProduceWorkorderrecord workorderrecord = packageRecordForm(workOrder); + try { + reportRecordService.save(workorderrecord); + } catch (Exception ex) { + throw new BadRequestException("当前工单存在未报工的报工记录,请先进行报工"); + } + Map resp = wmsToAcsService.order(array); + String status = String.valueOf(resp.get("status")); + if (!"200".equals(status)) { + throw new BadRequestException(resp.get("message") != null ? String.valueOf(resp.get("message")) : "acs反馈异常"); + } + return RestBusinessTemplate.execute(() -> resp); + } catch (ParseException e) { + throw new BadRequestException(e.getMessage()); + } + } + + @NotNull + private PdmProduceWorkorderrecord packageRecordForm(PdmProduceWorkorder workOrder) { + PdmProduceWorkorderrecord workorderrecord = new PdmProduceWorkorderrecord(); + workorderrecord.setMacoperate_id(IdUtil.getStringId()); + workorderrecord.setWorkorder_id(workOrder.getWorkorder_id()); + workorderrecord.setWorkprocedure_id(workOrder.getWorkprocedure_id()); + workorderrecord.setDevice_code(workOrder.getDevice_code()); + workorderrecord.setProduct_area(workOrder.getProduct_area()); + workorderrecord.setReport_status(ReportEnum.REPORT_STATUS.code("生成")); + workorderrecord.setProduce_person_id(SecurityUtils.getCurrentUserId()); + workorderrecord.setOperatetime_start(DateUtil.now()); + workorderrecord.setShift_type_scode(workOrder.getShift_type_scode()); + return workorderrecord; + } @NotNull private JSONObject packageForm(JSONObject param) { @@ -764,169 +960,332 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); - Assert.notNull(workorder, "当前工单不存在"); - workorder.setRepare_qty(param.getBigDecimal("nok_qty")); - workorder.setRepare_qty(param.getBigDecimal("repare_qty")); - workorder.setReal_qty(null); - this.updateById(workorder); - } + @Override + public void unqualReport(JSONObject param) { + Assert.notNull(new Object[]{param, param.get("report_qty"), param.getString("workorder_id")}, "请求参数不能为空"); + PdmProduceWorkorder workorder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + Assert.notNull(workorder, "当前工单不存在"); + workorder.setRepare_qty(param.getBigDecimal("nok_qty")); + workorder.setRepare_qty(param.getBigDecimal("repare_qty")); + workorder.setReal_qty(null); + this.updateById(workorder); + } - @Override - @Transactional - public void reportApprove(JSONArray param) { - List workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class); - if(!CollectionUtils.isEmpty(workreportRecords)) { - List macoperate_ids = workreportRecords.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); - List record = reportRecordService.list(new QueryWrapper().in("macoperate_id", macoperate_ids)); - Map> collect = workreportRecords.stream().collect(Collectors.groupingBy(PdmProduceWorkorderrecord::getWorkorder_id)); - for(Map.Entry> entry : collect.entrySet()) { - List itemRecord = entry.getValue(); - itemRecord.forEach(item -> - { - item.setReport_status(ReportEnum.REPORT_STATUS.code("报工审核")); - item.setConfirm_id(SecurityUtils.getCurrentUserId()); - item.setConfirm_name(SecurityUtils.getCurrentNickName()); - item.setConfirm_time(DateUtil.now()); - item.setSeq_number(null); - }); - List list = packageWorkorderQty(record, itemRecord); - this.baseMapper.batchUpdateByParam(list, entry.getKey()); - reportRecordService.updateBatchById(itemRecord); - } - } - } + @Override + @Transactional + public void reportApprove(JSONArray param) { + List workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class); + if (!CollectionUtils.isEmpty(workreportRecords)) { + List macoperate_ids = workreportRecords.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); + List record = reportRecordService.list(new QueryWrapper().in("macoperate_id", macoperate_ids)); + Map> collect = workreportRecords.stream().collect(Collectors.groupingBy(PdmProduceWorkorderrecord::getWorkorder_id)); + for (Map.Entry> entry : collect.entrySet()) { + List itemRecord = entry.getValue(); + itemRecord.forEach(item -> + { + item.setReport_status(ReportEnum.REPORT_STATUS.code("报工审核")); + item.setConfirm_id(SecurityUtils.getCurrentUserId()); + item.setConfirm_name(SecurityUtils.getCurrentNickName()); + item.setConfirm_time(DateUtil.now()); + item.setSeq_number(null); + }); + List list = packageWorkorderQty(record, itemRecord); + this.baseMapper.batchUpdateByParam(list, entry.getKey()); + reportRecordService.updateBatchById(itemRecord); + } + } + } - @NotNull - private List packageWorkorderQty(List record, List itemRecord) { - List ids = itemRecord.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); - List oldRecord = record.stream().filter(item -> ids.contains(item.getMacoperate_id())).collect(Collectors.toList()); - long old_report_qty = oldRecord.stream().mapToLong(a -> a.getReport_qty().longValue()).sum(); - long new_report_qty = itemRecord.stream().mapToLong(a -> a.getReport_qty().longValue()).sum(); - List list = new ArrayList<>(); - Map report_qty = new HashMap<>(); - report_qty.put("field", "report_qty"); - report_qty.put("value", Math.abs(new_report_qty - old_report_qty)); - report_qty.put("add", new_report_qty > old_report_qty); - list.add(report_qty); - return list; - } + @NotNull + private List packageWorkorderQty(List record, List itemRecord) { + List ids = itemRecord.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); + List oldRecord = record.stream().filter(item -> ids.contains(item.getMacoperate_id())).collect(Collectors.toList()); + long old_report_qty = oldRecord.stream().mapToLong(a -> a.getReport_qty().longValue()).sum(); + long new_report_qty = itemRecord.stream().mapToLong(a -> a.getReport_qty().longValue()).sum(); + List list = new ArrayList<>(); + Map report_qty = new HashMap<>(); + report_qty.put("field", "report_qty"); + report_qty.put("value", Math.abs(new_report_qty - old_report_qty)); + report_qty.put("add", new_report_qty > old_report_qty); + list.add(report_qty); + return list; + } - //TODO:切换设备 - @Override - public void replaceDevice(JSONObject param) { - String produceorder_code = param.getString("produceorder_code"); - String device_id = param.getString("device_id"); - String device_code = param.getString("device_code"); - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - ProduceshiftorderDto produceshiftorderDto = null;//this.findByCode(produceorder_code); - produceshiftorderDto.setDevice_id(Long.parseLong(device_id)); - produceshiftorderDto.setUpdate_id(currentUserId); - produceshiftorderDto.setUpdate_name(nickName); - produceshiftorderDto.setUpdate_time(DateUtil.now()); - String order_status = produceshiftorderDto.getOrder_status(); - if(!order_status.equals("03") && !order_status.equals("01") && !order_status.equals("00")) { - JSONArray array = new JSONArray(); - JSONObject acsObj = new JSONObject(); - acsObj.put("order_code", produceorder_code); - acsObj.put("device_code", device_code); - array.add(acsObj); - Map resp = wmsToAcsService.replaceDevice(array); - String status = String.valueOf(resp.get("status")); - String message = (String) resp.get("message"); - if(!status.equals("200")) { - throw new BadRequestException(message); - } - } - //this.update(produceshiftorderDto); - } + //TODO:切换设备 + @Override + public void replaceDevice(JSONObject param) { + String produceorder_code = param.getString("produceorder_code"); + String device_id = param.getString("device_id"); + String device_code = param.getString("device_code"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + ProduceshiftorderDto produceshiftorderDto = null;//this.findByCode(produceorder_code); + produceshiftorderDto.setDevice_id(Long.parseLong(device_id)); + produceshiftorderDto.setUpdate_id(currentUserId); + produceshiftorderDto.setUpdate_name(nickName); + produceshiftorderDto.setUpdate_time(DateUtil.now()); + String order_status = produceshiftorderDto.getOrder_status(); + if (!"03".equals(order_status) && !"01".equals(order_status) && !"00".equals(order_status)) { + JSONArray array = new JSONArray(); + JSONObject acsObj = new JSONObject(); + acsObj.put("order_code", produceorder_code); + acsObj.put("device_code", device_code); + array.add(acsObj); + Map resp = wmsToAcsService.replaceDevice(array); + String status = String.valueOf(resp.get("status")); + String message = (String) resp.get("message"); + if (!"200".equals(status)) { + throw new BadRequestException(message); + } + } + //this.update(produceshiftorderDto); + } - @Override - public void download(Map whereJson, HttpServletResponse response) - throws IOException { - HashMap map = new HashMap<>(whereJson); - int i = 1; - List> excel_lst = new ArrayList<>(); - for(Map.Entry entry : map.entrySet()) { - Map mp = new LinkedHashMap<>(); - mp.put("序号", i); - mp.put("错误信息", entry.getKey() + entry.getValue()); - excel_lst.add(mp); - i++; - } - FileUtil.downloadExcel(excel_lst, response); - } + @Override + public void download(Map whereJson, HttpServletResponse response) + throws IOException { + HashMap map = new HashMap<>(whereJson); + int i = 1; + List> excel_lst = new ArrayList<>(); + for (Map.Entry entry : map.entrySet()) { + Map mp = new LinkedHashMap<>(); + mp.put("序号", i); + mp.put("错误信息", entry.getKey() + entry.getValue()); + excel_lst.add(mp); + i++; + } + FileUtil.downloadExcel(excel_lst, response); + } - @Override - public List reportQuery(ReportQuery query) { - Assert.notNull(query, "参数不能为空"); - if(query.getIs_report()) { - query.setReport_status("'1','2'"); - } - List list = reportRecordService.reportQuery(query); - Map hashMap = new HashMap<>(); - int i = 0; - for(Map map : list) { - String code = (String) map.get("workorder_code"); - if(hashMap.get(code) == null) { - hashMap.put(code, code); - i = 0; - } - i++; - map.put("seq_number", i); - } - return list; - } + @Override + public List reportQuery(ReportQuery query) { + Assert.notNull(query, "参数不能为空"); + if (query.getIs_report()) { + query.setReport_status("'1','2'"); + } + List list = reportRecordService.reportQuery(query); + Map hashMap = new HashMap<>(); + int i = 0; + for (Map map : list) { + String code = (String) map.get("workorder_code"); + if (hashMap.get(code) == null) { + hashMap.put(code, code); + i = 0; + } + i++; + map.put("seq_number", i); + } + return list; + } - @Override - public List getOrderList(Map param, Pageable page) { - return this.baseMapper.orderList(param); - } + @Override + public List getOrderList(Map param, Pageable page) { + return this.baseMapper.orderList(param); + } - @Override - public List getOrderByDevLimit(Map param) { - return this.baseMapper.orderListByDevLimit(param); - } + @Override + public List getOrderByDevLimit(Map param) { + return this.baseMapper.orderListByDevLimit(param); + } - @Override - public List goodAnilysis(ByProcessQuery query) { - return this.baseMapper.goodAnalysis(query); - } + @Override + public List goodAnilysis(ByProcessQuery query) { + return this.baseMapper.goodAnalysis(query); + } - @Override - public void submitAdjustWorkOrder(JSONArray param) { + @Override + public void submitAdjustWorkOrder(JSONObject param) { + int index = 0; + String workprocedureId; + String deviceCode = param.getString("device_code"); + JSONArray transferList = param.getJSONArray("transferList"); + List ids = transferList.stream().map(item -> ((LinkedHashMap) item).get("workorder_no").toString()).collect(Collectors.toList()); + //工单排产调整通过工序选项卡下标获取设备信息 + WorkOrderImportEnum workOrderImportEnum = WorkOrderImportEnum.getIdByIndex(param.getInteger("tabIndex")); + if (workOrderImportEnum != null) { + workprocedureId = workOrderImportEnum.getId(); + } else { + workprocedureId = ""; + } + //查找是否存在已排顺序的工单,暂时不按最小工单号继续排序,每次提交都刷新排序 + // QueryWrapper queryWrapper = new QueryWrapper<>(); + // if(!ids.isEmpty()) { + // queryWrapper.notIn("workorder_id", ids); + // } + // queryWrapper.eq("device_code", deviceCode).eq("workprocedure_id", workprocedureId).in("workorder_status", 1, 2, 4).ne("aps_workorder_no", 999); + // List queryResult = this.list(queryWrapper); + // if(queryResult.size() > 0) { + // index = queryResult.stream().max(Comparator.comparing(PdmProduceWorkorder::getAps_workorder_no)).get().getAps_workorder_no(); + // } + //删除设备所有排序信息,只包括创建和暂停的 + UpdateWrapper updateWrappers = new UpdateWrapper<>(); + updateWrappers.eq("device_code", deviceCode).in("workorder_status", 1, 2, 4).set("aps_workorder_no", 999).set("device_code", null); + this.update(updateWrappers); + //更新新的顺序 + for (int i = 0; i < transferList.size(); i++) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + String workorder_code = transferList.getJSONObject(i).get("workorder_code").toString(); + String workorder_no = transferList.getJSONObject(i).get("workorder_no").toString(); + String workorder_status = transferList.getJSONObject(i).get("workorder_status").toString(); + //APS导出的工单编号默认为0 + //排产工单无工单号 + if ("0".equals(workorder_code)) { + //生成工单编号 + if (workorder_no.contains(":")) { + updateWrapper.eq("workorder_id", workorder_no).set("aps_workorder_no", i + 1 + index).set("device_code", deviceCode).set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + } + } else { + updateWrapper.eq("workorder_id", workorder_no); + updateWrapper.set("aps_workorder_no", i + 1 + index).set("device_code", deviceCode); + //状态为创建的工单重新生产工单编号 + if (workorder_status.equals(WorkerOrderEnum.CREATE.getName())) { + updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + } + } + updateWrapper.set("update_id", SecurityUtils.getCurrentUserId()); + updateWrapper.set("update_name", SecurityUtils.getCurrentNickName()); + updateWrapper.set("update_time", new Date()); + this.update(updateWrapper); - } + } + } - @Override - public List queryAdjustWorkOrder(String device_code) { - return pdmProduceWorkorderMapper.queryAdjustWorkOrder(device_code); - } - @Override - public List scrapRate(ScrapRateQuery query) { - return this.baseMapper.scrapRate(query); - } + /** + * 点击规格 + */ + @Override + public List queryAdjustWorkOrder(WorkorderQuery query) { + //工单排产调整通过工序选项卡下标获取设备信息 + WorkOrderImportEnum workOrderImportEnum = WorkOrderImportEnum.getIdByIndex(query.getTabIndex()); + if (workOrderImportEnum != null) { + query.setWorkprocedure_id(workOrderImportEnum.getId()); + } + List workOrders = pdmProduceWorkorderMapper.queryAdjustWorkOrder(query); + List deviceCount = pdmProduceWorkorderMapper.queryDeviceCount(query); + Map deviceCountMap = deviceCount.stream().filter(item -> item.get("sale_id") != null).collect(Collectors.toMap(item -> item.get("sale_id").toString(), item -> item.get("device_count").toString())); + workOrders.forEach(workOrder -> + { + if ("999".equals(workOrder.get("NO").toString())) { + workOrder.put("num_sort", "999"); + workOrder.put("NO", ""); + } + String saleId = (String) workOrder.get("sale_id"); + if (deviceCountMap.containsKey(saleId)) { + workOrder.put("device_count", deviceCountMap.get(saleId)); + }else{ + workOrder.put("device_count", "1"); + } - @Override - public List productCap(ProductCapQuery query) { - List maps = this.baseMapper.productCap(query); - return maps; - } + }); + if (!CollectionUtils.isEmpty(workOrders) && StringUtils.isNotBlank(query.getMaterial())) { + workOrders = workOrders.stream().filter(map -> query.getMaterial().equals(map.get("material_spec"))).collect(Collectors.toList()); + } + return workOrders; + } - @Override - public List qualityAna(QualityQuery query) { - List maps = this.baseMapper.qualityAnalysis(query); - return maps; - } + @Override + public List queryStatisticsSpec(WorkorderQuery query) { + List workOrders = pdmProduceWorkorderMapper.queryStatisticsSpec(query); + if (!CollectionUtils.isEmpty(workOrders) && StringUtils.isNotBlank(query.getMaterial())) { + workOrders = workOrders.stream().filter(map -> query.getMaterial().equals(map.get("material_spec"))).collect(Collectors.toList()); + } + return workOrders; + } - @Override - public List qualityAnaByDevice(QualityQuery query) { - List maps = this.baseMapper.qualityAnalysisByDevice(query); - return maps; - } + @Override + public List> queryMouldsSpec(WorkorderQuery query) { + List workOrders = pdmProduceWorkorderMapper.queryMouldsSpec(query); + //如果是全部规格的装车统计 + if (StringUtils.isNotBlank(query.getDevice_code())) { + return removeAdjacentDuplicates(workOrders); + } else { + Map> groupedByNO = workOrders.stream().collect(Collectors.groupingBy(order -> order.get("workprocedure_id") + "-" + order.get("device_code"))); + List> results = new ArrayList<>(); + for (Map.Entry> entry : groupedByNO.entrySet()) { + List> result = removeAdjacentDuplicates(entry.getValue()); + if (result != null) { + results.addAll(result); + } + } + return results; + } + } + + + public static List> removeAdjacentDuplicates(List workOrders) { + List> result = new ArrayList<>(); + try { + workOrders = workOrders.stream() + .sorted(Comparator.comparing(m -> m.get("NO").toString())) + .collect(Collectors.toList()); + for (int i = 0; i < workOrders.size(); i++) { + Map currentOrder = workOrders.get(i); + if (i == 0 || !currentOrder.get("material_spec").equals(workOrders.get(i - 1).get("material_spec"))) { + result.add(currentOrder); + } + } + if (result.size() > 1) { + return result.subList(1, result.size()); + } else { + return null; + } + }catch (Exception e) + { + throw new BadRequestException(e.getMessage()); + } + } + + @Override + public List scrapRate(ScrapRateQuery query) { + return this.baseMapper.scrapRate(query); + } + + @Override + public List productCap(ProductCapQuery query) { + List maps = this.baseMapper.productCap(query); + return maps; + } + + @Override + public List qualityAna(QualityQuery query) { + List maps = this.baseMapper.qualityAnalysis(query); + return maps; + } + + @Override + public List qualityAnaByDevice(QualityQuery query) { + List maps = this.baseMapper.qualityAnalysisByDevice(query); + return maps; + } + + @Override + public BigDecimal getWorkOrderplanQty(JSONObject param) { + String saleId = param.getString("sale_id"); + String saleCode = param.getString("sale_code"); + String materialId = param.getString("material_id"); + JSONObject params = new JSONObject(); + params.put("material_id", materialId); + MpsSaleOrder mpsSaleOrder = mpsSaleOrderServiceImpl.getOne(new LambdaUpdateWrapper().eq(MpsSaleOrder::getSale_id, saleId)); + if (mpsSaleOrder != null) { + // 1. 订单正在生产的工单计划数量总和 + BigDecimal saleOrderWorkingQty = this.list(new LambdaUpdateWrapper().eq(PdmProduceWorkorder::getSale_id, saleCode).eq(PdmProduceWorkorder::getWorkorder_status, WorkerOrderEnum.PRODUCTING.getCode())).stream().map(PdmProduceWorkorder::getPlan_qty).reduce(BigDecimal.ZERO, BigDecimal::add); + // 2. 半成品库存数量冻结数 = 当前物料对应未开工的刻字工单计划数量总和(未开工包括创建,下发,暂停) + BigDecimal plantoWorkQty = this.list(new LambdaUpdateWrapper().eq(PdmProduceWorkorder::getMaterial_id, materialId).in(PdmProduceWorkorder::getWorkorder_status, "1,2,3").eq(PdmProduceWorkorder::getWorkprocedure_id, "1535144682756116480")).stream().map(PdmProduceWorkorder::getPlan_qty).reduce(BigDecimal.ZERO, BigDecimal::add); + // 3. 半成品库存现存数量 = 当前物料对应半成品库库存总数(重量需转换成数量) + List bcpInfo = iStIvtStructivtBcpService.getPdaBcpIvt(params); + BigDecimal totalCanUseQty = bcpInfo.stream().map(item -> new BigDecimal(item.get("canuse_qty").toString())).reduce(BigDecimal.ZERO, BigDecimal::add); + MdMeMaterialbase material = materialbaseService.getOne(new LambdaUpdateWrapper().eq(MdMeMaterialbase::getMaterial_id, materialId)); + if (material.getNet_weight() == null) { + throw new BadRequestException("该物料规格无单重信息"); + } + //半成品库存重量转换半成品数量 + BigDecimal totalBcpQty = totalCanUseQty.divide(material.getNet_weight(), 2, RoundingMode.HALF_UP); + // 4. 订单待刻字数量=订单计划数量-已刻字数量-订单正在生产的工单计划数量总和 + BigDecimal saleOrderPlanQty = mpsSaleOrder.getNeed_product_qty().subtract(mpsSaleOrder.getLettering_qty()).subtract(saleOrderWorkingQty); + // 5. Math.min(订单待刻字数量, (半成品库存现存数量-半成品库存数量冻结数)) + return saleOrderPlanQty.min((totalBcpQty.subtract(plantoWorkQty))).max(BigDecimal.ZERO); + } + return BigDecimal.ZERO; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/DeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/DeviceServiceImpl.java deleted file mode 100644 index fc914c05..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/DeviceServiceImpl.java +++ /dev/null @@ -1,136 +0,0 @@ - -package org.nl.wms.product_manage.备份pdm.service.impl; - - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.utils.SecurityUtils; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.WQL; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.WqlUtil; -import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; -import org.nl.wms.product_manage.备份pdm.service.DeviceService; -import org.nl.wms.product_manage.备份pdm.service.dto.DeviceDto; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @description 服务实现 - * @author lyd - * @date 2023-03-15 - **/ -@Service -@RequiredArgsConstructor -@Slf4j -public class DeviceServiceImpl implements DeviceService { - @Autowired - private IPdmBiWorkprocedureService pdmBiWorkprocedureService; - - @Override - public Map queryAll(Map whereJson, Pageable page){ - Map param = new HashMap(); - param.put("flag", "1"); - param.put("search", whereJson.get("search")); - param.put("workprocedure_id", whereJson.get("workprocedure_id")); - param.put("product_area", whereJson.get("product_area")); - JSONObject jsonObject = WQL.getWO("QUERY_DEVICE").addParamMap(param).pageQuery(WqlUtil.getHttpContext(page), "device_code asc"); - return jsonObject; - } - - @Override - public List queryAll(Map whereJson){ - WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(DeviceDto.class); - return null; - } - - @Override - public DeviceDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); - JSONObject json = wo.query("device_code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)){ - return json.toJavaObject( DeviceDto.class); - } - return null; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(DeviceDto dto) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - dto.setUpdate_time(DateUtil.now()); - dto.setCreate_time(DateUtil.now()); - - WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(DeviceDto dto) { - DeviceDto entity = this.findByCode(dto.getDevice_code()); - if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); - - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - dto.setUpdate_time(DateUtil.now()); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - - WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); - String where = "is_delete = '0' and device_code = '" + dto.getDevice_code() + "'"; - - JSONObject jsonObject = wo.query(where).uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonObject) && !dto.getDevice_code().equals(jsonObject.getString("device_code"))) { - throw new BadRequestException("编码已存在!"); - } - - - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_device"); - for (String device_code: ids) { - wo.delete("device_code = '" + device_code + "'"); - } - } - - @Override - public JSONArray getWorkprocedure() { - WQLObject wo = WQLObject.getWQLObject("pdm_bi_workprocedure"); - return wo.query("is_used = '1'").getResultJSONArray(0); - } - - @Override - public JSONArray getDeviceList() { - WQLObject wo = WQLObject.getWQLObject("PDM_BI_Device"); - return wo.query("is_delete = '0'", "device_code").getResultJSONArray(0); - } - -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QUERY_DEVICE.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QUERY_DEVICE.wql deleted file mode 100644 index 9e48a411..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QUERY_DEVICE.wql +++ /dev/null @@ -1,65 +0,0 @@ -[交易说明] - 交易名: 设备查询 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.search TYPEAS s_string - 输入.workprocedure_id TYPEAS s_string - 输入.product_area TYPEAS s_string - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - - IF 输入.flag = "1" - PAGEQUERY - SELECT - * - FROM - PDM_BI_Device device - WHERE - 1 = 1 - OPTION 输入.search <> "" - (device.device_code like "%" 输入.search "%" or - device.device_name like "%" 输入.search "%") - ENDOPTION - OPTION 输入.workprocedure_id <> "" - (device.workprocedure_id = 输入.workprocedure_id) - ENDOPTION - OPTION 输入.product_area <> "" - device.product_area = 输入.product_area - ENDOPTION - ENDSELECT - ENDPAGEQUERY - ENDIF - diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml index 3eb22318..4b9e1fce 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml @@ -205,6 +205,9 @@ LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id attr.lock_type = '0' AND attr.sect_id ]]> '1707219721935523840' + + and mater.material_id = #{material_id} + and mater.material_code LIKE '%${material_code}%' or (mater.material_name LIKE '%${material_code}%') or diff --git a/mes/qd/package.json b/mes/qd/package.json index b3f4e7a3..d360bdc6 100644 --- a/mes/qd/package.json +++ b/mes/qd/package.json @@ -45,6 +45,7 @@ "echarts-gl": "^1.1.1", "echarts-wordcloud": "^1.1.3", "element-ui": "^2.6.3", + "elt-transfer": "0.0.13", "file-saver": "1.3.8", "font-awesome": "^4.7.0", "fuse.js": "3.4.4", diff --git a/mes/qd/src/api/wms/pdm/device.js b/mes/qd/src/api/wms/pdm/device.js index 9e60b5e8..b5a3820e 100644 --- a/mes/qd/src/api/wms/pdm/device.js +++ b/mes/qd/src/api/wms/pdm/device.js @@ -30,6 +30,7 @@ export function getWorkprocedure() { method: 'get' }) } + export function getDeviceList() { return request({ url: 'api/device/getDeviceList', @@ -68,4 +69,23 @@ export function queryById(device_id) { }) } -export default { add, edit, del, getWorkprocedure, getItemByDevice, savaDeviceItem, copyAdd, queryById, getDeviceList } +export function query(data) { + return request({ + url: 'api/device/query', + method: 'post', + data + }) +} + +export default { + query, + add, + edit, + del, + getWorkprocedure, + getItemByDevice, + savaDeviceItem, + copyAdd, + queryById, + getDeviceList +} diff --git a/mes/qd/src/components/transfer/transfer.vue b/mes/qd/src/components/transfer/transfer.vue new file mode 100644 index 00000000..fd479a79 --- /dev/null +++ b/mes/qd/src/components/transfer/transfer.vue @@ -0,0 +1,459 @@ + + + + + + + diff --git a/mes/qd/src/main.js b/mes/qd/src/main.js index 9dc4b879..3e11fd49 100644 --- a/mes/qd/src/main.js +++ b/mes/qd/src/main.js @@ -25,7 +25,6 @@ import './assets/styles/index.scss' // 代码高亮 import VueHighlightJS from 'vue-highlightjs' import 'highlight.js/styles/atom-one-dark.css' - import App from './App' import store from './store' import router from './router/routers' @@ -33,13 +32,22 @@ import router from './router/routers' import './assets/icons' // icon import './router/index' // permission control import 'echarts-gl' -import { addDateRange, handleTree, parseTime, resetForm, selectDictLabel, selectDictLabels, flexWidth } from '@/utils/nladmin' +import { + addDateRange, + flexWidth, + handleTree, + parseTime, + resetForm, + selectDictLabel, + selectDictLabels +} from '@/utils/nladmin' import { getValueByCode } from '@/api/system/param' import 'jquery' // 安装总线 import VueBus from 'vue-bus' + Vue.use(scroll) Vue.use(VueHighlightJS) diff --git a/mes/qd/src/views/wms/pcs/saleorder/Dialog.vue b/mes/qd/src/views/wms/pcs/saleorder/Dialog.vue index 0915d596..7afc100d 100644 --- a/mes/qd/src/views/wms/pcs/saleorder/Dialog.vue +++ b/mes/qd/src/views/wms/pcs/saleorder/Dialog.vue @@ -5,7 +5,7 @@ :visible.sync="dialogVisible" append-to-body destroy-on-close - title="aps提交" + title="APS提交" width="500px" @close="close" > @@ -13,15 +13,12 @@
- - - - - - - - - + + + + + + - - - - - 确认 - +
+ 确认 + +
@@ -92,11 +87,6 @@ export default { this.showErrorNotification('请选择订单交期') return } - // 校验销售订单号值是否为空 - if (!this.form.bill_type) { - this.showErrorNotification('请选择订单阶段') - return - } this.fullscreenLoading = true if (this.form.createTime) { this.form.date_begin = this.form.createTime[0] @@ -106,7 +96,8 @@ export default { this.crud.notify('提交成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.fullscreenLoading = false this.dialogVisible = false - this.form = {} // 清空表单数据 + this.form = {} // 清空表单数据] + this.crud.toQuery() }).catch(() => { this.fullscreenLoading = false }) diff --git a/mes/qd/src/views/wms/pcs/saleorder/index.vue b/mes/qd/src/views/wms/pcs/saleorder/index.vue index 9bfa064f..95baba43 100644 --- a/mes/qd/src/views/wms/pcs/saleorder/index.vue +++ b/mes/qd/src/views/wms/pcs/saleorder/index.vue @@ -5,101 +5,101 @@
@@ -116,12 +116,12 @@ 清空测试数据 @@ -129,66 +129,66 @@
导入 - aps提交 + APS提交 @@ -235,51 +235,51 @@ @@ -301,35 +301,34 @@ - - + @@ -344,23 +343,23 @@ @@ -369,10 +368,10 @@ + + + diff --git a/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue b/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue new file mode 100644 index 00000000..835f323f --- /dev/null +++ b/mes/qd/src/views/wms/product_manage/workorder/adjustIndex.vue @@ -0,0 +1,916 @@ + + + + + diff --git a/mes/qd/src/views/wms/product_manage/workorder/index.vue b/mes/qd/src/views/wms/product_manage/workorder/index.vue index 4f7d9c97..d84193c0 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/index.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/index.vue @@ -4,143 +4,190 @@
+ + + + + + + + + + + + + + + + + + + + + - + + + - - - - - + - - - - - - + - - - + + + + + + + + + + + @@ -151,24 +198,14 @@ - - - @@ -177,13 +214,13 @@ 复制新增 @@ -198,45 +235,45 @@ 批量新增 --> - 导入 + 导入工单 下发 取消下发 开工 @@ -252,23 +289,23 @@ 报工 报工审核 强制完成 @@ -291,93 +328,106 @@ + + + + {{ item.label }} @@ -647,12 +694,12 @@ @@ -661,6 +708,23 @@ {{ scope.row.workorder_code }} + + + +