add:排产相关功能。 rev:修改工单管理,销售订单管理,工厂日历功能;
add:排产相关功能。 rev:修改工单管理,销售订单管理,工厂日历功能;
This commit is contained in:
@@ -0,0 +1,34 @@
|
|||||||
|
package org.nl.common.domain.query;
|
||||||
|
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class ColaBeanUtils extends BeanUtils {
|
||||||
|
public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target) {
|
||||||
|
return copyListProperties(sources, target, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Johnson
|
||||||
|
* 使用场景:Entity、Bo、Vo层数据的复制,因为BeanUtils.copyProperties只能给目标对象的属性赋值,却不能在List集合下循环赋值,因此添加该方法
|
||||||
|
* 如:List<AdminEntity> 赋值到 List<AdminVo> ,List<AdminVo>中的 AdminVo 属性都会被赋予到值
|
||||||
|
* S: 数据源类 ,T: 目标类::new(eg: AdminVo::new)
|
||||||
|
*/
|
||||||
|
public static <S, T> List<T> copyListProperties(List<S> sources, Supplier<T> target, ColaBeanUtilsCallBack<S, T> callBack) {
|
||||||
|
List<T> list = new ArrayList<>(sources.size());
|
||||||
|
for (S source : sources) {
|
||||||
|
T t = target.get();
|
||||||
|
copyProperties(source, t);
|
||||||
|
if (callBack != null) {
|
||||||
|
// 回调
|
||||||
|
callBack.callBack(source, t);
|
||||||
|
}
|
||||||
|
list.add(t);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package org.nl.common.domain.query;
|
||||||
|
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface ColaBeanUtilsCallBack<S, T> {
|
||||||
|
void callBack(S t, T s);
|
||||||
|
}
|
||||||
@@ -72,6 +72,7 @@ public enum StatusEnum {
|
|||||||
// 1-PC创建、2-Excel导入
|
// 1-PC创建、2-Excel导入
|
||||||
PCINTO("1","PC创建", "",null),
|
PCINTO("1","PC创建", "",null),
|
||||||
EXCELINTO("2","EXCEL导入", "2",null),
|
EXCELINTO("2","EXCEL导入", "2",null),
|
||||||
|
APSINTO("3","APS导入", "3",null),
|
||||||
// 1白班、2夜班
|
// 1白班、2夜班
|
||||||
DAYSHIFT("1","白班", "1",null),
|
DAYSHIFT("1","白班", "1",null),
|
||||||
NIGHTSHIFT("2","夜班", "2",null);
|
NIGHTSHIFT("2","夜班", "2",null);
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ package org.nl.config.thread;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
|
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
@@ -26,14 +27,16 @@ import java.util.concurrent.ThreadPoolExecutor;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 异步任务线程池装配类
|
* 异步任务线程池装配类
|
||||||
|
*
|
||||||
* @author https://juejin.im/entry/5abb8f6951882555677e9da2
|
* @author https://juejin.im/entry/5abb8f6951882555677e9da2
|
||||||
* @date 2019年10月31日15:06:18
|
* @date 2019年10月31日15:06:18
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Configuration
|
@Configuration
|
||||||
public class AsyncTaskExecutePool implements AsyncConfigurer {
|
public class AsyncTaskExecutePool implements AsyncConfigurer{
|
||||||
|
/**
|
||||||
/** 注入配置类 */
|
* 注入配置类
|
||||||
|
*/
|
||||||
private final AsyncTaskProperties config;
|
private final AsyncTaskProperties config;
|
||||||
|
|
||||||
public AsyncTaskExecutePool(AsyncTaskProperties config) {
|
public AsyncTaskExecutePool(AsyncTaskProperties config) {
|
||||||
@@ -60,11 +63,40 @@ public class AsyncTaskExecutePool implements AsyncConfigurer {
|
|||||||
return executor;
|
return executor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 线程池配置
|
||||||
|
* @return java.util.concurrent.Executor
|
||||||
|
* @author gbx
|
||||||
|
* @since 2023-06-16
|
||||||
|
*/
|
||||||
|
@Bean(name = "taskExecutor")
|
||||||
|
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
|
||||||
|
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
|
||||||
|
// 核心线程池大小
|
||||||
|
threadPoolTaskExecutor.setCorePoolSize(config.getCorePoolSize());
|
||||||
|
// 最大线程数
|
||||||
|
threadPoolTaskExecutor.setMaxPoolSize(config.getMaxPoolSize());
|
||||||
|
// 队列容量
|
||||||
|
threadPoolTaskExecutor.setQueueCapacity(config.getQueueCapacity());
|
||||||
|
// 活跃时间
|
||||||
|
threadPoolTaskExecutor.setKeepAliveSeconds(config.getKeepAliveSeconds());
|
||||||
|
// 主线程等待子线程执行时间
|
||||||
|
threadPoolTaskExecutor.setAwaitTerminationSeconds(30);
|
||||||
|
// 线程名字前缀
|
||||||
|
threadPoolTaskExecutor.setThreadNamePrefix("test-thread-");
|
||||||
|
// RejectedExecutionHandler:当pool已经达到max-size的时候,如何处理新任务
|
||||||
|
// CallerRunsPolicy:不在新线程中执行任务,而是由调用者所在的线程来执行
|
||||||
|
threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||||
|
// 初始化
|
||||||
|
threadPoolTaskExecutor.initialize();
|
||||||
|
return threadPoolTaskExecutor;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
|
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
|
||||||
return (throwable, method, objects) -> {
|
return (throwable, method, objects) -> {
|
||||||
log.error("===="+throwable.getMessage()+"====", throwable);
|
log.error("====" + throwable.getMessage() + "====", throwable);
|
||||||
log.error("exception method:"+method.getName());
|
log.error("exception method:" + method.getName());
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package org.nl.modules.schedule;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aps排产相关定时任务
|
||||||
|
*
|
||||||
|
* @author gbx
|
||||||
|
* @since 2023-06-16
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
@EnableScheduling
|
||||||
|
public class ApsSchedule{
|
||||||
|
@Autowired
|
||||||
|
private IMpsSaleOrderService iMpsSaleOrderService;
|
||||||
|
|
||||||
|
@Async("taskExecutor")
|
||||||
|
//@Scheduled(cron = "0/30 * * * * *")
|
||||||
|
public void setApsStatus() {
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
//log.info("定时同步Aps排产信息完毕,耗时{}!", end - start);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -126,8 +126,8 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl<MdPbClassstandardM
|
|||||||
if (ObjectUtil.isNotEmpty(whereJson.get("parent_class_id"))) {
|
if (ObjectUtil.isNotEmpty(whereJson.get("parent_class_id"))) {
|
||||||
query.eq("parent_class_id",whereJson.get("parent_class_id"));
|
query.eq("parent_class_id",whereJson.get("parent_class_id"));
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) {
|
if(ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) {
|
||||||
query.in("class_id",whereJson.get("class_idStr"));
|
query.last("and class_id in (" + whereJson.get("class_idStr") + ")");
|
||||||
}
|
}
|
||||||
List<Map<String, Object>> list = this.listMaps(query);
|
List<Map<String, Object>> list = this.listMaps(query);
|
||||||
return getMaps(list);
|
return getMaps(list);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.mps_manage.ordermanage.controller.saleOrder;
|
package org.nl.wms.mps_manage.ordermanage.controller.saleOrder;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -12,9 +13,10 @@ import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -28,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@Api(tags = "生产订单")
|
@Api(tags = "生产订单")
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@SaIgnore
|
||||||
@RequestMapping("/api/mpsSaleOrder")
|
@RequestMapping("/api/mpsSaleOrder")
|
||||||
public class MpsSaleOrderController {
|
public class MpsSaleOrderController {
|
||||||
|
|
||||||
@@ -41,5 +44,16 @@ public class MpsSaleOrderController {
|
|||||||
return new ResponseEntity<>(iMpsSaleOrderService.pageQuery(query,page), HttpStatus.OK);
|
return new ResponseEntity<>(iMpsSaleOrderService.pageQuery(query,page), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@PostMapping("/excelImport")
|
||||||
|
@Log("excel导入")
|
||||||
|
@ApiOperation("excel导入")
|
||||||
|
public ResponseEntity<Object> excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
|
||||||
|
iMpsSaleOrderService.excelImport(file,request);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,9 @@ import org.nl.common.domain.query.PageQuery;
|
|||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
||||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -27,4 +30,13 @@ public interface IMpsSaleOrderService extends IService<MpsSaleOrder> {
|
|||||||
Object pageQuery(OrderQuery query, PageQuery page);
|
Object pageQuery(OrderQuery query, PageQuery page);
|
||||||
|
|
||||||
List<Map> getPdaMaterial(JSONObject json);
|
List<Map> getPdaMaterial(JSONObject json);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* excel导入
|
||||||
|
* @param file
|
||||||
|
* @param request
|
||||||
|
*/
|
||||||
|
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,14 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import jdk.nashorn.internal.ir.annotations.Ignore;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@@ -19,150 +24,146 @@ import lombok.EqualsAndHashCode;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("mps_sale_order")
|
@TableName("mps_sale_order")
|
||||||
public class MpsSaleOrder implements Serializable {
|
public class MpsSaleOrder implements Serializable{
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 销售单标识
|
* 销售单标识
|
||||||
*/
|
*/
|
||||||
@TableId
|
private Long sale_id;
|
||||||
private String sale_id;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 销售单号
|
* 销售单号
|
||||||
*/
|
*/
|
||||||
private String sale_code;
|
private String sale_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 明细序号
|
* 明细序号
|
||||||
*/
|
*/
|
||||||
private BigDecimal seq_no;
|
private BigDecimal seq_no;
|
||||||
|
/**
|
||||||
|
* aps映射订单编码
|
||||||
|
*/
|
||||||
|
private String aps_sale_code;
|
||||||
|
/**
|
||||||
|
* aps映射订单类型
|
||||||
|
*/
|
||||||
|
private String aps_sale_type;
|
||||||
|
/**
|
||||||
|
* aps映射订单状态
|
||||||
|
*/
|
||||||
|
private String aps_status;
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
private String material_code;
|
||||||
/**
|
/**
|
||||||
* 销售单类型
|
* 销售单类型
|
||||||
*/
|
*/
|
||||||
private String sale_type;
|
private String sale_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 物料标识
|
* 物料标识
|
||||||
*/
|
*/
|
||||||
private String material_id;
|
private String material_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态
|
* 状态
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 销售数量
|
* 销售数量
|
||||||
*/
|
*/
|
||||||
private BigDecimal sale_qty;
|
private BigDecimal sale_qty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产顺序
|
* 生产顺序
|
||||||
*/
|
*/
|
||||||
private BigDecimal produce_seq;
|
private BigDecimal produce_seq;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户标识
|
* 客户标识
|
||||||
*/
|
*/
|
||||||
private String cust_id;
|
private Long cust_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户编码
|
* 客户编码
|
||||||
*/
|
*/
|
||||||
private String cust_code;
|
private String cust_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户名称
|
* 客户名称
|
||||||
*/
|
*/
|
||||||
private String cust_name;
|
private String cust_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计量单位标识
|
* 计量单位标识
|
||||||
*/
|
*/
|
||||||
private String qty_unit_id;
|
private String qty_unit_id;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计量单位
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String qty_unit_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计划交期
|
* 计划交期
|
||||||
*/
|
*/
|
||||||
private String plandeliver_date;
|
private String plandeliver_date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建人
|
* 创建人
|
||||||
*/
|
*/
|
||||||
private String create_id;
|
private String create_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建人姓名
|
* 创建人姓名
|
||||||
*/
|
*/
|
||||||
private String create_name;
|
private String create_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
private String create_time;
|
private String create_time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交人
|
* 提交人
|
||||||
*/
|
*/
|
||||||
private String audit_optid;
|
private String audit_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交时间
|
* 提交时间
|
||||||
*/
|
*/
|
||||||
private String audit_time;
|
private String audit_time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交人姓名
|
* 提交人姓名
|
||||||
*/
|
*/
|
||||||
private String audit_optname;
|
private String audit_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 确认人
|
* 确认人
|
||||||
*/
|
*/
|
||||||
private String confirm_optid;
|
private Long confirm_id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 确认人姓名
|
* 确认人姓名
|
||||||
*/
|
*/
|
||||||
private String confirm_optname;
|
private String confirm_name;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 确认时间
|
* 确认时间
|
||||||
*/
|
*/
|
||||||
private String confirm_time;
|
private String confirm_time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否删除
|
* 是否删除
|
||||||
*/
|
*/
|
||||||
private String is_delete;
|
private String is_delete;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车间标识
|
* 车间标识
|
||||||
*/
|
*/
|
||||||
private String workshop_id;
|
private String product_area;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产数量
|
* 生产数量
|
||||||
*/
|
*/
|
||||||
private BigDecimal product_qty;
|
private BigDecimal product_qty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预入库数量
|
* 预入库数量
|
||||||
*/
|
*/
|
||||||
private BigDecimal instor_qty;
|
private BigDecimal instor_qty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发货数量
|
* 发货数量
|
||||||
*/
|
*/
|
||||||
private BigDecimal sendout_qty;
|
private BigDecimal sendout_qty;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.MapKey;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
||||||
@@ -20,8 +21,13 @@ import java.util.Map;
|
|||||||
*/
|
*/
|
||||||
public interface MpsSaleOrderMapper extends BaseMapper<MpsSaleOrder> {
|
public interface MpsSaleOrderMapper extends BaseMapper<MpsSaleOrder> {
|
||||||
|
|
||||||
|
@MapKey("sale_id")
|
||||||
List<Map> pageQuery(@Param("query") OrderQuery query, @Param("pageQuery") PageQuery pageQuery);
|
List<Map> pageQuery(@Param("query") OrderQuery query, @Param("pageQuery") PageQuery pageQuery);
|
||||||
|
|
||||||
|
@MapKey("sale_id")
|
||||||
List<Map> getPdaMaterial(JSONObject json);
|
List<Map> getPdaMaterial(JSONObject json);
|
||||||
|
|
||||||
|
@MapKey("sale_id")
|
||||||
|
List<Map> queryAll(@Param("query") OrderQuery query);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,56 @@
|
|||||||
|
|
||||||
<select id="pageQuery" resultType="java.util.Map">
|
<select id="pageQuery" resultType="java.util.Map">
|
||||||
SELECT
|
SELECT
|
||||||
der.*,
|
der.aps_sale_code ,
|
||||||
mater.material_code,
|
SUBSTRING_INDEX(der.aps_sale_code, '-', 1) AS sale_code,
|
||||||
|
SUBSTRING_INDEX(der.aps_sale_code, '-', -1) AS seq_no,
|
||||||
|
der.aps_sale_type,der.aps_status,der.sale_type, der.material_id, der.material_code, der.product_area,
|
||||||
|
der.product_qty, der.sendout_qty, der.instor_qty,der.status, der.sale_qty, der.produce_seq,
|
||||||
|
der.cust_id, der.cust_code, der.cust_name, der.qty_unit_id, der.plandeliver_date, der.create_id,
|
||||||
|
der.create_name, der.create_time, der.audit_id, der.audit_time, der.audit_name, der.confirm_id,
|
||||||
|
der.confirm_name, der.confirm_time, der.is_delete, der.remark,
|
||||||
mater.material_name,
|
mater.material_name,
|
||||||
mater.material_spec,
|
|
||||||
mater.net_weight AS unit_weight,
|
|
||||||
unit.unit_name AS qty_unit_name
|
unit.unit_name AS qty_unit_name
|
||||||
FROM
|
FROM
|
||||||
mps_sale_order der
|
mps_sale_order der
|
||||||
LEFT JOIN md_me_materialbase mater ON der.material_id = mater.material_id
|
LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code
|
||||||
|
LEFT JOIN md_pb_measureunit unit ON der.qty_unit_id = unit.measure_unit_id
|
||||||
|
|
||||||
|
<where>
|
||||||
|
der.is_delete = '0'
|
||||||
|
<if test="query.sale_code != null">
|
||||||
|
and der.sale_code = #{query.sale_code}
|
||||||
|
</if>
|
||||||
|
<if test="query.status != null">
|
||||||
|
and der.status = #{query.status}
|
||||||
|
</if>
|
||||||
|
<if test="query.sale_type != null">
|
||||||
|
and der.sale_type >= #{query.sale_type}
|
||||||
|
</if>
|
||||||
|
<if test="query.cust_code != null">
|
||||||
|
and der.cust_code >= #{query.cust_code}
|
||||||
|
</if>
|
||||||
|
|
||||||
|
</where>
|
||||||
|
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="queryAll" resultType="java.util.Map">
|
||||||
|
SELECT
|
||||||
|
der.aps_sale_code ,
|
||||||
|
SUBSTRING_INDEX(der.aps_sale_code, '-', 1) AS sale_code,
|
||||||
|
SUBSTRING_INDEX(der.aps_sale_code, '-', -1) AS seq_no,
|
||||||
|
der.aps_sale_type,der.aps_status,der.sale_type, der.material_id, der.material_code, der.product_area,
|
||||||
|
der.product_qty, der.sendout_qty, der.instor_qty,der.status, der.sale_qty, der.produce_seq,
|
||||||
|
der.cust_id, der.cust_code, der.cust_name, der.qty_unit_id, der.plandeliver_date, der.create_id,
|
||||||
|
der.create_name, der.create_time, der.audit_id, der.audit_time, der.audit_name, der.confirm_id,
|
||||||
|
der.confirm_name, der.confirm_time, der.is_delete, der.remark,
|
||||||
|
mater.material_name,
|
||||||
|
unit.unit_name AS qty_unit_name
|
||||||
|
FROM
|
||||||
|
mps_sale_order der
|
||||||
|
LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code
|
||||||
LEFT JOIN md_pb_measureunit unit ON der.qty_unit_id = unit.measure_unit_id
|
LEFT JOIN md_pb_measureunit unit ON der.qty_unit_id = unit.measure_unit_id
|
||||||
|
|
||||||
<where>
|
<where>
|
||||||
@@ -52,10 +93,10 @@
|
|||||||
der.is_delete = '0'
|
der.is_delete = '0'
|
||||||
AND der.status = '10'
|
AND der.status = '10'
|
||||||
<if test="begin_time != null and begin_time != ''">
|
<if test="begin_time != null and begin_time != ''">
|
||||||
and der.create_time >= #{begin_time}
|
and der.create_time <= #{begin_time}
|
||||||
</if>
|
</if>
|
||||||
<if test="end_time != null and end_time != ''">
|
<if test="end_time != null and end_time != ''">
|
||||||
and der.create_time <= #{end_time}
|
and der.create_time >= #{end_time}
|
||||||
</if>
|
</if>
|
||||||
<if test="sale_code != null and sale_code != ''">
|
<if test="sale_code != null and sale_code != ''">
|
||||||
and der.sale_code LIKE '%${sale_code}%'
|
and der.sale_code LIKE '%${sale_code}%'
|
||||||
@@ -70,4 +111,9 @@
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -1,19 +1,35 @@
|
|||||||
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.impl;
|
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.impl;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.poi.excel.ExcelReader;
|
||||||
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.common.TableDataInfo;
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
|
import org.nl.common.utils.SecurityUtils;
|
||||||
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
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.ordermanage.service.saleOrder.IMpsSaleOrderService;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService;
|
||||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
|
||||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper;
|
||||||
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery;
|
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -24,7 +40,9 @@ import java.util.Map;
|
|||||||
* @since 2023-05-25
|
* @since 2023-05-25
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper, MpsSaleOrder> implements IMpsSaleOrderService {
|
public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsSaleOrder> implements IMpsSaleOrderService{
|
||||||
|
@Autowired
|
||||||
|
private IMdMeMaterialbaseService materialbaseService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object pageQuery(OrderQuery query, PageQuery pageQuery) {
|
public Object pageQuery(OrderQuery query, PageQuery pageQuery) {
|
||||||
@@ -39,4 +57,148 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper, Mps
|
|||||||
public List<Map> getPdaMaterial(JSONObject json) {
|
public List<Map> getPdaMaterial(JSONObject json) {
|
||||||
return this.baseMapper.getPdaMaterial(json);
|
return this.baseMapper.getPdaMaterial(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||||
|
InputStream inputStream = null;
|
||||||
|
if(file.isEmpty()) {
|
||||||
|
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
inputStream = file.getInputStream();
|
||||||
|
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
||||||
|
List<List<Object>> read = excelReader.read();
|
||||||
|
// 循环获取的数据
|
||||||
|
List<MpsSaleOrder> data = new ArrayList<>();
|
||||||
|
Map<String,String> errorMap = new HashMap();
|
||||||
|
row:
|
||||||
|
for(int i = 1; i < read.size(); i++) {
|
||||||
|
List<Object> list = read.get(i);
|
||||||
|
if(ObjectUtil.isEmpty(list)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String error_message = "";
|
||||||
|
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
|
||||||
|
mpsSaleOrder.setSale_id(org.nl.common.utils.IdUtil.getLongId());
|
||||||
|
mpsSaleOrder.setSale_type("01");
|
||||||
|
mpsSaleOrder.setProduct_area("A1");
|
||||||
|
mpsSaleOrder.setStatus("10");
|
||||||
|
|
||||||
|
mpsSaleOrder.setCreate_time(DateUtil.now());
|
||||||
|
mpsSaleOrder.setConfirm_time(DateUtil.now());
|
||||||
|
mpsSaleOrder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||||
|
mpsSaleOrder.setCreate_name(SecurityUtils.getCurrentUsername());
|
||||||
|
mpsSaleOrder.setAps_sale_type("M");
|
||||||
|
mpsSaleOrder.setAps_status("X");
|
||||||
|
for(int j = 0; j < list.size(); j++) {
|
||||||
|
String col = null == list.get(j) ? "" : String.valueOf(list.get(j));
|
||||||
|
//存在订单编号,忽略不导入
|
||||||
|
OrderQuery orderQuery = new OrderQuery();
|
||||||
|
List<Map> saleCode = baseMapper.queryAll(orderQuery);
|
||||||
|
if(saleCode.stream()
|
||||||
|
.anyMatch(m -> col.equals(m.get("sale_code")))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
解析cell:
|
||||||
|
{
|
||||||
|
if(j == 0) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("销售单号不能为空");
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setSale_code(col);
|
||||||
|
}
|
||||||
|
if(j == 1) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("明细序号不能为空");
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setSeq_no(BigDecimal.valueOf(Double.parseDouble(col)));
|
||||||
|
mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code() + "-" + col);
|
||||||
|
}
|
||||||
|
if(j == 2) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("销售数量不能为空");
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setSale_qty(BigDecimal.valueOf(Double.parseDouble(col)));
|
||||||
|
}
|
||||||
|
if(j == 3) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("物料编码不能为空");
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setMaterial_code(col);
|
||||||
|
List<MdMeMaterialbase> meMaterialBases = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().eq("material_code", col));
|
||||||
|
if(CollectionUtils.isEmpty(meMaterialBases)) {
|
||||||
|
errorMap.put("第" + i + "行" + col, "物料编码对应物料信息不存在");
|
||||||
|
error_message = error_message + col + "物料编码对应物料信息不存在,";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Optional<MdMeMaterialbase> first = meMaterialBases
|
||||||
|
.stream()
|
||||||
|
.findFirst();
|
||||||
|
first.ifPresent(mdMeMaterialbase -> {
|
||||||
|
//物料id
|
||||||
|
mpsSaleOrder.setMaterial_id(mdMeMaterialbase.getMaterial_id());
|
||||||
|
//计量单位
|
||||||
|
mpsSaleOrder.setQty_unit_id(mdMeMaterialbase.getBase_unit_id());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 4) {
|
||||||
|
if(StringUtils.isNotBlank(col)) {
|
||||||
|
mpsSaleOrder.setCust_id(Long.parseLong(col));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 5) {
|
||||||
|
if(StringUtils.isNotBlank(col)) {
|
||||||
|
mpsSaleOrder.setCust_code(col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 6) {
|
||||||
|
if(StringUtils.isNotBlank(col)) {
|
||||||
|
mpsSaleOrder.setCust_name(col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(j == 7) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("计量单位不能为空");
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setQty_unit_id(col);
|
||||||
|
}
|
||||||
|
if(j == 8) {
|
||||||
|
if(StringUtils.isBlank(col)) {
|
||||||
|
throw new BadRequestException("订单交期不能为空");
|
||||||
|
}
|
||||||
|
mpsSaleOrder.setPlandeliver_date(DateUtil.format(DateUtil.parse(col), "yyyy/MM/dd"));
|
||||||
|
}
|
||||||
|
if(j == 9) {
|
||||||
|
if(StringUtils.isNotBlank(col)) {
|
||||||
|
mpsSaleOrder.setRemark(col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(CollectionUtils.isEmpty(errorMap)) {
|
||||||
|
if(null != mpsSaleOrder.getSale_code()) {
|
||||||
|
data.add(mpsSaleOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.saveBatch(data);
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
throw new BadRequestException(e.getMessage());
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
if(inputStream != null) {
|
||||||
|
try {
|
||||||
|
inputStream.close();
|
||||||
|
}
|
||||||
|
catch(Exception ignored) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,6 @@
|
|||||||
SELECT
|
SELECT
|
||||||
saleorder.*,
|
saleorder.*,
|
||||||
uuid() as order_line_code,
|
uuid() as order_line_code,
|
||||||
material.material_code,
|
|
||||||
material.material_name,
|
material.material_name,
|
||||||
material.material_spec,
|
material.material_spec,
|
||||||
unit.unit_name
|
unit.unit_name
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public class PdmProduceWorkorderController {
|
|||||||
@Log("工单取消下发")
|
@Log("工单取消下发")
|
||||||
@ApiOperation("工单取消下发")
|
@ApiOperation("工单取消下发")
|
||||||
public ResponseEntity<Object> unSubmits(@RequestBody List<String> param) {
|
public ResponseEntity<Object> unSubmits(@RequestBody List<String> param) {
|
||||||
iPdmProduceWorkorderService.down(param);
|
iPdmProduceWorkorderService.unDown(param);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,9 +70,9 @@ public class PdmBiDevice implements Serializable {
|
|||||||
private String workorder_code;
|
private String workorder_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备编码2
|
* aps设备编码
|
||||||
*/
|
*/
|
||||||
private String device_code2;
|
private String aps_device_code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设备上料料斗上限数
|
* 设备上料料斗上限数
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ package org.nl.wms.product_manage.service.workorder.dao;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.*;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -18,7 +20,11 @@ import lombok.EqualsAndHashCode;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
@TableName("pdm_produce_workorder")
|
@TableName("pdm_produce_workorder")
|
||||||
|
@SuperBuilder
|
||||||
|
|
||||||
public class PdmProduceWorkorder implements Serializable {
|
public class PdmProduceWorkorder implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
package org.nl.wms.product_manage.service.workorder.impl;
|
package org.nl.wms.product_manage.service.workorder.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import cn.hutool.poi.excel.ExcelReader;
|
import cn.hutool.poi.excel.ExcelReader;
|
||||||
import cn.hutool.poi.excel.ExcelUtil;
|
import cn.hutool.poi.excel.ExcelUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@@ -15,12 +14,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import io.jsonwebtoken.lang.Assert;
|
import io.jsonwebtoken.lang.Assert;
|
||||||
import lombok.SneakyThrows;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.nl.common.TableDataInfo;
|
import org.nl.common.TableDataInfo;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
@@ -35,8 +33,6 @@ import org.nl.wms.ext.acs.service.WmsToAcsService;
|
|||||||
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
|
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.IMdMeMaterialbaseService;
|
||||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||||
import org.nl.wms.mps.service.WorkOrderImportEnum;
|
|
||||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
|
||||||
import org.nl.wms.mps.service.dto.ProduceshiftorderDto;
|
import org.nl.wms.mps.service.dto.ProduceshiftorderDto;
|
||||||
import org.nl.wms.product_manage.ReportEnum;
|
import org.nl.wms.product_manage.ReportEnum;
|
||||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||||
@@ -53,7 +49,6 @@ import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureServic
|
|||||||
import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure;
|
import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure;
|
||||||
import org.nl.wms.system_manage.service.user.ISysUserService;
|
import org.nl.wms.system_manage.service.user.ISysUserService;
|
||||||
import org.nl.wms.system_manage.service.user.dao.SysUser;
|
import org.nl.wms.system_manage.service.user.dao.SysUser;
|
||||||
import org.redisson.misc.Hash;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
@@ -70,7 +65,6 @@ import java.io.InputStream;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -84,7 +78,7 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper, PdmProduceWorkorder> implements IPdmProduceWorkorderService {
|
public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper,PdmProduceWorkorder> implements IPdmProduceWorkorderService{
|
||||||
@Autowired
|
@Autowired
|
||||||
private IMdPbClassstandardService classstandardService;
|
private IMdPbClassstandardService classstandardService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -141,7 +135,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
entity.setCreate_type(StatusEnum.PCINTO.getCode());
|
entity.setCreate_type(StatusEnum.PCINTO.getCode());
|
||||||
entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||||
this.save(entity);
|
this.save(entity);
|
||||||
|
|
||||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id());
|
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,17 +142,31 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
public void updateForm(JSONObject form) {
|
public void updateForm(JSONObject form) {
|
||||||
Assert.notNull(form, "参数不能为空");
|
Assert.notNull(form, "参数不能为空");
|
||||||
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", form.getString("workorder_id")));
|
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", form.getString("workorder_id")));
|
||||||
if (one == null) {
|
if(one == null) {
|
||||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||||
}
|
}
|
||||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
PdmProduceWorkorder newEntity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||||
entity.setDown_time(DateUtil.now());
|
PdmProduceWorkorder pdmProduceWorkorder = PdmProduceWorkorder
|
||||||
entity.setDown_id(SecurityUtils.getCurrentUserId());
|
.builder()
|
||||||
entity.setDown_name(SecurityUtils.getCurrentNickName());
|
.workorder_id(newEntity.getWorkorder_id())
|
||||||
entity.setReal_qty(null);
|
.product_area(newEntity.getProduct_area())
|
||||||
this.updateById(entity);
|
.workprocedure_id(newEntity.getWorkprocedure_id())
|
||||||
|
.material_id(newEntity.getMaterial_id())
|
||||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id());
|
.material_weight(newEntity.getMaterial_weight())
|
||||||
|
.plan_qty(newEntity.getPlan_qty())
|
||||||
|
.planproducestart_date(newEntity.getPlanproducestart_date())
|
||||||
|
.planproduceend_date(newEntity.getPlanproduceend_date())
|
||||||
|
.report_qty(newEntity.getReport_qty())
|
||||||
|
.shift_type_scode(newEntity.getShift_type_scode())
|
||||||
|
.sale_id(newEntity.getSale_id())
|
||||||
|
.is_needmove(newEntity.getIs_needmove())
|
||||||
|
.is_canupdate_update(newEntity.getIs_canupdate_update())
|
||||||
|
.down_time(DateUtil.now())
|
||||||
|
.down_id(SecurityUtils.getCurrentUserId())
|
||||||
|
.down_name(SecurityUtils.getCurrentNickName())
|
||||||
|
.build();
|
||||||
|
this.updateById(pdmProduceWorkorder);
|
||||||
|
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, pdmProduceWorkorder.getWorkorder_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -168,14 +175,29 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void down(List<String> ids) {
|
public void down(List<String> ids) {
|
||||||
if (ids == null || ids.size() == 0) {
|
if(ids == null || ids.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids).lt("workorder_status",WorkerOrderEnum.AUTO_COMPLETE.getCode()));
|
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids).lt("workorder_status",WorkerOrderEnum.AUTO_COMPLETE.getCode()));
|
||||||
if (workorders.size()!= ids.size()){
|
if (workorders.size()!= ids.size()){
|
||||||
throw new BadRequestException("完成的工单不允许再次下发");
|
throw new BadRequestException("完成的工单不允许再次下发");
|
||||||
}
|
}
|
||||||
|
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||||
|
.nested(i -> i
|
||||||
|
.isNull("workorder_code").or()
|
||||||
|
.eq("workorder_code", "").or()
|
||||||
|
.eq("workorder_code", "0"))
|
||||||
|
.in("workorder_id", ids));
|
||||||
|
//aps排产完成的工单,生成工单编号再下发
|
||||||
|
if(list.size() > 0) {
|
||||||
|
list.forEach(r -> {
|
||||||
|
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||||
|
.eq("workorder_id", r.getWorkorder_id())
|
||||||
|
.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")));
|
||||||
|
});
|
||||||
|
}
|
||||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||||
.set("workorder_status", WorkerOrderEnum.SEND.getCode())
|
.set("workorder_status", WorkerOrderEnum.SEND.getCode())
|
||||||
.set("down_id", SecurityUtils.getCurrentUserId())
|
.set("down_id", SecurityUtils.getCurrentUserId())
|
||||||
@@ -183,18 +205,36 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
.set("down_time", new Date())
|
.set("down_time", new Date())
|
||||||
.in("workorder_id", ids));
|
.in("workorder_id", ids));
|
||||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) {
|
||||||
|
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().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
|
@Override
|
||||||
public void unDown(List<String> ids) {
|
public void unDown(List<String> ids) {
|
||||||
if (ids == null || ids.size() == 0) {
|
if(ids == null || ids.size() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
|
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||||
.ne("workorder_status", WorkerOrderEnum.SEND.getCode())
|
.ne("workorder_status", WorkerOrderEnum.SEND.getCode())
|
||||||
.in("workorder_id", ids));
|
.in("workorder_id", ids));
|
||||||
if (list.size() > 0) {
|
if(list.size() > 0) {
|
||||||
throw new BadRequestException("只有下发状态的工单才能取消下发");
|
throw new BadRequestException("只有下发状态的工单才能取消下发");
|
||||||
}
|
}
|
||||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||||
@@ -203,7 +243,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
.set("down_name", SecurityUtils.getCurrentNickName())
|
.set("down_name", SecurityUtils.getCurrentNickName())
|
||||||
.set("down_time", new Date())
|
.set("down_time", new Date())
|
||||||
.in("workorder_id", ids));
|
.in("workorder_id", ids));
|
||||||
|
|
||||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +250,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void finish(JSONObject param) {
|
public void finish(JSONObject param) {
|
||||||
//强制完成时修改工单状态
|
//强制完成时修改工单状态
|
||||||
String workorder_id = param.getJSONObject("row").getString("workorder_id");
|
String workorder_id = param
|
||||||
|
.getJSONObject("row")
|
||||||
|
.getString("workorder_id");
|
||||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||||
.set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())
|
.set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())
|
||||||
.set("confirm_id", SecurityUtils.getCurrentUserId())
|
.set("confirm_id", SecurityUtils.getCurrentUserId())
|
||||||
@@ -223,30 +264,30 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
map.put("workorder_id", workorder_id);
|
map.put("workorder_id", workorder_id);
|
||||||
map.put("type", WorkerOrderEnum.COMPLETE.getCode());
|
map.put("type", WorkerOrderEnum.COMPLETE.getCode());
|
||||||
array.add(map);
|
array.add(map);
|
||||||
Map<String, Object> result = wmsToAcsService.orderStatusUpdate(array);
|
Map<String,Object> result = wmsToAcsService.orderStatusUpdate(array);
|
||||||
if (!HttpStatus.OK.equals(result.get("status"))) {
|
if(!HttpStatus.OK.equals(result.get("status"))) {
|
||||||
log.error((String) result.get("message"));
|
log.error((String) result.get("message"));
|
||||||
}
|
}
|
||||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id);
|
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) {
|
//public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) {
|
||||||
// List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
|
// List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
|
||||||
// for (PdmProduceWorkorder one : workorders) {
|
// for (PdmProduceWorkorder one : workorders) {
|
||||||
// WorkorderRecord record = WorkorderRecord.builder()
|
// WorkorderRecord record = WorkorderRecord.builder()
|
||||||
// .workorder_id(one.getWorkorder_id())
|
// .workorder_id(one.getWorkorder_id())
|
||||||
// .device_code(one.getDevice_code())
|
// .device_code(one.getDevice_code())
|
||||||
// .dq_init_qty(one.getReal_qty())
|
// .dq_init_qty(one.getReal_qty())
|
||||||
// .dq_finish_qty(one.getReal_qty())
|
// .dq_finish_qty(one.getReal_qty())
|
||||||
// .operatetime_start(one.getCreate_time())
|
// .operatetime_start(one.getCreate_time())
|
||||||
// .workprocedure_id(one.getWorkprocedure_id())
|
// .workprocedure_id(one.getWorkprocedure_id())
|
||||||
// .operatetime_end(DateUtil.now())
|
// .operatetime_end(DateUtil.now())
|
||||||
// .shift_type_scode(one.getShift_type_scode())
|
// .shift_type_scode(one.getShift_type_scode())
|
||||||
// .product_area(one.getProduct_area()).build();
|
// .product_area(one.getProduct_area()).build();
|
||||||
// OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record);
|
// OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(), OptionRecord.Buss.WORKORDER, one.getWorkorder_id(), record);
|
||||||
// }
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -585,9 +626,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
|
|
||||||
JSONObject order = packageForm(param);
|
JSONObject order = packageForm(param);
|
||||||
//开工时更新设备生产的物料规格
|
//开工时更新设备生产的物料规格
|
||||||
// deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
// deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||||
// .set("spec",order.getString("material_spec"))
|
// .set("spec",order.getString("material_spec"))
|
||||||
// .eq("device_code",order.getString("device_code")));
|
// .eq("device_code",order.getString("device_code")));
|
||||||
array.add(order);
|
array.add(order);
|
||||||
//下发acs
|
//下发acs
|
||||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||||
@@ -653,9 +694,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
|
|
||||||
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||||
Assert.notNull(workorder, "当前工单不存在");
|
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())) {
|
// 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") + "当前工单已经完工不允许报工");
|
// throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工");
|
||||||
// }
|
// }
|
||||||
PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
|
PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
|
||||||
.eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成")));
|
.eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成")));
|
||||||
Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
|
Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
|
||||||
@@ -698,12 +739,16 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void reportApprove(JSONArray param) {
|
public void reportApprove(JSONArray param) {
|
||||||
List<PdmProduceWorkorderrecord> workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class);
|
List<PdmProduceWorkorderrecord> workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class);
|
||||||
if (!CollectionUtils.isEmpty(workreportRecords)) {
|
if(!CollectionUtils.isEmpty(workreportRecords)) {
|
||||||
List<String> macoperate_ids = workreportRecords.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList());
|
List<String> macoperate_ids = workreportRecords
|
||||||
List<PdmProduceWorkorderrecord> record = reportRecordService.list(new QueryWrapper<PdmProduceWorkorderrecord>()
|
.stream()
|
||||||
.in("macoperate_id", macoperate_ids));
|
.map(PdmProduceWorkorderrecord::getMacoperate_id)
|
||||||
Map<String, List<PdmProduceWorkorderrecord>> collect = workreportRecords.stream().collect(Collectors.groupingBy(PdmProduceWorkorderrecord::getWorkorder_id));
|
.collect(Collectors.toList());
|
||||||
for (Map.Entry<String, List<PdmProduceWorkorderrecord>> entry : collect.entrySet()) {
|
List<PdmProduceWorkorderrecord> record = reportRecordService.list(new QueryWrapper<PdmProduceWorkorderrecord>().in("macoperate_id", macoperate_ids));
|
||||||
|
Map<String,List<PdmProduceWorkorderrecord>> collect = workreportRecords
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.groupingBy(PdmProduceWorkorderrecord::getWorkorder_id));
|
||||||
|
for(Map.Entry<String,List<PdmProduceWorkorderrecord>> entry : collect.entrySet()) {
|
||||||
List<PdmProduceWorkorderrecord> itemRecord = entry.getValue();
|
List<PdmProduceWorkorderrecord> itemRecord = entry.getValue();
|
||||||
itemRecord.forEach(item -> {
|
itemRecord.forEach(item -> {
|
||||||
item.setReport_status(ReportEnum.REPORT_STATUS.code("报工审核"));
|
item.setReport_status(ReportEnum.REPORT_STATUS.code("报工审核"));
|
||||||
@@ -800,9 +845,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map> getOrderList(Map<String, String> param, Pageable page) {
|
public List<Map> getOrderList(Map<String,String> param, Pageable page) {
|
||||||
return this.baseMapper.orderList(param);
|
return this.baseMapper.orderList(param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ package org.nl.wms.product_manage.备份pdm.rest;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.nl.common.anno.Log;
|
import org.nl.common.anno.Log;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.wms.product_manage.备份pdm.service.FactoryCalendarService;
|
import org.nl.wms.product_manage.备份pdm.service.FactoryCalendarService;
|
||||||
@@ -73,8 +73,8 @@ public class FactoryCalendarController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateActive")
|
@PostMapping("/updateActive")
|
||||||
@Log("查询日期明细")
|
@Log("启用停用日历")
|
||||||
@ApiOperation("查询日期明细")
|
@ApiOperation("启用停用日历")
|
||||||
//@PreAuthorize("@el.check('productprocessroute:add')")
|
//@PreAuthorize("@el.check('productprocessroute:add')")
|
||||||
public ResponseEntity<Object> updateActive(@RequestBody JSONObject whereJson) {
|
public ResponseEntity<Object> updateActive(@RequestBody JSONObject whereJson) {
|
||||||
factoryCalendarService.updateActive(whereJson);
|
factoryCalendarService.updateActive(whereJson);
|
||||||
@@ -90,8 +90,8 @@ public class FactoryCalendarController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateDtlStatus")
|
@PostMapping("/updateDtlStatus")
|
||||||
@Log("查询日期明细")
|
@Log("修改工作日/休息日")
|
||||||
@ApiOperation("查询日期明细")
|
@ApiOperation("修改工作日/休息日")
|
||||||
//@PreAuthorize("@el.check('productprocessroute:add')")
|
//@PreAuthorize("@el.check('productprocessroute:add')")
|
||||||
public ResponseEntity<Object> updateDtlStatus(@RequestBody JSONObject whereJson) {
|
public ResponseEntity<Object> updateDtlStatus(@RequestBody JSONObject whereJson) {
|
||||||
factoryCalendarService.updateDtlStatus(whereJson);
|
factoryCalendarService.updateDtlStatus(whereJson);
|
||||||
@@ -99,8 +99,8 @@ public class FactoryCalendarController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateDtlActive")
|
@PostMapping("/updateDtlActive")
|
||||||
@Log("查询日期明细")
|
@Log("查询工作日/休息日")
|
||||||
@ApiOperation("查询日期明细")
|
@ApiOperation("查询工作日/休息日")
|
||||||
//@PreAuthorize("@el.check('productprocessroute:add')")
|
//@PreAuthorize("@el.check('productprocessroute:add')")
|
||||||
public ResponseEntity<Object> updateDtlActive(@RequestBody JSONObject whereJson) {
|
public ResponseEntity<Object> updateDtlActive(@RequestBody JSONObject whereJson) {
|
||||||
factoryCalendarService.updateDtlActive(whereJson);
|
factoryCalendarService.updateDtlActive(whereJson);
|
||||||
|
|||||||
@@ -34,8 +34,10 @@ public class DeviceDto implements Serializable {
|
|||||||
/** 工单编号 */
|
/** 工单编号 */
|
||||||
private String workorder_code;
|
private String workorder_code;
|
||||||
|
|
||||||
/** 设备编码2 */
|
/**
|
||||||
private String device_code2;
|
* aps设备编码
|
||||||
|
*/
|
||||||
|
private String aps_device_code;
|
||||||
|
|
||||||
/** 设备来料仓上限数 */
|
/** 设备来料仓上限数 */
|
||||||
private BigDecimal inupperlimit_qty;
|
private BigDecimal inupperlimit_qty;
|
||||||
|
|||||||
@@ -9,18 +9,21 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
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.WQL;
|
||||||
import org.nl.modules.wql.core.bean.WQLObject;
|
import org.nl.modules.wql.core.bean.WQLObject;
|
||||||
import org.nl.modules.wql.util.WqlUtil;
|
import org.nl.modules.wql.util.WqlUtil;
|
||||||
import org.nl.wms.product_manage.备份pdm.service.FactoryCalendarService;
|
import org.nl.wms.product_manage.备份pdm.service.FactoryCalendarService;
|
||||||
|
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -48,6 +51,20 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
public JSONArray queryDtl(JSONObject whereJson) {
|
||||||
|
String year = whereJson.getString("year");
|
||||||
|
String factorycalendar_id = whereJson.getString("factorycalendar_id");
|
||||||
|
HashMap<String, String> map = new HashMap<>();
|
||||||
|
map.put("flag", "2");
|
||||||
|
if (StrUtil.isNotEmpty(year)) map.put("date", year + "%");
|
||||||
|
if (StrUtil.isNotEmpty(factorycalendar_id)) map.put("id", factorycalendar_id);
|
||||||
|
return WQL.getWO("QPDM_FACTORYCALENDAR").addParamMap(map).process().getResultJSONArray(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||||
public void create(JSONObject whereJson) {
|
public void create(JSONObject whereJson) {
|
||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
@@ -66,6 +83,7 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||||
public void update(JSONObject whereJson) {
|
public void update(JSONObject whereJson) {
|
||||||
String factorycalendar_id = whereJson.getString("factorycalendar_id");
|
String factorycalendar_id = whereJson.getString("factorycalendar_id");
|
||||||
|
|
||||||
@@ -85,16 +103,118 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService {
|
|||||||
this.insertDtl(whereJson);
|
this.insertDtl(whereJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Async
|
||||||
|
public void insertDtl(JSONObject row) {
|
||||||
|
|
||||||
|
String a =DateUtil.format(DateUtil.parse( row.getString("factorycale_startdate")), "yyyy/MM/dd");
|
||||||
|
String b = row.getString("endfactory_year")+ "/12/31";
|
||||||
|
while (!a.equals(b)) {
|
||||||
|
JSONObject dtl = new JSONObject();
|
||||||
|
dtl.put("factorycalendardtl_id", IdUtil.getSnowflake(1, 1).nextId() + "");
|
||||||
|
dtl.put("factorycalendar_id", row.getString("factorycalendar_id"));
|
||||||
|
dtl.put("factory_date", a);
|
||||||
|
int dayOfWeek = DateUtil.dayOfWeek(DateUtil.parse(a));
|
||||||
|
switch (dayOfWeek) {
|
||||||
|
case 1:
|
||||||
|
if (row.getString("is_sun").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (row.getString("is_mon").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (row.getString("is_tue").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if (row.getString("is_wed").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
if (row.getString("is_thu").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
if (row.getString("is_fri").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
if (row.getString("is_sau").equals("1")) {
|
||||||
|
dtl.put("factorydate_type", "01");
|
||||||
|
dtl.put("work_type", "00");
|
||||||
|
dtl.put("work_type_name", "工作日");
|
||||||
|
dtl.put("priority", "50");
|
||||||
|
} else {
|
||||||
|
dtl.put("factorydate_type", "03");
|
||||||
|
dtl.put("work_type", "01");
|
||||||
|
dtl.put("work_type_name", "休息日");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").insert(dtl);
|
||||||
|
a = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(a), 1), "yyyy/MM/dd");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteAll(Long[] ids) {
|
public void deleteAll(Long[] ids) {
|
||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
|
|
||||||
|
|
||||||
WQLObject wo = WQLObject.getWQLObject("pdm_bi_factorycalendardtl");
|
WQLObject wo = WQLObject.getWQLObject("pdm_bi_factorycalendar");
|
||||||
for (Long factorycalendardtl_id : ids) {
|
for (Long factorycalendar_id : ids) {
|
||||||
JSONObject param = new JSONObject();
|
JSONObject param = new JSONObject();
|
||||||
param.put("factorycalendardtl_id", String.valueOf(factorycalendardtl_id));
|
param.put("factorycalendar_id", String.valueOf(factorycalendar_id));
|
||||||
param.put("is_delete", "1");
|
param.put("is_delete", "1");
|
||||||
param.put("update_optid", currentUserId);
|
param.put("update_optid", currentUserId);
|
||||||
param.put("update_optname", nickName);
|
param.put("update_optname", nickName);
|
||||||
@@ -120,25 +240,25 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService {
|
|||||||
WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(map, "factorycalendar_id = '" + factorycalendar_id + "'");
|
WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(map, "factorycalendar_id = '" + factorycalendar_id + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public JSONArray queryDtl(JSONObject whereJson) {
|
|
||||||
String year = whereJson.getString("year");
|
|
||||||
String factorycalendar_id = whereJson.getString("factorycalendar_id");
|
|
||||||
JSONArray rows = WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").query("factory_date like '" + year + "%' AND factorycalendar_id = '" + factorycalendar_id + "'").getResultJSONArray(0);
|
|
||||||
return rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateDtlStatus(JSONObject whereJson) {
|
public void updateDtlStatus(JSONObject whereJson) {
|
||||||
String holidayType = whereJson.getString("holidayType");
|
|
||||||
String holidayDate = whereJson.getString("holidayDate");
|
|
||||||
|
String holidayType =whereJson.getString("holidayType");
|
||||||
|
String holidayDate =DateUtil.format(DateUtil.parse( whereJson.getString("holidayDate")), "yyyy/MM/dd");
|
||||||
String factorycalendar_id = whereJson.getString("factorycalendar_id");
|
String factorycalendar_id = whereJson.getString("factorycalendar_id");
|
||||||
HashMap<String, String> map = new HashMap<>();
|
HashMap<String, String> map = new HashMap<>();
|
||||||
map.put("work_type", holidayType);
|
map.put("work_type", holidayType);
|
||||||
if (holidayType.equals("00")) {
|
if (holidayType.equals("00")) {
|
||||||
map.put("factorydate_type", "01");
|
map.put("factorydate_type", "01");
|
||||||
|
map.put("priority", "50");
|
||||||
|
map.put("work_type_name", "工作日");
|
||||||
} else {
|
} else {
|
||||||
map.put("factorydate_type", "03");
|
map.put("factorydate_type", "03");
|
||||||
|
map.put("priority", "100");
|
||||||
|
map.put("work_type_name", "休息日");
|
||||||
}
|
}
|
||||||
WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").update(map, "factorycalendar_id = '" + factorycalendar_id + "' AND factory_date = '" + holidayDate + "'");
|
WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").update(map, "factorycalendar_id = '" + factorycalendar_id + "' AND factory_date = '" + holidayDate + "'");
|
||||||
}
|
}
|
||||||
@@ -156,83 +276,4 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService {
|
|||||||
WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(whereJson);
|
WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(whereJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insertDtl(JSONObject row) {
|
|
||||||
String a = row.getString("factorycale_startdate");
|
|
||||||
String endfactory_year = row.getString("endfactory_year");
|
|
||||||
String b = endfactory_year + "-12-31";
|
|
||||||
while (!a.equals(b)) {
|
|
||||||
JSONObject dtl = new JSONObject();
|
|
||||||
dtl.put("factorycalendardtl_id", IdUtil.getSnowflake(1, 1).nextId() + "");
|
|
||||||
dtl.put("factorycalendar_id", row.getString("factorycalendar_id"));
|
|
||||||
dtl.put("factory_date", a);
|
|
||||||
int dayOfWeek = DateUtil.dayOfWeek(DateUtil.parse(a));
|
|
||||||
switch (dayOfWeek) {
|
|
||||||
case 1:
|
|
||||||
if (row.getString("is_sun").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (row.getString("is_mon").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (row.getString("is_tue").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
if (row.getString("is_wed").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
if (row.getString("is_thu").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
if (row.getString("is_fri").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
if (row.getString("is_sau").equals("1")) {
|
|
||||||
dtl.put("factorydate_type", "01");
|
|
||||||
dtl.put("work_type", "00");
|
|
||||||
} else {
|
|
||||||
dtl.put("factorydate_type", "03");
|
|
||||||
dtl.put("work_type", "01");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").insert(dtl);
|
|
||||||
a = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(a), 1), "yyyy-MM-dd");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
## 表字段对应输入参数
|
## 表字段对应输入参数
|
||||||
#################################################
|
#################################################
|
||||||
输入.flag TYPEAS s_string
|
输入.flag TYPEAS s_string
|
||||||
|
输入.id TYPEAS s_string
|
||||||
|
输入.date TYPEAS s_string
|
||||||
输入.search TYPEAS s_string
|
输入.search TYPEAS s_string
|
||||||
输入.processroute_code TYPEAS s_string
|
输入.processroute_code TYPEAS s_string
|
||||||
|
|
||||||
@@ -50,7 +52,7 @@
|
|||||||
FROM
|
FROM
|
||||||
pdm_bi_factorycalendar dar
|
pdm_bi_factorycalendar dar
|
||||||
WHERE
|
WHERE
|
||||||
1=1
|
dar.is_delete = '0'
|
||||||
OPTION 输入.search <> ""
|
OPTION 输入.search <> ""
|
||||||
(dar.factorycalendar_code like 输入.search or
|
(dar.factorycalendar_code like 输入.search or
|
||||||
dar.factorycalendar_name like 输入.search)
|
dar.factorycalendar_name like 输入.search)
|
||||||
@@ -59,6 +61,28 @@
|
|||||||
ENDPAGEQUERY
|
ENDPAGEQUERY
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
||||||
|
IF 输入.flag = "2"
|
||||||
|
PAGEQUERY
|
||||||
|
SELECT
|
||||||
|
T0.FACTORYCALENDARDTL_ID,
|
||||||
|
T0.FACTORYCALENDAR_ID,
|
||||||
|
DATE_FORMAT(T0.FACTORY_DATE, '%Y-%m-%d') AS FACTORY_DATE,
|
||||||
|
T0.FACTORYDATE_TYPE,
|
||||||
|
T0.WORK_TYPE,
|
||||||
|
T0.WORK_TYPE_NAME,
|
||||||
|
T0.RESOURCE,
|
||||||
|
T0.PRIORITY
|
||||||
|
FROM
|
||||||
|
PDM_BI_FACTORYCALENDARDTL T0
|
||||||
|
WHERE 1=1
|
||||||
|
OPTION 输入.date <> ""
|
||||||
|
(T0.FACTORY_DATE LIKE 输入.date)
|
||||||
|
ENDOPTION
|
||||||
|
OPTION 输入.id <> ""
|
||||||
|
T0.FACTORYCALENDAR_ID = 输入.id
|
||||||
|
ENDOPTION
|
||||||
|
ENDSELECT
|
||||||
|
ENDPAGEQUERY
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ spring:
|
|||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:zjhl_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:zjhl_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||||
username: ${DB_USER:root}
|
username: ${DB_USER:root}
|
||||||
# password: ${DB_PWD:Root.123456}
|
password: ${DB_PWD:Root.123456}
|
||||||
password: ${DB_PWD:root}
|
# password: ${DB_PWD:root}
|
||||||
|
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 5
|
initial-size: 5
|
||||||
|
|||||||
@@ -1,203 +0,0 @@
|
|||||||
server:
|
|
||||||
port: 8011
|
|
||||||
#配置数据源
|
|
||||||
spring:
|
|
||||||
data:
|
|
||||||
elasticsearch:
|
|
||||||
repositories:
|
|
||||||
enabled: true
|
|
||||||
client:
|
|
||||||
reactive:
|
|
||||||
#endpoints: 172.31.185.110:8200,172.31.154.9:8200 #内网
|
|
||||||
# endpoints: 47.96.133.178:8200 #外网
|
|
||||||
endpoints: http://127.0.0.1:9200 #外网
|
|
||||||
elasticsearch:
|
|
||||||
rest:
|
|
||||||
#uris: 172.31.185.110:8200,172.31.154.9:8200 #内网
|
|
||||||
# uris: 47.96.133.178:8200 #外网
|
|
||||||
uris: http://127.0.0.1:9200 #外网
|
|
||||||
# username: elastic
|
|
||||||
# password: 123456
|
|
||||||
datasource:
|
|
||||||
druid:
|
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
|
||||||
username: ${DB_USER:root}
|
|
||||||
# password: ${DB_PWD:123456}
|
|
||||||
password: ${DB_PWD:942464Yy}
|
|
||||||
|
|
||||||
# 初始连接数
|
|
||||||
initial-size: 5
|
|
||||||
# 最小连接数
|
|
||||||
min-idle: 15
|
|
||||||
# 最大连接数
|
|
||||||
max-active: 30
|
|
||||||
# 是否自动回收超时连接
|
|
||||||
remove-abandoned: true
|
|
||||||
# 超时时间(以秒数为单位)
|
|
||||||
remove-abandoned-timeout: 180
|
|
||||||
# 获取连接超时时间
|
|
||||||
max-wait: 3000
|
|
||||||
# 连接有效性检测时间
|
|
||||||
time-between-eviction-runs-millis: 60000
|
|
||||||
# 连接在池中最小生存的时间
|
|
||||||
min-evictable-idle-time-millis: 300000
|
|
||||||
# 连接在池中最大生存的时间
|
|
||||||
max-evictable-idle-time-millis: 900000
|
|
||||||
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
|
|
||||||
test-while-idle: true
|
|
||||||
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
|
|
||||||
test-on-borrow: true
|
|
||||||
# 是否在归还到池中前进行检验
|
|
||||||
test-on-return: false
|
|
||||||
# 检测连接是否有效
|
|
||||||
validation-query: select 1
|
|
||||||
# 配置监控统计
|
|
||||||
webStatFilter:
|
|
||||||
enabled: true
|
|
||||||
stat-view-servlet:
|
|
||||||
enabled: true
|
|
||||||
url-pattern: /druid/*
|
|
||||||
reset-enable: false
|
|
||||||
filters:
|
|
||||||
DruidFilter,stat
|
|
||||||
|
|
||||||
redis:
|
|
||||||
#数据库索引
|
|
||||||
database: ${REDIS_DB:1}
|
|
||||||
#host: ${REDIS_HOST:127.0.0.1}
|
|
||||||
host: ${REDIS_HOST:localhost}
|
|
||||||
port: ${REDIS_PORT:6379}
|
|
||||||
password: ${REDIS_PWD:}
|
|
||||||
#连接超时时间
|
|
||||||
timeout: 5000
|
|
||||||
redisson:
|
|
||||||
config: |
|
|
||||||
threads: 4
|
|
||||||
nettyThreads: 4
|
|
||||||
singleServerConfig:
|
|
||||||
connectionMinimumIdleSize: 8
|
|
||||||
connectionPoolSize: 8
|
|
||||||
address: redis://127.0.0.1:6379
|
|
||||||
idleConnectionTimeout: 10000
|
|
||||||
timeout: 3000
|
|
||||||
# 登录相关配置
|
|
||||||
login:
|
|
||||||
# 登录缓存
|
|
||||||
cache-enable: true
|
|
||||||
# 是否限制单用户登录
|
|
||||||
single-login: false
|
|
||||||
# 验证码
|
|
||||||
login-code:
|
|
||||||
# 验证码类型配置 查看 LoginProperties 类
|
|
||||||
code-type: arithmetic
|
|
||||||
# 登录图形验证码有效时间/分钟
|
|
||||||
expiration: 2
|
|
||||||
# 验证码高度
|
|
||||||
width: 111
|
|
||||||
# 验证码宽度
|
|
||||||
heigth: 36
|
|
||||||
# 内容长度
|
|
||||||
length: 2
|
|
||||||
# 字体名称,为空则使用默认字体
|
|
||||||
font-name:
|
|
||||||
# 字体大小
|
|
||||||
font-size: 25
|
|
||||||
|
|
||||||
#jwt
|
|
||||||
jwt:
|
|
||||||
header: Authorization
|
|
||||||
# 令牌前缀
|
|
||||||
token-start-with: Bearer
|
|
||||||
# 必须使用最少88位的Base64对该令牌进行编码
|
|
||||||
base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI=
|
|
||||||
# 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html
|
|
||||||
token-validity-in-seconds: 14400000
|
|
||||||
# 在线用户key
|
|
||||||
online-key: online-token-
|
|
||||||
# 验证码
|
|
||||||
code-key: code-key-
|
|
||||||
# token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期
|
|
||||||
detect: 1800000
|
|
||||||
# 续期时间范围,默认1小时,单位毫秒
|
|
||||||
renew: 3600000
|
|
||||||
|
|
||||||
#是否允许生成代码,生产环境设置为false
|
|
||||||
generator:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
#是否开启 swagger-ui
|
|
||||||
swagger:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
# IP 本地解析
|
|
||||||
ip:
|
|
||||||
local-parsing: true
|
|
||||||
|
|
||||||
# 文件存储路径
|
|
||||||
file:
|
|
||||||
mac:
|
|
||||||
path: ~/file/
|
|
||||||
avatar: ~/avatar/
|
|
||||||
linux:
|
|
||||||
path: /home/eladmin/file/
|
|
||||||
avatar: /home/eladmin/avatar/
|
|
||||||
windows:
|
|
||||||
path: C:\eladmin\file\
|
|
||||||
avatar: C:\eladmin\avatar\
|
|
||||||
# 文件大小 /M
|
|
||||||
maxSize: 100
|
|
||||||
avatarMaxSize: 5
|
|
||||||
|
|
||||||
sa-token:
|
|
||||||
# token 名称 (同时也是cookie名称)
|
|
||||||
token-name: Authorization
|
|
||||||
# token 有效期,单位s 默认30天, -1代表永不过期
|
|
||||||
timeout: 2592000
|
|
||||||
# token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
|
|
||||||
activity-timeout: -1
|
|
||||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
|
||||||
is-concurrent: true
|
|
||||||
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
|
||||||
is-share: false
|
|
||||||
# token风格
|
|
||||||
token-style: random-128
|
|
||||||
# 是否输出操作日志
|
|
||||||
is-log: false
|
|
||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
|
||||||
# token 前缀
|
|
||||||
token-prefix:
|
|
||||||
cookie:
|
|
||||||
# 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com
|
|
||||||
domain:
|
|
||||||
is-read-cookie: false
|
|
||||||
|
|
||||||
#jetcache:
|
|
||||||
# defaultCacheType: LOCAL
|
|
||||||
# statIntervalMinutes: 15
|
|
||||||
# areaInCacheName: false
|
|
||||||
# hiddenPackages: com.yb
|
|
||||||
# local:
|
|
||||||
# default:
|
|
||||||
# type: caffeine
|
|
||||||
# limit: 100
|
|
||||||
# keyConvertor: fastjson
|
|
||||||
# expireAfterWriteInMillis: 60000
|
|
||||||
# remote:
|
|
||||||
# default:
|
|
||||||
# type: redis.lettuce
|
|
||||||
# keyConvertor: fastjson
|
|
||||||
# valueEncoder: kryo
|
|
||||||
# valueDecoder: kryo
|
|
||||||
# poolConfig:
|
|
||||||
# minIdle: 5
|
|
||||||
# maxIdle: 200
|
|
||||||
# maxTotal: 1000
|
|
||||||
# uri:
|
|
||||||
# - redis://127.0.0.1:6379
|
|
||||||
es:
|
|
||||||
index: mes_log
|
|
||||||
schedulerFile: /Users/mima0000/Desktop/scheduler.xml
|
|
||||||
@@ -24,4 +24,12 @@ export function edit(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export default { add, edit, del }
|
export function excelImport(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/mpsSaleOrder/excelImport',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export default { add, edit, del, excelImport }
|
||||||
|
|||||||
116
mes/qd/src/views/wms/pcs/saleorder/UploadDialog.vue
Normal file
116
mes/qd/src/views/wms/pcs/saleorder/UploadDialog.vue
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
title="导入Excel文件"
|
||||||
|
append-to-body
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
destroy-on-close
|
||||||
|
width="400px"
|
||||||
|
:show-close="true"
|
||||||
|
@close="close"
|
||||||
|
@open="open"
|
||||||
|
>
|
||||||
|
<el-upload
|
||||||
|
ref="upload"
|
||||||
|
class="upload-demo"
|
||||||
|
action=""
|
||||||
|
drag
|
||||||
|
:on-exceed="is_one"
|
||||||
|
:limit="1"
|
||||||
|
:auto-upload="false"
|
||||||
|
:multiple="false"
|
||||||
|
:show-file-list="true"
|
||||||
|
:on-change="uploadByJsqd"
|
||||||
|
:file-list="fileList"
|
||||||
|
accept=".xlsx,.xls"
|
||||||
|
>
|
||||||
|
<i class="el-icon-upload" />
|
||||||
|
<div class="el-upload__text">
|
||||||
|
将文件拖到此处,或
|
||||||
|
<em>点击上传</em>
|
||||||
|
</div>
|
||||||
|
<div slot="tip" class="el-upload__tip">只能上传Excel文件,且不超过10MB</div>
|
||||||
|
</el-upload>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submit">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import crudSaleOrder from '@/api/wms/pcs/saleOrder'
|
||||||
|
import CRUD, { crud } from '@crud/crud'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'UploadDialog',
|
||||||
|
mixins: [crud()],
|
||||||
|
components: {},
|
||||||
|
props: {
|
||||||
|
dialogShow: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
openParam: {
|
||||||
|
type: String
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
fileList: [],
|
||||||
|
file1: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dialogShow: {
|
||||||
|
handler(newValue, oldValue) {
|
||||||
|
this.dialogVisible = newValue
|
||||||
|
}
|
||||||
|
},
|
||||||
|
openParam: {
|
||||||
|
handler(newValue, oldValue) {
|
||||||
|
this.opendtlParam = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open() {
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('update:dialogShow', false)
|
||||||
|
},
|
||||||
|
is_one() {
|
||||||
|
this.crud.notify('只能上传一个excel文件!', CRUD.NOTIFICATION_TYPE.WARNING)
|
||||||
|
},
|
||||||
|
// 文件校验方法
|
||||||
|
beforeAvatarUpload(file) {
|
||||||
|
// 不能导入大小超过2Mb的文件
|
||||||
|
if (file.size > 10 * 1024 * 1024) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
// 文件发生改变就会触发的事件
|
||||||
|
uploadByJsqd(file) {
|
||||||
|
this.file1 = file
|
||||||
|
},
|
||||||
|
submit() {
|
||||||
|
if (this.beforeAvatarUpload(this.file1)) {
|
||||||
|
this.fileList.name = this.file1.name
|
||||||
|
this.fileList.url = ''
|
||||||
|
var formdata = new FormData()
|
||||||
|
formdata.append('file', this.file1.raw)
|
||||||
|
// excelImport:请求接口 formdata:传递参数
|
||||||
|
crudSaleOrder.excelImport(formdata).then((res) => {
|
||||||
|
this.crud.notify('导入成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
this.$emit('tableChanged3', '')
|
||||||
|
this.$emit('update:dialogShow', false)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.crud.notify('文件过大,请上传小于10MB的文件〜', CRUD.NOTIFICATION_TYPE.WARNING)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -12,7 +12,13 @@
|
|||||||
label-suffix=":"
|
label-suffix=":"
|
||||||
>
|
>
|
||||||
<el-form-item label="销售单号">
|
<el-form-item label="销售单号">
|
||||||
<el-input v-model="query.sale_code" clearable placeholder="销售单号" style="width: 200px;" class="filter-item" />
|
<el-input
|
||||||
|
v-model="query.sale_code"
|
||||||
|
clearable
|
||||||
|
placeholder="销售单号"
|
||||||
|
style="width: 200px;"
|
||||||
|
class="filter-item"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="物料搜索">
|
<el-form-item label="物料搜索">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -31,7 +37,7 @@
|
|||||||
value-format="yyyy-MM-dd HH:mm:ss"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
end-placeholder="结束日期"
|
end-placeholder="结束日期"
|
||||||
:default-time="['00:00:00','23:59:59']"
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -62,7 +68,7 @@
|
|||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否正常">
|
<!-- <el-form-item label="是否正常">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.is_success"
|
v-model="query.is_success"
|
||||||
style="width: 200px"
|
style="width: 200px"
|
||||||
@@ -78,11 +84,21 @@
|
|||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<rrOperation :crud="crud" />
|
<rrOperation :crud="crud" />
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<crudOperation :permission="permission">
|
<crudOperation :permission="permission">
|
||||||
|
<el-button
|
||||||
|
slot="right"
|
||||||
|
class="filter-item"
|
||||||
|
type="warning"
|
||||||
|
icon="el-icon-upload2"
|
||||||
|
size="mini"
|
||||||
|
@click="uploadShow = true"
|
||||||
|
>
|
||||||
|
导入
|
||||||
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@@ -95,26 +111,58 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</crudOperation>
|
</crudOperation>
|
||||||
<!--表单组件-->
|
<!--表单组件-->
|
||||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
|
<el-dialog
|
||||||
<el-form ref="form" :model="form" size="mini" label-width="80px">
|
:close-on-click-modal="false"
|
||||||
</el-form>
|
:before-close="crud.cancelCU"
|
||||||
|
:visible.sync="crud.status.cu > 0"
|
||||||
|
:title="crud.status.title"
|
||||||
|
width="500px"
|
||||||
|
>
|
||||||
|
<el-form ref="form" :model="form" size="mini" label-width="80px" />
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||||||
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
<el-button
|
||||||
|
:loading="crud.cu === 2"
|
||||||
|
type="primary"
|
||||||
|
@click="crud.submitCU"
|
||||||
|
>确认</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
<el-table
|
||||||
|
ref="table"
|
||||||
|
v-loading="crud.loading"
|
||||||
|
:data="crud.data"
|
||||||
|
size="mini"
|
||||||
|
style="width: 100%;"
|
||||||
|
@selection-change="crud.selectionChangeHandler"
|
||||||
|
>
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column prop="sale_code" label="销售单号" min-width="100" show-overflow-tooltip/>
|
<el-table-column
|
||||||
|
prop="sale_code"
|
||||||
|
label="销售单号"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
<el-table-column prop="seq_no" label="明细序号" />
|
<el-table-column prop="seq_no" label="明细序号" />
|
||||||
<el-table-column prop="sale_type" label="销售单类型" min-width="100" show-overflow-tooltip>
|
<el-table-column
|
||||||
|
prop="sale_type"
|
||||||
|
label="销售单类型"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ dict.label.PCS_SAL_TYPE[scope.row.sale_type] }}
|
{{ dict.label.PCS_SAL_TYPE[scope.row.sale_type] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="material_code" label="物料编码" />
|
<el-table-column prop="material_code" label="物料编码" />
|
||||||
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')"/>
|
<el-table-column
|
||||||
|
prop="material_name"
|
||||||
|
label="物料名称"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
|
||||||
<el-table-column prop="status" label="状态">
|
<el-table-column prop="status" label="状态">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ dict.label.PCS_SALE_STATUS[scope.row.status] }}
|
{{ dict.label.PCS_SALE_STATUS[scope.row.status] }}
|
||||||
@@ -122,15 +170,28 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="sale_qty" label="销售数量" />
|
<el-table-column prop="sale_qty" label="销售数量" />
|
||||||
<el-table-column prop="produce_seq" label="生产顺序" />
|
<el-table-column prop="produce_seq" label="生产顺序" />
|
||||||
<el-table-column prop="cust_code" label="客户编码" :min-width="flexWidth('cust_code',crud.data,'客户编码')"/>
|
<el-table-column prop="cust_code" label="客户编码" :min-width="flexWidth('cust_code',crud.data,'客户编码')" />
|
||||||
<el-table-column prop="cust_name" label="客户名称" :min-width="flexWidth('cust_name',crud.data,'cust_name')"/>
|
<el-table-column prop="cust_name" label="客户名称" :min-width="flexWidth('cust_name',crud.data,'cust_name')" />
|
||||||
<el-table-column prop="unit_name" label="计量单位" show-overflow-tooltip min-width="150" />
|
<el-table-column prop="unit_name" label="计量单位" show-overflow-tooltip min-width="150" />
|
||||||
<el-table-column prop="plandeliver_date" label="计划交期" min-width="100" show-overflow-tooltip/>
|
<el-table-column prop="plandeliver_date" label="计划交期" min-width="100" show-overflow-tooltip />
|
||||||
<el-table-column prop="remark" label="备注" show-overflow-tooltip min-width="200"/>
|
<el-table-column prop="remark" label="备注" show-overflow-tooltip min-width="200" />
|
||||||
<el-table-column prop="create_name" label="创建人" />
|
<el-table-column prop="create_name" label="创建人" />
|
||||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
|
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
|
||||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')"/>
|
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')" />
|
||||||
<!-- <el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
<!-- <el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||||
|
<el-table-column
|
||||||
|
prop="create_time"
|
||||||
|
label="创建时间"
|
||||||
|
min-width="120"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="confirm_time"
|
||||||
|
label="修改时间"
|
||||||
|
min-width="120"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<!-<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<udOperation
|
<udOperation
|
||||||
:data="scope.row"
|
:data="scope.row"
|
||||||
@@ -142,6 +203,7 @@
|
|||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
<pagination />
|
<pagination />
|
||||||
</div>
|
</div>
|
||||||
|
<UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="tableChanged3" />
|
||||||
<Dialog :dialog-show.sync="dialogShow" />
|
<Dialog :dialog-show.sync="dialogShow" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -151,20 +213,45 @@ import crudSaleOrder from '@/api/wms/pcs/saleOrder'
|
|||||||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import crudOperation from '@crud/CRUD.operation'
|
import crudOperation from '@crud/CRUD.operation'
|
||||||
|
import UploadDialog from '@/views/wms/pcs/saleorder/UploadDialog'
|
||||||
import Dialog from '@/views/wms/pcs/saleorder/Dialog'
|
import Dialog from '@/views/wms/pcs/saleorder/Dialog'
|
||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
import Treeselect, {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect'
|
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
||||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
import crudClassstandard from '@/api/wms/basedata/master/classstandard'
|
import crudClassstandard from '@/api/wms/basedata/master/classstandard'
|
||||||
|
|
||||||
const defaultForm = { sale_id: null, sale_code: null, seq_no: null, sale_type: null, material_id: null, status: null, sale_qty: null, produce_seq: null, cust_id: null, qty_unit_id: null, plandeliver_date: null, create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null, cust_code: null, cust_name: null }
|
const defaultForm = {
|
||||||
|
sale_id: null,
|
||||||
|
sale_code: null,
|
||||||
|
seq_no: null,
|
||||||
|
sale_type: null,
|
||||||
|
material_id: null,
|
||||||
|
status: null,
|
||||||
|
sale_qty: null,
|
||||||
|
produce_seq: null,
|
||||||
|
cust_id: null,
|
||||||
|
qty_unit_id: null,
|
||||||
|
plandeliver_date: null,
|
||||||
|
create_id: null,
|
||||||
|
create_name: null,
|
||||||
|
create_time: null,
|
||||||
|
update_optid: null,
|
||||||
|
update_optname: null,
|
||||||
|
update_time: null,
|
||||||
|
cust_code: null,
|
||||||
|
cust_name: null
|
||||||
|
}
|
||||||
export default {
|
export default {
|
||||||
name: 'SaleOrder',
|
name: 'SaleOrder',
|
||||||
dicts: ['PCS_SALE_STATUS', 'PCS_SAL_TYPE', 'IS_OR_NOT'],
|
dicts: ['PCS_SALE_STATUS', 'PCS_SAL_TYPE', 'IS_OR_NOT'],
|
||||||
components: { pagination, crudOperation, rrOperation, Treeselect, Dialog },
|
components: { pagination, crudOperation, rrOperation, Treeselect, UploadDialog, Dialog },
|
||||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
cruds() {
|
cruds() {
|
||||||
return CRUD({ title: '销售订单', url: 'api/saleOrder', idField: 'sale_id', sort: 'sale_id,desc',
|
return CRUD({
|
||||||
|
title: '销售订单',
|
||||||
|
url: 'api/mpsSaleOrder',
|
||||||
|
idField: 'sale_id',
|
||||||
|
sort: 'sale_id,desc',
|
||||||
optShow: {
|
optShow: {
|
||||||
add: false,
|
add: false,
|
||||||
edit: false,
|
edit: false,
|
||||||
@@ -172,17 +259,16 @@ export default {
|
|||||||
reset: true,
|
reset: true,
|
||||||
download: false
|
download: false
|
||||||
},
|
},
|
||||||
crudMethod: { ...crudSaleOrder }})
|
crudMethod: { ...crudSaleOrder }
|
||||||
|
})
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
classes3: [],
|
classes3: [],
|
||||||
|
uploadShow: false,
|
||||||
dialogShow: false,
|
dialogShow: false,
|
||||||
permission: {
|
permission: {},
|
||||||
},
|
queryTypeOptions: [{ key: 'sale_code', display_name: '销售单号' }]
|
||||||
queryTypeOptions: [
|
|
||||||
{ key: 'sale_code', display_name: '销售单号' }
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -191,7 +277,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
queryClassId() {
|
queryClassId() {
|
||||||
const param = {
|
const param = {
|
||||||
'class_idStr': this.class_idStr
|
class_idStr: this.class_idStr
|
||||||
}
|
}
|
||||||
crudClassstandard.queryClassById(param).then(res => {
|
crudClassstandard.queryClassById(param).then(res => {
|
||||||
this.classes = res.content.map(obj => {
|
this.classes = res.content.map(obj => {
|
||||||
@@ -205,6 +291,9 @@ export default {
|
|||||||
importin() {
|
importin() {
|
||||||
this.dialogShow = true
|
this.dialogShow = true
|
||||||
},
|
},
|
||||||
|
tableChanged3() {
|
||||||
|
this.crud.toQuery()
|
||||||
|
},
|
||||||
buildTree(classes) {
|
buildTree(classes) {
|
||||||
classes.forEach(data => {
|
classes.forEach(data => {
|
||||||
if (data.children) {
|
if (data.children) {
|
||||||
@@ -249,6 +338,4 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
label-width="90px"
|
label-width="90px"
|
||||||
label-suffix=":"
|
label-suffix=":"
|
||||||
>
|
>
|
||||||
<el-form-item label="生产车间">
|
<!-- <el-form-item label="生产车间">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="query.product_area"
|
v-model="query.product_area"
|
||||||
clearable
|
clearable
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<!-- 搜索 -->
|
<!-- 搜索 -->
|
||||||
<el-form-item label="工单检索">
|
<el-form-item label="工单检索">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="物料系列" >
|
<el-form-item label="物料系列">
|
||||||
<treeselect
|
<treeselect
|
||||||
v-model="query.product_series"
|
v-model="query.product_series"
|
||||||
:options="classes3"
|
:options="classes3"
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<rrOperation :crud="crud"/>
|
<rrOperation :crud="crud" />
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
@@ -275,7 +275,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="false" label="物料标识" prop="material_id">
|
<el-form-item v-if="false" label="物料标识" prop="material_id">
|
||||||
<el-input v-model="form.material_id" style="width: 200px;"/>
|
<el-input v-model="form.material_id" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="物料编码" prop="material_code">
|
<el-form-item label="物料编码" prop="material_code">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -301,10 +301,10 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="物料单重" prop="material_weight">
|
<el-form-item label="物料单重" prop="material_weight">
|
||||||
<el-input v-model="form.material_weight" style="width: 200px;"/>
|
<el-input v-model="form.material_weight" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="计划数量" prop="plan_qty">
|
<el-form-item label="计划数量" prop="plan_qty">
|
||||||
<el-input v-model="form.plan_qty" style="width: 200px;"/>
|
<el-input v-model="form.plan_qty" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="计划开始时间" prop="planproducestart_date">
|
<el-form-item label="计划开始时间" prop="planproducestart_date">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="crud.status.edit" label="实际数量" prop="report_qty">
|
<el-form-item v-if="crud.status.edit" label="实际数量" prop="report_qty">
|
||||||
<el-input v-model="form.real_qty" style="width: 200px;"/>
|
<el-input v-model="form.real_qty" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="班次类型" prop="shift_type_scode">
|
<el-form-item label="班次类型" prop="shift_type_scode">
|
||||||
<el-select
|
<el-select
|
||||||
@@ -343,7 +343,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="销售单标识">
|
<el-form-item label="销售单标识">
|
||||||
<el-input v-model="form.sale_id" style="width: 200px;"/>
|
<el-input v-model="form.sale_id" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="是否搬运" prop="is_needmove">
|
<el-form-item label="是否搬运" prop="is_needmove">
|
||||||
<el-radio
|
<el-radio
|
||||||
@@ -424,41 +424,62 @@
|
|||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
@selection-change="crud.selectionChangeHandler"
|
@selection-change="crud.selectionChangeHandler"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55"/>
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column v-if="false" prop="workorder_id" label="生产班次工单标识"/>
|
<el-table-column v-if="false" prop="workorder_id" label="生产班次工单标识" />
|
||||||
<el-table-column prop="workorder_code" label="工单编号" :min-width="flexWidth('workorder_code',crud.data,'工单编号')">
|
<el-table-column prop="workorder_id" label="工单id" width="160px">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.workorder_code }}</el-link>
|
<el-link type="warning" @click="toView(scope.row)">{{ scope.row.workorder_id }}</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column prop="workorder_code" label="工单编号" width="85px" />
|
||||||
<el-table-column prop="workorder_status" label="工单状态">
|
<el-table-column prop="workorder_status" label="工单状态">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ dict.label.MPS_BD_ORDERSTATUS[scope.row.workorder_status] }}
|
{{ dict.label.MPS_BD_ORDERSTATUS[scope.row.workorder_status] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column prop="workprocedure_code" label="工序编码" />-->
|
<!-- <el-table-column prop="workprocedure_code" label="工序编码" />-->
|
||||||
<el-table-column prop="product_area" label="生产车间"/>
|
<el-table-column prop="product_area" label="生产车间" />
|
||||||
<el-table-column prop="plan_qty" label="计划数量"/>
|
<el-table-column prop="plan_qty" label="计划数量" />
|
||||||
<el-table-column prop="outupperlimit_qty" label="满筐数量"/>
|
<el-table-column prop="outupperlimit_qty" label="满筐数量" />
|
||||||
<el-table-column prop="dq_real_qty" label="电气实时数" width="100" show-overflow-tooltip/>
|
<el-table-column prop="dq_real_qty" label="电气实时数" width="100" show-overflow-tooltip />
|
||||||
<el-table-column prop="real_qty" label="报工总数"/>
|
<el-table-column prop="real_qty" label="报工总数" />
|
||||||
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')"/>
|
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
|
||||||
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')"/>
|
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
|
||||||
<el-table-column prop="device_code" label="当前设备编码" :min-width="flexWidth('device_code',crud.data,'当前设备编码')"/>
|
<el-table-column prop="device_code" label="当前设备编码" :min-width="flexWidth('device_code',crud.data,'当前设备编码')" />
|
||||||
<el-table-column prop="workprocedure_name" label="工序名称"
|
<el-table-column
|
||||||
:min-width="flexWidth('workprocedure_name',crud.data,'工序名称')"/>
|
prop="workprocedure_name"
|
||||||
<el-table-column prop="material_weight" label="物料单重" width="100" :formatter="crud.formatQlNum4"/>
|
label="工序名称"
|
||||||
<el-table-column prop="planproducestart_date" label="计划开始时间"
|
:min-width="flexWidth('workprocedure_name',crud.data,'工序名称')"
|
||||||
:min-width="flexWidth('planproducestart_date',crud.data,'计划开始时间')"/>
|
/>
|
||||||
<el-table-column prop="planproduceend_date" label="计划结束时间"
|
<el-table-column prop="material_weight" label="物料单重" width="100" :formatter="crud.formatQlNum4" />
|
||||||
:min-width="flexWidth('planproduceend_date',crud.data,'计划结束时间')"/>
|
<el-table-column
|
||||||
<el-table-column prop="realproducestart_date" label="实际开始时间"
|
prop="planproducestart_date"
|
||||||
:min-width="flexWidth('realproducestart_date',crud.data,'实际开始时间')"/>
|
label="计划开始时间"
|
||||||
<el-table-column prop="realproduceend_date" label="实际结束时间"
|
:min-width="flexWidth('planproducestart_date',crud.data,'计划开始时间')"
|
||||||
:min-width="flexWidth('realproduceend_date',crud.data,'实际结束时间')"/>
|
/>
|
||||||
<el-table-column prop="is_canupdate_update" label="允许修改报工数" :formatter="formatBoolean" width="200"
|
<el-table-column
|
||||||
show-overflow-tooltip/>
|
prop="planproduceend_date"
|
||||||
<el-table-column prop="is_needmove" label="是否搬运" :formatter="formatBoolean"/>
|
label="计划结束时间"
|
||||||
|
:min-width="flexWidth('planproduceend_date',crud.data,'计划结束时间')"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="realproducestart_date"
|
||||||
|
label="实际开始时间"
|
||||||
|
:min-width="flexWidth('realproducestart_date',crud.data,'实际开始时间')"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="realproduceend_date"
|
||||||
|
label="实际结束时间"
|
||||||
|
:min-width="flexWidth('realproduceend_date',crud.data,'实际结束时间')"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="is_canupdate_update"
|
||||||
|
label="允许修改报工数"
|
||||||
|
:formatter="formatBoolean"
|
||||||
|
width="200"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
<el-table-column prop="is_needmove" label="是否搬运" :formatter="formatBoolean" />
|
||||||
<el-table-column prop="shift_type_scode" label="班次类型">
|
<el-table-column prop="shift_type_scode" label="班次类型">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ dict.label.PDM_BI_SHIFTTYPE[scope.row.shift_type_scode] }}
|
{{ dict.label.PDM_BI_SHIFTTYPE[scope.row.shift_type_scode] }}
|
||||||
@@ -469,19 +490,19 @@
|
|||||||
{{ dict.label.WORKORDER_CREATE_TYPE[scope.row.create_type] }}
|
{{ dict.label.WORKORDER_CREATE_TYPE[scope.row.create_type] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="is_error" :formatter="formatBoolean" label="是否异常"/>
|
<el-table-column prop="is_error" :formatter="formatBoolean" label="是否异常" />
|
||||||
<el-table-column prop="error_info" label="异常信息" show-overflow-tooltip/>
|
<el-table-column prop="error_info" label="异常信息" show-overflow-tooltip />
|
||||||
<el-table-column prop="remark" label="备注"/>
|
<el-table-column prop="remark" label="备注" />
|
||||||
<el-table-column prop="nok_qty" label="报废总数"/>
|
<el-table-column prop="nok_qty" label="报废总数" />
|
||||||
<el-table-column prop="report_qty" label="报修总数"/>
|
<el-table-column prop="report_qty" label="报修总数" />
|
||||||
<el-table-column prop="person_real_qty" label="人员实际数量" width="100" show-overflow-tooltip/>
|
<el-table-column prop="person_real_qty" label="人员实际数量" width="100" show-overflow-tooltip />
|
||||||
<el-table-column prop="current_produce_person_name" label="操作工" show-overflow-tooltip/>
|
<el-table-column prop="current_produce_person_name" label="操作工" show-overflow-tooltip />
|
||||||
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
|
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
|
||||||
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')"/>
|
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
|
||||||
<el-table-column prop="down_name" label="下发人" :min-width="flexWidth('down_name',crud.data,'下发人')"/>
|
<el-table-column prop="down_name" label="下发人" :min-width="flexWidth('down_name',crud.data,'下发人')" />
|
||||||
<el-table-column prop="down_time" label="下发时间" :min-width="flexWidth('down_time',crud.data,'下发时间')"/>
|
<el-table-column prop="down_time" label="下发时间" :min-width="flexWidth('down_time',crud.data,'下发时间')" />
|
||||||
<el-table-column prop="confirm_name" label="完工人" :min-width="flexWidth('confirm_name',crud.data,'完工人')"/>
|
<el-table-column prop="confirm_name" label="完工人" :min-width="flexWidth('confirm_name',crud.data,'完工人')" />
|
||||||
<el-table-column prop="confirm_time" label="完工时间" :min-width="flexWidth('confirm_time',crud.data,'完工时间')"/>
|
<el-table-column prop="confirm_time" label="完工时间" :min-width="flexWidth('confirm_time',crud.data,'完工时间')" />
|
||||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<udOperation
|
<udOperation
|
||||||
@@ -492,7 +513,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
<pagination/>
|
<pagination />
|
||||||
</div>
|
</div>
|
||||||
<MaterDtl
|
<MaterDtl
|
||||||
:dialog-show.sync="materialShow"
|
:dialog-show.sync="materialShow"
|
||||||
@@ -500,11 +521,11 @@
|
|||||||
:mater-opt-code="materType"
|
:mater-opt-code="materType"
|
||||||
@setMaterValue="setMaterValue"
|
@setMaterValue="setMaterValue"
|
||||||
/>
|
/>
|
||||||
<ViewDialog ref="child3"/>
|
<ViewDialog ref="child3" />
|
||||||
<reportDialog ref="report" @AddChanged="querytable"/>
|
<reportDialog ref="report" @AddChanged="querytable" />
|
||||||
<UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="tableChanged3"/>
|
<UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="tableChanged3" />
|
||||||
<AddDialog :dialog-show.sync="addShow" @AddChanged="querytable"/>
|
<AddDialog :dialog-show.sync="addShow" @AddChanged="querytable" />
|
||||||
<ReplaceDeviceDialog ref="child4" @AddChanged="querytable"/>
|
<ReplaceDeviceDialog ref="child4" @AddChanged="querytable" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export function submits(data) {
|
|||||||
}
|
}
|
||||||
export function unSubmits(data) {
|
export function unSubmits(data) {
|
||||||
return request({
|
return request({
|
||||||
url: 'api/produceWorkorder/submits',
|
url: 'api/produceWorkorder/unSubmits',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data
|
data
|
||||||
})
|
})
|
||||||
@@ -112,7 +112,6 @@ export function reportQuery(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function reportQuery3(data) {
|
export function reportQuery3(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/produceWorkorder/reportQuery3',
|
url: '/api/produceWorkorder/reportQuery3',
|
||||||
|
|||||||
Reference in New Issue
Block a user