add:工单及工单记录
This commit is contained in:
@@ -1,14 +1,23 @@
|
||||
package org.nl.common.utils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.nl.common.publish.event.PublishEvent;
|
||||
import org.nl.config.thread.ThreadPoolExecutorUtil;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.system_manage.service.ql.IPdmQlOptionService;
|
||||
import org.nl.wms.system_manage.service.ql.dao.PdmQlOption;
|
||||
import org.nl.wms.system_manage.service.ql.dto.OptionRecordQuery;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
|
||||
@@ -20,29 +29,46 @@ public class OptionRecord {
|
||||
|
||||
private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll();
|
||||
|
||||
public static void record(OptionEnum type, Buss classname, String order, Map option){
|
||||
public static<T> void record(OptionEnum type,String status, Buss classname, String order, T option){
|
||||
IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class);
|
||||
PdmQlOption qlOption = new PdmQlOption();
|
||||
if (option !=null){
|
||||
qlOption.setOptiod_date(JSON.toJSONString(option));
|
||||
}
|
||||
qlOption.setOrderno(order);
|
||||
qlOption.setType(type.name());
|
||||
qlOption.setCreate_id(DateUtil.now());
|
||||
qlOption.setCreate_time(SecurityUtils.getCurrentUserId());
|
||||
qlOption.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
qlOption.setBussclass(classname.name());
|
||||
qlOption.setStatus(status);
|
||||
bean.save(qlOption);
|
||||
}
|
||||
public static<T> void recordAsync(OptionEnum type,String status, Buss classname, String order, T option){
|
||||
EXECUTOR.execute(()->{
|
||||
IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class);
|
||||
PdmQlOption qlOption = new PdmQlOption();
|
||||
if (option !=null){
|
||||
qlOption.setOptionDate(JSON.toJSONString(option));
|
||||
}
|
||||
qlOption.setOrderno(order);
|
||||
qlOption.setType(type.name());
|
||||
qlOption.setCreateTime(new Date());
|
||||
qlOption.setCreateId(SecurityUtils.getCurrentUserId());
|
||||
qlOption.setCreateId(SecurityUtils.getCurrentNickName());
|
||||
qlOption.setBussclass(classname.name());
|
||||
// bean.save(qlOption);
|
||||
record(type,status,classname,order,option);
|
||||
});
|
||||
}
|
||||
public static<T> List<T> getRecord(OptionRecordQuery query,final Class<T> clazz){
|
||||
IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class);
|
||||
List<PdmQlOption> list = bean.list(query.build());
|
||||
List<T> records = new ArrayList<>();
|
||||
for (PdmQlOption option : list) {
|
||||
String optiod_date = option.getOptiod_date();
|
||||
if (StringUtils.isNotEmpty(optiod_date)){
|
||||
records.add(JSONObject.parseObject(optiod_date, clazz));
|
||||
}
|
||||
}
|
||||
return records;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum OptionEnum{
|
||||
ADDOP,
|
||||
DELETEOP,
|
||||
UPDATEOP,
|
||||
ADD,
|
||||
DELETE,
|
||||
UPDATE,
|
||||
FINISH;
|
||||
}
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
|
||||
Binary file not shown.
@@ -208,12 +208,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
map.put("workorder_status", orderJson.getString("status"));
|
||||
map.put("update_id", "1");
|
||||
map.put("real_qty", orderJson.getString("real_qty"));
|
||||
map.put("current_device_code", "");
|
||||
map.put("device_code", "");
|
||||
map.put("update_name", "acs");
|
||||
map.put("update_time", DateUtil.now());
|
||||
map.put("realproduceend_date", DateUtil.now());
|
||||
WQLObject.getWQLObject("PDM_produce_workOrder").update(map, "workorder_id = '" + orderJson.getString("workorder_id") + "'");
|
||||
OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status")));
|
||||
//OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status")));
|
||||
} catch (Exception e){
|
||||
result.put("status", 400);
|
||||
result.put("message", e.getMessage());
|
||||
|
||||
@@ -55,4 +55,11 @@ public interface IMdPbClassstandardService extends IService<MdPbClassstandard> {
|
||||
* @param ids
|
||||
*/
|
||||
void deleteAll(String[] ids);
|
||||
|
||||
/**
|
||||
* c查询子集
|
||||
* @param class_id
|
||||
* @return
|
||||
*/
|
||||
List<String> getChildIdStr(String class_id);
|
||||
}
|
||||
|
||||
@@ -112,15 +112,16 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl<MdPbClassstandardM
|
||||
public List<Map> queryClassById(Map whereJson) {
|
||||
|
||||
QueryWrapper<MdPbClassstandard> query = new QueryWrapper<>();
|
||||
query.eq("1","1");
|
||||
if (ObjectUtil.isNotEmpty(whereJson.get("whereStr"))) {
|
||||
query.last((String) whereJson.get("whereStr"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) {
|
||||
query.in("class_id",whereJson.get("class_idStr"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(whereJson.get("parent_class_id"))) {
|
||||
query.eq("parent_class_id",whereJson.get("parent_class_id"));
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) {
|
||||
query.last("and class_id in "+whereJson.get("class_idStr"));
|
||||
}
|
||||
return getMaps(this.listMaps(query));
|
||||
}
|
||||
|
||||
@@ -237,4 +238,12 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl<MdPbClassstandardM
|
||||
return top_parent;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> getChildIdStr(String class_id) {
|
||||
if (StringUtils.isEmpty(class_id)){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return this.baseMapper.getChildIdStr(class_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package org.nl.wms.masterdata_manage.service.master.dao.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.wms.masterdata_manage.master.service.classstandard.dao.MdPbClassstandard;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 基础数据分类标准表 Mapper 接口
|
||||
@@ -13,4 +15,5 @@ import org.nl.wms.masterdata_manage.master.service.classstandard.dao.MdPbClassst
|
||||
*/
|
||||
public interface MdPbClassstandardMapper extends BaseMapper<MdPbClassstandard> {
|
||||
|
||||
List<String> getChildIdStr(String class_id);
|
||||
}
|
||||
|
||||
@@ -2,4 +2,7 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.masterdata_manage.service.master.dao.mapper.MdPbClassstandardMapper">
|
||||
|
||||
<select id="getChildIdStr" resultType="java.lang.String">
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -1,116 +0,0 @@
|
||||
package org.nl.wms.mps.rest;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.wms.mps.service.ProduceWorkorderService;
|
||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-03-16
|
||||
**/
|
||||
//@RestController
|
||||
@RequiredArgsConstructor
|
||||
//@Api(tags = "工单管理")
|
||||
//@RequestMapping("/api/produceWorkorder")
|
||||
@Slf4j
|
||||
public class ProduceWorkorderController {
|
||||
|
||||
private final ProduceWorkorderService produceWorkorderService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询工单管理")
|
||||
@ApiOperation("查询工单管理")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
|
||||
return new ResponseEntity<>(produceWorkorderService.queryAll(whereJson, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增工单管理")
|
||||
@ApiOperation("新增工单管理")
|
||||
//@PreAuthorize("@el.check('produceWorkorder:add')")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody ProduceWorkorderDto dto) {
|
||||
produceWorkorderService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
@PostMapping("/create")
|
||||
@Log("新增工单管理")
|
||||
@ApiOperation("新增工单管理")
|
||||
//@PreAuthorize("@el.check('produceWorkorder:add')")
|
||||
public ResponseEntity<Object> submit(@Validated @RequestBody ProduceWorkorderDto dto) {
|
||||
produceWorkorderService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改工单管理")
|
||||
@ApiOperation("修改工单管理")
|
||||
//@PreAuthorize("@el.check('produceWorkorder:edit')")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody ProduceWorkorderDto dto) {
|
||||
produceWorkorderService.update(dto);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PutMapping("/submits")
|
||||
@Log("工单下发")
|
||||
@ApiOperation("工单下发")
|
||||
public ResponseEntity<Object> submits(@RequestBody List<String> param) {
|
||||
produceWorkorderService.submits(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("删除工单管理")
|
||||
@ApiOperation("删除工单管理")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
produceWorkorderService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getNotWorkDeviceByWorkproceduceId")
|
||||
@Log("根据工序查询没有工单的设备")
|
||||
@ApiOperation("根据工序查询没有工单的设备")
|
||||
//@PreAuthorize("@el.check('WorkProcedure:add')")
|
||||
public ResponseEntity<Object> getNotWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(produceWorkorderService.getNotWorkDeviceByWorkproceduceId(param),HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/getDtl")
|
||||
@Log("获取当前工单下的工单生产记录")
|
||||
@ApiOperation("获取当前工单下的工单生产记录")
|
||||
public ResponseEntity<Object> getDtl(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(produceWorkorderService.getDtl(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/forceFinish")
|
||||
@Log("工单强制完成")
|
||||
@ApiOperation("工单强制完成")
|
||||
public ResponseEntity<Object> forceFinish(@RequestBody JSONObject param) {
|
||||
produceWorkorderService.forceFinish(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/excelImport")
|
||||
@Log("excel导入")
|
||||
@ApiOperation("excel导入")
|
||||
public ResponseEntity<Object> excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
|
||||
produceWorkorderService.excelImport(file, request);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
|
||||
package org.nl.wms.mps.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @description 服务接口
|
||||
* @author lyd
|
||||
* @date 2023-03-16
|
||||
**/
|
||||
public interface ProduceWorkorderService {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
* @param whereJson 条件
|
||||
* @param page 分页参数
|
||||
* @return Map<String,Object>
|
||||
*/
|
||||
Map<String,Object> queryAll(Map whereJson, Pageable page);
|
||||
|
||||
/**
|
||||
* 查询所有数据不分页
|
||||
* @param whereJson 条件参数
|
||||
* @return List<ProduceWorkorderDto>
|
||||
*/
|
||||
List<ProduceWorkorderDto> queryAll(Map whereJson);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
* @param workorder_id ID
|
||||
* @return ProduceWorkorder
|
||||
*/
|
||||
ProduceWorkorderDto findById(String workorder_id);
|
||||
|
||||
/**
|
||||
* 根据编码查询
|
||||
* @param code code
|
||||
* @return ProduceWorkorder
|
||||
*/
|
||||
ProduceWorkorderDto findByCode(String code);
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param dto /
|
||||
*/
|
||||
void create(ProduceWorkorderDto dto);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
* @param dto /
|
||||
*/
|
||||
void update(ProduceWorkorderDto dto);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(String[] ids);
|
||||
|
||||
/**
|
||||
* 更换设备时根据工单所属工序 查询所有工单中没有生产的设备
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取当前工单的记录
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONArray getDtl(JSONObject param);
|
||||
|
||||
/**
|
||||
* 工单下发
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
void submits(List<String> param);
|
||||
|
||||
/**
|
||||
* 强制完成
|
||||
* @param param
|
||||
*/
|
||||
void forceFinish(JSONObject param);
|
||||
|
||||
/**
|
||||
* 看板强制完成
|
||||
* @param param
|
||||
*/
|
||||
void finish(JSONObject param);
|
||||
|
||||
/**
|
||||
* excel导入
|
||||
* @param file
|
||||
* @param request
|
||||
*/
|
||||
void excelImport(MultipartFile file, HttpServletRequest request);
|
||||
}
|
||||
@@ -91,7 +91,7 @@ public class ProduceWorkorderDto implements Serializable {
|
||||
/**
|
||||
* 当前生产设备编码
|
||||
*/
|
||||
private String current_device_code;
|
||||
private String device_code;
|
||||
|
||||
/**
|
||||
* 当前生产人员id
|
||||
|
||||
@@ -1,580 +0,0 @@
|
||||
|
||||
package org.nl.wms.mps.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.OptionRecord;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.WqlUtil;
|
||||
import org.nl.wms.system_manage.service.user.ISysUserService;
|
||||
import org.nl.wms.system_manage.service.user.dao.SysUser;
|
||||
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.mps.service.ProduceWorkorderService;
|
||||
import org.nl.wms.mps.service.WorkOrderImportEnum;
|
||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @description 服务实现
|
||||
* @date 2023-03-16
|
||||
**/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class ProduceWorkorderServiceImpl implements ProduceWorkorderService {
|
||||
|
||||
private final ClassstandardService classstandardService;
|
||||
|
||||
private final WmsToAcsService wmsToAcsService;
|
||||
|
||||
private final ISysUserService userService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
|
||||
String produceorder_code = MapUtil.getStr(whereJson, "produceorder_code");
|
||||
String material = MapUtil.getStr(whereJson, "material");
|
||||
String begin_time = MapUtil.getStr(whereJson, "begin_time");
|
||||
String end_time = MapUtil.getStr(whereJson, "end_time");
|
||||
String order_status = MapUtil.getStr(whereJson, "order_status");
|
||||
String shift_type_scode = MapUtil.getStr(whereJson, "shift_type_scode");
|
||||
String parent_id = MapUtil.getStr(whereJson, "product_series");
|
||||
String sale_id = MapUtil.getStr(whereJson, "sale_id");
|
||||
String is_error = MapUtil.getStr(whereJson, "is_error");
|
||||
String product_area = MapUtil.getStr(whereJson, "product_area");
|
||||
String product_series = "";
|
||||
// 员工只能看到自己创建的工单
|
||||
String currentUsername = SecurityUtils.getCurrentUsername();
|
||||
SysUser one = userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, currentUsername));
|
||||
String currentUserId = "";
|
||||
if (!one.getIs_admin()) currentUserId = SecurityUtils.getCurrentUserId();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("flag", "1");
|
||||
//map.put("order_status", order_status);
|
||||
map.put("shift_type_scode", shift_type_scode);
|
||||
map.put("begin_time", begin_time);
|
||||
map.put("end_time", end_time);
|
||||
map.put("product_area", product_area);
|
||||
map.put("current_produce_person_id", currentUserId);
|
||||
if (StrUtil.isNotEmpty(order_status)) {
|
||||
order_status = order_status.replace("[\"", "").replace("\"]", "").replace("\"", "");
|
||||
}
|
||||
map.put("order_status", order_status);
|
||||
map.put("is_error", is_error);
|
||||
//处理状态为未完成
|
||||
if (StrUtil.isNotEmpty(order_status) && order_status.contains("-1")) {
|
||||
map.put("unFinish", "-1");
|
||||
map.put("order_status", order_status.replace("-1", ""));
|
||||
}
|
||||
if (StrUtil.isNotEmpty(parent_id)) {
|
||||
product_series = classstandardService.getChildIdStr(parent_id);
|
||||
map.put("product_series", product_series);
|
||||
}
|
||||
if (StrUtil.isNotEmpty(produceorder_code)) {
|
||||
map.put("produceorder_code", "%" + produceorder_code + "%");
|
||||
}
|
||||
if (StrUtil.isNotEmpty(material)) {
|
||||
map.put("material", "%" + material + "%");
|
||||
}
|
||||
if (StrUtil.isNotEmpty(sale_id)) {
|
||||
map.put("sale_id", "%" + sale_id + "%");
|
||||
}
|
||||
JSONObject jsonObject = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ShiftOrder.update_time desc");
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProduceWorkorderDto> queryAll(Map whereJson) {
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONArray arr = wo.query().getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProduceWorkorderDto.class);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProduceWorkorderDto findById(String workorder_id) {
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
return json.toJavaObject(ProduceWorkorderDto.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProduceWorkorderDto findByCode(String code) {
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
return json.toJavaObject(ProduceWorkorderDto.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(ProduceWorkorderDto dto) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
dto.setCurrent_produce_person_id(currentUserId);
|
||||
dto.setCreate_id(currentUserId);
|
||||
dto.setCreate_name(nickName);
|
||||
dto.setUpdate_id(currentUserId);
|
||||
dto.setUpdate_name(nickName);
|
||||
dto.setUpdate_time(DateUtil.now());
|
||||
dto.setCreate_time(DateUtil.now());
|
||||
dto.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
dto.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
dto.setCreate_type(WorkerOrderEnum.PCINTO.getCode());
|
||||
dto.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.insert(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(ProduceWorkorderDto dto) {
|
||||
ProduceWorkorderDto entity = this.findById(dto.getWorkorder_id());
|
||||
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
dto.setUpdate_time(DateUtil.now());
|
||||
dto.setUpdate_id(currentUserId);
|
||||
dto.setUpdate_name(nickName);
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.update(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteAll(String[] ids) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
for (String workorder_id : ids) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("is_delete", "1");
|
||||
param.put("update_id", currentUserId);
|
||||
param.put("update_name", nickName);
|
||||
param.put("update_time", DateUtil.now());
|
||||
wo.update(param, "workorder_id = '" + workorder_id + "'");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) {
|
||||
Map res = new HashMap();
|
||||
res.put("flag", "2");
|
||||
res.put("workprocedure_id", param.getString("workproceduce_id"));
|
||||
JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(res).process().getResultJSONArray(0);
|
||||
return resultJSONArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getDtl(JSONObject param) {
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("flag", "3");
|
||||
map.put("workorder_id", param.getString("workorder_id"));
|
||||
JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(map).process().getResultJSONArray(0);
|
||||
return resultJSONArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submits(List<String> param) {
|
||||
if (param == null || param.size()==0){
|
||||
return;
|
||||
}
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String sql = param.stream().collect(Collectors.joining("','"));
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
wo.update(MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode()
|
||||
,"update_id", currentUserId,"update_name"
|
||||
, nickName,"update_time", DateUtil.now())
|
||||
,"workorder_id in ('"+sql+"')");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forceFinish(JSONObject param) {
|
||||
this.finish(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finish(JSONObject param) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
JSONObject row = param.getJSONObject("row");
|
||||
//强制完成时修改工单状态
|
||||
String workorder_id = row.getString("workorder_id");
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
ProduceWorkorderDto workorderDto = this.findById(workorder_id);
|
||||
JSONObject produceorderMap = new JSONObject();
|
||||
produceorderMap.put("workorder_id", workorder_id);
|
||||
produceorderMap.put("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode());
|
||||
produceorderMap.put("update_id", currentUserId);
|
||||
produceorderMap.put("device_code", null);
|
||||
produceorderMap.put("update_name", nickName);
|
||||
produceorderMap.put("update_time", DateUtil.now());
|
||||
produceorderMap.put("realproduceend_date", DateUtil.now());
|
||||
wo.update(produceorderMap,"workorder_id = '"+workorder_id+"'");
|
||||
JSONObject jsonObject = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
String real_qty = jsonObject.getString("real_qty");
|
||||
if (StrUtil.isEmpty(real_qty)) {
|
||||
real_qty = "0";
|
||||
}
|
||||
//同时修改工单记录表中的期末数量及完成数量
|
||||
WQLObject wo_record = WQLObject.getWQLObject("PDM_produce_workOrderRecord");
|
||||
JSONObject result = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end = '' or operatetime_end is null) ").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
// todo: 数量不明确
|
||||
result.put("person_finish_qty", real_qty);
|
||||
result.put("person_report_qty", real_qty);
|
||||
result.put("operatetime_end", DateUtil.now());
|
||||
wo_record.update(result);
|
||||
}
|
||||
//工单开工以后需要向acs强制完成 wms向acs发送请求 工单强制完成
|
||||
// TODO: 业务不明
|
||||
OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()));
|
||||
String order_status = workorderDto.getWorkorder_status();
|
||||
if (!order_status.equals("1") && !order_status.equals("2")) {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("workorder_id", workorder_id);
|
||||
map.put("type", WorkerOrderEnum.FORCE_COMPLETE.getCode());
|
||||
array.add(map);
|
||||
wmsToAcsService.orderStatusUpdate(array);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||
// todo: 根据需求修改
|
||||
if (file.isEmpty()) {
|
||||
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
||||
}
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
// 1.获取上传文件输入流
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
inputStream = file.getInputStream();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//工单表
|
||||
WQLObject wo_order = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
//物料表
|
||||
WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase");
|
||||
//设备表
|
||||
WQLObject wo_device = WQLObject.getWQLObject("pdm_bi_device");
|
||||
//工序表
|
||||
WQLObject wo_workprocedure = WQLObject.getWQLObject("pdm_bi_workprocedure");
|
||||
//人员表
|
||||
//WQLObject wo_user = WQLObject.getWQLObject("sys_user");
|
||||
|
||||
// 调用用 hutool 方法读取数据 调用第一个sheet白班数据
|
||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
||||
// 从第1行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列
|
||||
List<List<Object>> read = excelReader.read(0, excelReader.getRowCount());
|
||||
String produce_date = "";
|
||||
// 循环获取的数据
|
||||
row:
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
List<Object> list = read.get(i);
|
||||
if (ObjectUtil.isEmpty(list)) {
|
||||
continue;
|
||||
}
|
||||
//获取每列
|
||||
JSONObject param = new JSONObject();
|
||||
//按照列获取
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
// param.put("macoperate_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_status", WorkerOrderEnum.CREATE.getCode());
|
||||
param.put("shift_type_scode", WorkerOrderEnum.DAYSHIFT.getCode()); // 默认白班
|
||||
String is_error = "0";
|
||||
String error_message = "";
|
||||
//循环每一行
|
||||
col:
|
||||
for (int j = 0; j < list.size(); j++) {
|
||||
|
||||
String col = String.valueOf(list.get(j));
|
||||
//如果是第一行 为生产日期
|
||||
if (i == 0 && j == 0) {
|
||||
produce_date = col.split(":")[col.split(":").length - 1];
|
||||
continue row;
|
||||
}
|
||||
//如果第一列包含规格二字 则为表头 结束内循环列
|
||||
if (j == 0 && col.contains("规格名称")) {
|
||||
continue row;
|
||||
}
|
||||
if (j == 0) {
|
||||
//物料
|
||||
if (StrUtil.isEmpty(col)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格为空,";
|
||||
}
|
||||
JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_material)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格对应物料信息不存在,";
|
||||
}else {
|
||||
param.put("material_id", json_material.getString("material_id"));
|
||||
}
|
||||
}
|
||||
if (j == 2) {
|
||||
if (StrUtil.isEmpty(col)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "工序名称为空,";
|
||||
}
|
||||
WorkOrderImportEnum idByName = WorkOrderImportEnum.getIdByName(col);
|
||||
if (ObjectUtil.isEmpty(idByName)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "工序名称是否正确,";
|
||||
}else {
|
||||
param.put("workprocedure_id", idByName.getId());
|
||||
}
|
||||
}
|
||||
if (j == 4) {
|
||||
//单重
|
||||
param.put("material_weight", col);
|
||||
}
|
||||
if (j == 6) {
|
||||
if (StrUtil.isEmpty(col)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "工单计划数量为空,";
|
||||
}else {
|
||||
param.put("plan_qty", col);
|
||||
}
|
||||
}
|
||||
if (j == 10) {
|
||||
String workprocedure_id = param.getString("workprocedure_id");
|
||||
JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_device)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备编码不存在,";
|
||||
}
|
||||
if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备与所属工序不匹配,";
|
||||
}else {
|
||||
param.put("device_id", json_device.getString("device_id"));
|
||||
}
|
||||
}
|
||||
if (j == 11) {
|
||||
SysUser jsonUser = userService.getOne(new QueryWrapper<SysUser>().eq("username", col));
|
||||
if (ObjectUtil.isEmpty(jsonUser)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "生产人员编码不存在!";
|
||||
}else {
|
||||
param.put("current_produce_person_id", jsonUser.getUser_id());
|
||||
}
|
||||
}
|
||||
if (j == 12) {
|
||||
//允许修改报工数量
|
||||
String is_canupdate = "0";
|
||||
if (col.equals("是")) {
|
||||
is_canupdate = "1";
|
||||
}
|
||||
param.put("is_canupdate_update", is_canupdate);
|
||||
}
|
||||
if (j == 13) {
|
||||
//是否agv搬运
|
||||
String needmoce = "0";
|
||||
if (col.equals("是")) {
|
||||
needmoce = "1";
|
||||
}
|
||||
param.put("is_needmove", needmoce);
|
||||
}
|
||||
}
|
||||
param.put("is_error", is_error);
|
||||
param.put("error_info", error_message);
|
||||
param.put("create_type", WorkerOrderEnum.EXCELINTO.getCode());
|
||||
param.put("planproducestart_date", produce_date + "07:30:00");
|
||||
param.put("planproduceend_date", produce_date + "18:30:00");
|
||||
param.put("create_id", currentUserId);
|
||||
param.put("create_name", nickName);
|
||||
param.put("create_time", DateUtil.now());
|
||||
wo_order.insert(param);
|
||||
}
|
||||
|
||||
// 1.获取上传文件输入流
|
||||
inputStream = null;
|
||||
try {
|
||||
inputStream = file.getInputStream();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//读取夜班工单数据
|
||||
excelReader = ExcelUtil.getReader(inputStream, 1);
|
||||
read = excelReader.read(0, excelReader.getRowCount());
|
||||
String is_error = "0";
|
||||
String error_message = "";
|
||||
// 循环获取的数据
|
||||
row:
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
List<Object> list = read.get(i);
|
||||
//获取每列
|
||||
JSONObject param = new JSONObject();
|
||||
//按照列获取
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
// param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
param.put("workorder_status", WorkerOrderEnum.CREATE.getCode());
|
||||
// param.put("produce_date", produce_date);
|
||||
param.put("shift_type_scode", WorkerOrderEnum.NIGHTSHIFT.getCode()); // 夜班
|
||||
//循环每一行
|
||||
col:
|
||||
for (int j = 0; j < list.size(); j++) {
|
||||
|
||||
String col = String.valueOf(list.get(j));
|
||||
//如果是第一行 为生产日期
|
||||
if (i == 0 && j == 0) {
|
||||
produce_date = col.split(":")[col.split(":").length - 1];
|
||||
continue row;
|
||||
}
|
||||
//如果第一列包含规格二字 则为表头 结束内循环列
|
||||
if (j == 0 && col.contains("规格名称")) {
|
||||
continue row;
|
||||
}
|
||||
if (j == 0) {
|
||||
//物料
|
||||
if (StrUtil.isEmpty(col)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格为空,";
|
||||
}
|
||||
JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_material)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格对应物料信息不存在,";
|
||||
}else {
|
||||
param.put("material_id", json_material.getString("material_id"));
|
||||
}
|
||||
}
|
||||
if (j == 2) {
|
||||
if (StrUtil.isEmpty(col)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "工序名称为空,";
|
||||
}
|
||||
WorkOrderImportEnum idByName = WorkOrderImportEnum.getIdByName(col);
|
||||
if (ObjectUtil.isEmpty(idByName)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "工序名称是否正确,";
|
||||
}else {
|
||||
param.put("workprocedure_id", idByName.getId());
|
||||
}
|
||||
}
|
||||
if (j == 4) {
|
||||
//单重
|
||||
param.put("material_weight", col);
|
||||
}
|
||||
if (j == 6) {
|
||||
if (StrUtil.isEmpty(col)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "工单计划数量为空,";
|
||||
}else {
|
||||
param.put("plan_qty", col);
|
||||
}
|
||||
}
|
||||
// if (j == 10) {
|
||||
// //物料
|
||||
// JSONObject json_material = wo_material.query("is_delete = '0' and material_code = '" + col + "'").uniqueResult(0);
|
||||
// if (ObjectUtil.isEmpty(json_material)) {
|
||||
// throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在");
|
||||
// }
|
||||
// param.put("material_id", json_material.getString("material_id"));
|
||||
// }
|
||||
if (j == 10) {
|
||||
String workprocedure_id = param.getString("workprocedure_id");
|
||||
JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_device)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备编码不存在,";
|
||||
}
|
||||
if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备与所属工序不匹配,";
|
||||
}else {
|
||||
param.put("device_id", json_device.getString("device_id"));
|
||||
}
|
||||
}
|
||||
if (j == 11) {
|
||||
SysUser jsonUser = userService.getOne(new QueryWrapper<SysUser>().eq("username", col));
|
||||
if (ObjectUtil.isEmpty(jsonUser)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "生产人员编码不存在!";
|
||||
}else {
|
||||
param.put("current_produce_person_id", jsonUser.getUser_id());
|
||||
}
|
||||
}
|
||||
if (j == 12) {
|
||||
//允许修改报工数量
|
||||
String is_canupdate = "0";
|
||||
if (col.equals("是")) {
|
||||
is_canupdate = "1";
|
||||
}
|
||||
param.put("is_canupdate_update", is_canupdate);
|
||||
}
|
||||
if (j == 13) {
|
||||
//是否agv搬运
|
||||
String needmoce = "0";
|
||||
if (col.equals("是")) {
|
||||
needmoce = "1";
|
||||
}
|
||||
param.put("is_needmove", needmoce);
|
||||
}
|
||||
}
|
||||
param.put("is_error", is_error);
|
||||
param.put("error_info", error_message);
|
||||
param.put("create_type", WorkerOrderEnum.EXCELINTO.getCode());
|
||||
param.put("planproducestart_date", produce_date + "18:30:00");
|
||||
DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(produce_date), 1);
|
||||
param.put("planproduceend_date", DateUtil.format(dateTime,"yyyy-MM-dd") + " 07:30:00");
|
||||
param.put("create_id", currentUserId);
|
||||
param.put("create_name", nickName);
|
||||
param.put("create_time", DateUtil.now());
|
||||
wo_order.insert(param);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -327,7 +327,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
//获取前台传入的开工的工单信息
|
||||
String workorder_id = param.getString("workorder_id");
|
||||
//1-创建、2-下发、3-生产中、4-暂停、5-完成
|
||||
JSONObject result = WQLObject.getWQLObject("pdm_produce_workorder").query("current_device_code = '" + param.getString("device_code") + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0);
|
||||
JSONObject result = WQLObject.getWQLObject("pdm_produce_workorder").query("device_code = '" + param.getString("device_code") + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0);
|
||||
//判断该工单状态
|
||||
if(ObjectUtil.isNotEmpty(result)) {
|
||||
throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!");
|
||||
@@ -339,7 +339,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
WQLObject.getWQLObject("pdm_produce_workorder").update(MapOf.of("workorder_id", workorder_id, "workorder_status", WorkerOrderEnum.SEND.getCode(), "update_id", SecurityUtils.getCurrentUserId(), "update_name", SecurityUtils.getCurrentNickName(), "update_time", DateUtil.now()));
|
||||
Map<String,Object> resp = wmsToAcsService.order(array);
|
||||
//TODO:记录表记录操作
|
||||
OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode()));
|
||||
|
||||
return RestBusinessTemplate.execute(() -> resp);
|
||||
}
|
||||
|
||||
@@ -348,7 +348,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
JSONObject workOrder = WQLObject.getWQLObject("pdm_produce_workorder").query(" workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
JSONObject form = new JSONObject();
|
||||
JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + workOrder.getString("material_id") + "'").uniqueResult(0);
|
||||
JSONObject device_code = WQLObject.getWQLObject("pdm_bi_device").query("device_code = '" +workOrder.getString("current_device_code")+ "'").uniqueResult(0);
|
||||
JSONObject device_code = WQLObject.getWQLObject("pdm_bi_device").query("device_code = '" +workOrder.getString("device_code")+ "'").uniqueResult(0);
|
||||
form.put("workorder_id",workOrder.get("workorder_id"));
|
||||
form.put("workorder_code",workOrder.get("workorder_code"));
|
||||
form.put("qty", workOrder.getString("plan_qty"));
|
||||
@@ -357,7 +357,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
form.put("material_name",material.get("material_name"));
|
||||
form.put("material_code",material.get("material_code"));
|
||||
form.put("material_spec",material.get("material_spec"));
|
||||
form.put("device_code",workOrder.getString("current_device_code"));
|
||||
form.put("device_code",workOrder.getString("device_code"));
|
||||
form.put("is_needmove",workOrder.getString("is_needmove"));
|
||||
return form;
|
||||
}
|
||||
@@ -404,7 +404,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("produceorder_id", workorder_id);
|
||||
map.put("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode());
|
||||
map.put("current_device_code", null);
|
||||
map.put("device_code", null);
|
||||
map.put("update_id", currentUserId);
|
||||
map.put("update_name", nickName);
|
||||
map.put("update_time", DateUtil.now());
|
||||
@@ -751,10 +751,10 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
|
||||
@Override
|
||||
public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) {
|
||||
final String workproceduce_id = param.getString("workproceduce_id");
|
||||
final String workprocedure_id = param.getString("workprocedure_id");
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("flag", "6");
|
||||
map.put("workproceduce_id", workproceduce_id);
|
||||
map.put("workprocedure_id", workprocedure_id);
|
||||
JSONArray devices = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if(ObjectUtil.isNotEmpty(devices)) {
|
||||
@@ -775,7 +775,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{
|
||||
param.put("device_ids", "('-1')");
|
||||
}
|
||||
param.put("flag", "7");
|
||||
param.put("workprocedure_id", workproceduce_id);
|
||||
param.put("workprocedure_id", workprocedure_id);
|
||||
JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(param).process().getResultJSONArray(0);
|
||||
return resultJSONArray;
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
OPTION 输入.workprocedure_id <> ""
|
||||
device.workprocedure_id = 输入.workprocedure_id
|
||||
and device.device_code not in (
|
||||
select o.current_device_code as device_code
|
||||
select o.device_code as device_code
|
||||
from PDM_produce_workOrder o
|
||||
where o.workorder_status <> '5' and o.is_delete = '0'
|
||||
)
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
workorder.workorder_status order_status,
|
||||
workorder.workorder_id,
|
||||
workorder.workorder_code,
|
||||
workorder.current_device_code device_code,
|
||||
workorder.device_code device_code,
|
||||
workorder.material_id,
|
||||
workorder.workprocedure_id,
|
||||
workorder.plan_qty,
|
||||
@@ -108,7 +108,7 @@
|
||||
WHERE
|
||||
workorder.is_delete = '0'
|
||||
OPTION 输入.device_code <> ""
|
||||
(workorder.current_device_code like CONCAT ('%', 输入.device_code, '%'))
|
||||
(workorder.device_code like CONCAT ('%', 输入.device_code, '%'))
|
||||
ENDOPTION
|
||||
OPTION 输入.key_value <> ""
|
||||
(
|
||||
@@ -130,15 +130,15 @@
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
current_device_code deviceCode,
|
||||
count( current_device_code ) job_count
|
||||
device_code deviceCode,
|
||||
count( device_code ) job_count
|
||||
FROM
|
||||
pdm_produce_workorder
|
||||
WHERE
|
||||
is_delete = 0
|
||||
AND current_device_code != ''
|
||||
AND device_code != ''
|
||||
GROUP BY
|
||||
current_device_code
|
||||
device_code
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package org.nl.wms.product_manage.controller.workorder;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -10,13 +11,12 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.mps.service.ProduceWorkorderService;
|
||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -24,8 +24,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -41,7 +42,7 @@ import java.util.Map;
|
||||
@RequestMapping("/api/produceWorkorder")
|
||||
@Slf4j
|
||||
public class PdmProduceWorkorderController {
|
||||
private final ProduceWorkorderService produceWorkorderService;
|
||||
|
||||
private final IPdmProduceWorkorderService iPdmProduceWorkorderService;
|
||||
@Autowired
|
||||
private IPdmBiDeviceService deviceService;
|
||||
@@ -49,41 +50,38 @@ public class PdmProduceWorkorderController {
|
||||
@GetMapping
|
||||
@Log("查询工单管理")
|
||||
@ApiOperation("查询工单管理")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(iPdmProduceWorkorderService.queryAll(whereJson, page), HttpStatus.OK);
|
||||
public ResponseEntity<Object> query(WorkorderQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(iPdmProduceWorkorderService.queryAll(query, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增工单管理")
|
||||
@ApiOperation("新增工单管理")
|
||||
//@PreAuthorize("@el.check('produceWorkorder:add')")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody ProduceWorkorderDto dto) {
|
||||
produceWorkorderService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
@PostMapping("/create")
|
||||
@Log("新增工单管理")
|
||||
@ApiOperation("新增工单管理")
|
||||
//@PreAuthorize("@el.check('produceWorkorder:add')")
|
||||
public ResponseEntity<Object> submit(@Validated @RequestBody ProduceWorkorderDto dto) {
|
||||
produceWorkorderService.create(dto);
|
||||
public ResponseEntity<Object> submit(@Validated @RequestBody JSONObject dto) {
|
||||
iPdmProduceWorkorderService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改工单管理")
|
||||
@ApiOperation("修改工单管理")
|
||||
//@PreAuthorize("@el.check('produceWorkorder:edit')")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody ProduceWorkorderDto dto) {
|
||||
produceWorkorderService.update(dto);
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) {
|
||||
iPdmProduceWorkorderService.updateForm(dto);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PutMapping("/submits")
|
||||
@PostMapping("/submits")
|
||||
@Log("工单下发")
|
||||
@ApiOperation("工单下发")
|
||||
public ResponseEntity<Object> submits(@RequestBody List<String> param) {
|
||||
produceWorkorderService.submits(param);
|
||||
iPdmProduceWorkorderService.down(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/unSubmits")
|
||||
@Log("工单取消下发")
|
||||
@ApiOperation("工单取消下发")
|
||||
public ResponseEntity<Object> unSubmits(@RequestBody List<String> param) {
|
||||
iPdmProduceWorkorderService.down(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -91,33 +89,29 @@ public class PdmProduceWorkorderController {
|
||||
@ApiOperation("删除工单管理")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
produceWorkorderService.deleteAll(ids);
|
||||
if (ids != null && ids.length > 0){
|
||||
iPdmProduceWorkorderService.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("is_delete",true)
|
||||
.set("update_id", SecurityUtils.getCurrentUserId())
|
||||
.set("update_name",SecurityUtils.getCurrentNickName())
|
||||
.set("update_time",new Date())
|
||||
.in("workorder_id", Arrays.asList(ids)));
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getNotWorkDeviceByWorkproceduceId")
|
||||
@Log("根据工序查询没有工单的设备")
|
||||
@ApiOperation("根据工序查询没有工单的设备")
|
||||
//@PreAuthorize("@el.check('WorkProcedure:add')")
|
||||
public ResponseEntity<Object> getNotWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) {
|
||||
List<PdmBiDevice> list = deviceService.list(new QueryWrapper<PdmBiDevice>()
|
||||
.eq("workprocedure_id", param.getString("workprocedure_id"))
|
||||
.eq("is_delete", false));
|
||||
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/getDtl")
|
||||
@Log("获取当前工单下的工单生产记录")
|
||||
@ApiOperation("获取当前工单下的工单生产记录")
|
||||
public ResponseEntity<Object> getDtl(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(produceWorkorderService.getDtl(param), HttpStatus.OK);
|
||||
return new ResponseEntity<>(TableDataInfo.build(deviceService.getNotWorkDeviceByWorkproceduceId(param)),HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/forceFinish")
|
||||
@Log("工单强制完成")
|
||||
@ApiOperation("工单强制完成")
|
||||
public ResponseEntity<Object> forceFinish(@RequestBody JSONObject param) {
|
||||
produceWorkorderService.forceFinish(param);
|
||||
iPdmProduceWorkorderService.finish(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -125,8 +119,32 @@ public class PdmProduceWorkorderController {
|
||||
@Log("excel导入")
|
||||
@ApiOperation("excel导入")
|
||||
public ResponseEntity<Object> excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
|
||||
produceWorkorderService.excelImport(file, request);
|
||||
iPdmProduceWorkorderService.excelImport(file,request);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getDtl")
|
||||
@Log("获取当前工单下的工单生产记录")
|
||||
@ApiOperation("获取当前工单下的工单生产记录")
|
||||
public ResponseEntity<Object> getDtl(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.getDtl(param)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/report")
|
||||
@Log("报工")
|
||||
@ApiOperation("报工")
|
||||
public ResponseEntity<Object> report(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(iPdmProduceWorkorderService.report(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/reportApprove")
|
||||
@Log("报工审核")
|
||||
@ApiOperation("报工审核")
|
||||
public ResponseEntity<Object> reportApprove(@RequestBody JSONArray param) {
|
||||
iPdmProduceWorkorderService.reportApprove(param);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,8 +1,12 @@
|
||||
package org.nl.wms.product_manage.service.device;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产设备基础信息表 服务类
|
||||
@@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
*/
|
||||
public interface IPdmBiDeviceService extends IService<PdmBiDevice> {
|
||||
|
||||
List<Map> getNotWorkDeviceByWorkproceduceId(JSONObject param);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package org.nl.wms.product_manage.service.device.dao.mapper;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产设备基础信息表 Mapper 接口
|
||||
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*/
|
||||
public interface PdmBiDeviceMapper extends BaseMapper<PdmBiDevice> {
|
||||
|
||||
List<Map> getNotWorkDevice(Map<String,Object> query);
|
||||
}
|
||||
|
||||
@@ -2,4 +2,20 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.product_manage.service.device.dao.mapper.PdmBiDeviceMapper">
|
||||
|
||||
<select id="getNotWorkDevice" resultType="java.util.Map">
|
||||
|
||||
SELECT
|
||||
device.*
|
||||
FROM
|
||||
pdm_bi_device device
|
||||
WHERE
|
||||
device.is_delete = '0'
|
||||
<if test="workprocedure_id != null and workprocedure_id != ''">
|
||||
device.workprocedure_id = #{workprocedure_id}
|
||||
</if>
|
||||
and device.device_code not in (
|
||||
select o.device_code as device_code
|
||||
from PDM_produce_workOrder o
|
||||
where '5' > o.workorder_status and o.is_delete = '0' )
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package org.nl.wms.product_manage.service.device.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.device.dao.mapper.PdmBiDeviceMapper;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 生产设备基础信息表 服务实现类
|
||||
@@ -17,4 +21,8 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class PdmBiDeviceServiceImpl extends ServiceImpl<PdmBiDeviceMapper, PdmBiDevice> implements IPdmBiDeviceService {
|
||||
|
||||
@Override
|
||||
public List<Map> getNotWorkDeviceByWorkproceduceId(JSONObject param) {
|
||||
return this.baseMapper.getNotWorkDevice(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,13 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.api.CommonResult;
|
||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
||||
import org.nl.common.utils.OptionRecord;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -29,74 +30,51 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
|
||||
* @param page 分页参数
|
||||
* @return Map<String,Object>
|
||||
*/
|
||||
Object queryAll(Map whereJson, PageQuery page);
|
||||
Object queryAll(WorkorderQuery whereJson, PageQuery page);
|
||||
|
||||
/**
|
||||
* 查询所有数据不分页
|
||||
* @param whereJson 条件参数
|
||||
* @return List<ProduceWorkorderDto>
|
||||
*/
|
||||
List<ProduceWorkorderDto> queryAll(Map whereJson);
|
||||
Object queryAll(Map whereJson);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
* @param workorder_id ID
|
||||
* @return ProduceWorkorder
|
||||
*/
|
||||
ProduceWorkorderDto findById(String workorder_id);
|
||||
|
||||
/**
|
||||
* 根据编码查询
|
||||
* @param code code
|
||||
* @return ProduceWorkorder
|
||||
*/
|
||||
ProduceWorkorderDto findByCode(String code);
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
* @param dto /
|
||||
*/
|
||||
void create(ProduceWorkorderDto dto);
|
||||
void create(JSONObject dto);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param dto /
|
||||
*/
|
||||
void update(ProduceWorkorderDto dto);
|
||||
void updateForm(JSONObject dto);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(String[] ids);
|
||||
|
||||
/**
|
||||
* 更换设备时根据工单所属工序 查询所有工单中没有生产的设备
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param);
|
||||
|
||||
/**
|
||||
* 获取当前工单的记录
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
JSONArray getDtl(JSONObject param);
|
||||
List<Map> getDtl(JSONObject param);
|
||||
|
||||
/**
|
||||
* 工单下发
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
void submits(List<String> param);
|
||||
|
||||
void down(List<String> param);
|
||||
/**
|
||||
* 强制完成
|
||||
* 工单取消下发
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
void forceFinish(JSONObject param);
|
||||
void unDown(List<String> param);
|
||||
|
||||
/**
|
||||
* 看板强制完成
|
||||
@@ -116,7 +94,20 @@ public interface IPdmProduceWorkorderService extends IService<PdmProduceWorkorde
|
||||
* 开工操作
|
||||
*
|
||||
* @param param 请求参数
|
||||
* @return
|
||||
*/
|
||||
CommonResult<Map<String,Object>> openStart(JSONObject param);
|
||||
Object openStart(JSONObject param);
|
||||
|
||||
/**
|
||||
* 开工操作
|
||||
*包含3个字段
|
||||
* @param param 请求参数
|
||||
* @return
|
||||
*/
|
||||
Object report(JSONObject param);
|
||||
|
||||
void reportApprove(JSONArray param);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
*/
|
||||
private String workprocedure_id;
|
||||
|
||||
|
||||
/**
|
||||
* 生产区域
|
||||
*/
|
||||
@@ -52,27 +53,27 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
private Integer plan_qty;
|
||||
private BigDecimal plan_qty;
|
||||
|
||||
/**
|
||||
* 实际数量
|
||||
*/
|
||||
private Integer real_qty;
|
||||
private BigDecimal real_qty;
|
||||
|
||||
/**
|
||||
* 人员实际数量
|
||||
*/
|
||||
private Integer person_real_qty;
|
||||
private BigDecimal person_real_qty;
|
||||
|
||||
/**
|
||||
* 电气实际数量
|
||||
*/
|
||||
private String dq_real_qty;
|
||||
private BigDecimal dq_real_qty;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
*/
|
||||
private Long material_id;
|
||||
private String material_id;
|
||||
|
||||
/**
|
||||
* 物料单重
|
||||
@@ -102,17 +103,17 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
/**
|
||||
* 当前生产设备编码
|
||||
*/
|
||||
private String current_device_code;
|
||||
private String device_code;
|
||||
|
||||
/**
|
||||
* 当前生产人员id
|
||||
*/
|
||||
private Long current_produce_person_id;
|
||||
private String current_produce_person_id;
|
||||
|
||||
/**
|
||||
* 操作工是否允许修改报工数量
|
||||
*/
|
||||
private String is_canupdate_update;
|
||||
private Boolean is_canupdate_update;
|
||||
|
||||
/**
|
||||
* 物料系列
|
||||
@@ -127,12 +128,12 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
/**
|
||||
* 是否搬运
|
||||
*/
|
||||
private String is_needmove;
|
||||
private Boolean is_needmove;
|
||||
|
||||
/**
|
||||
* 销售单标识
|
||||
*/
|
||||
private Long sale_id;
|
||||
private String sale_id;
|
||||
|
||||
/**
|
||||
* 创建类型
|
||||
@@ -142,7 +143,7 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
/**
|
||||
* 工单是否异常
|
||||
*/
|
||||
private String is_error;
|
||||
private Boolean is_error;
|
||||
|
||||
/**
|
||||
* 异常信息
|
||||
@@ -157,7 +158,7 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long create_id;
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
@@ -169,30 +170,56 @@ public class PdmProduceWorkorder implements Serializable {
|
||||
*/
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long update_id;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private String update_name;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private String update_time;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private String is_delete;
|
||||
private Boolean is_delete;
|
||||
|
||||
/**
|
||||
* 报工数量
|
||||
*/
|
||||
private Integer report_qty;
|
||||
private BigDecimal report_qty;
|
||||
|
||||
// 工单类型 10手工工单。20排产工单
|
||||
private String order_type_scode;
|
||||
|
||||
//报废总;报修总
|
||||
private BigDecimal nok_qty;
|
||||
private BigDecimal repare_qty;
|
||||
|
||||
|
||||
/**
|
||||
* 下发人
|
||||
*/
|
||||
private String down_id;
|
||||
|
||||
/**
|
||||
* 下发人
|
||||
*/
|
||||
private String down_name;
|
||||
|
||||
/**
|
||||
* 下发时间
|
||||
*/
|
||||
private String down_time;
|
||||
|
||||
|
||||
/**
|
||||
* 完工人
|
||||
*/
|
||||
private String confirm_id;
|
||||
|
||||
/**
|
||||
* 完工人
|
||||
*/
|
||||
private String confirm_name;
|
||||
|
||||
/**
|
||||
* 完工时间
|
||||
*/
|
||||
private String confirm_time;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -18,5 +18,11 @@ import java.util.Map;
|
||||
* @since 2023-04-26
|
||||
*/
|
||||
public interface PdmProduceWorkorderMapper extends BaseMapper<PdmProduceWorkorder> {
|
||||
|
||||
List<Map> pageQuery(@Param("query") WorkorderQuery query);
|
||||
|
||||
List<Map> getworkOrderDtl(String workorder_id);
|
||||
|
||||
int batchUpdateByParam(@Param("event") List<Map> event, @Param("workorder_id")String workorder_id);
|
||||
|
||||
}
|
||||
|
||||
@@ -53,4 +53,37 @@
|
||||
)
|
||||
</if>
|
||||
</select>
|
||||
<select id="getworkOrderDtl" resultType="java.util.Map">
|
||||
SELECT
|
||||
record.*,
|
||||
device.device_code,
|
||||
device.device_name
|
||||
FROM
|
||||
PDM_produce_workOrderRecord record
|
||||
LEFT JOIN PDM_BI_Device device ON record.device_code = device.device_code
|
||||
<where>
|
||||
<if test="workorder_id != null and workorder_id != ''">
|
||||
record.workorder_id = #{workorder_id}
|
||||
</if>
|
||||
</where>
|
||||
order by record.seq_number
|
||||
</select>
|
||||
|
||||
<update id="batchUpdateByParam">
|
||||
update PDM_produce_workOrder set
|
||||
<foreach collection="event" item="item" separator=",">
|
||||
${item.field} = ${item.field}
|
||||
<choose>
|
||||
<when test="item.add == true">
|
||||
+
|
||||
</when>
|
||||
<otherwise>
|
||||
-
|
||||
</otherwise>
|
||||
</choose>
|
||||
#{item.value,jdbcType=DECIMAL}
|
||||
</foreach>
|
||||
where workorder_id = #{workorder_id}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -7,6 +7,9 @@ import org.nl.common.domain.query.QParam;
|
||||
import org.nl.common.enums.QueryTEnum;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/4/26 11:05
|
||||
@@ -24,5 +27,8 @@ public class WorkorderQuery extends BaseQuery<PdmProduceWorkorder> {
|
||||
private String is_error;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void paramMapping() {
|
||||
super.doP.put("product_series", QParam.builder().k(new String[]{"dept_id"}).type(QueryTEnum.IN).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,42 +2,40 @@ 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.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.poi.excel.ExcelReader;
|
||||
import cn.hutool.poi.excel.ExcelUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.jsonwebtoken.lang.Assert;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.OptionRecord;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.api.CommonResult;
|
||||
import org.nl.common.utils.*;
|
||||
import org.nl.common.utils.api.RestBusinessTemplate;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService;
|
||||
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.mps.service.WorkOrderImportEnum;
|
||||
import org.nl.wms.mps.service.dto.ProduceWorkorderDto;
|
||||
import org.nl.wms.product_manage.ReportRecordStatus;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderrecordService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.WorkorderRecord;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderMapper;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||
import org.nl.wms.system_manage.service.user.ISysUserService;
|
||||
@@ -46,14 +44,13 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -65,9 +62,9 @@ import java.util.stream.Collectors;
|
||||
* @since 2023-04-26
|
||||
*/
|
||||
@Service
|
||||
public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper, PdmProduceWorkorder> implements IPdmProduceWorkorderService {
|
||||
public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkorderMapper, PdmProduceWorkorder> implements IPdmProduceWorkorderService {
|
||||
@Autowired
|
||||
private ClassstandardService classstandardService;
|
||||
private IMdPbClassstandardService classstandardService;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
@@ -78,12 +75,15 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
private IPdmBiDeviceService deviceService;
|
||||
@Resource
|
||||
private PdmProduceWorkorderMapper pdmProduceWorkorderMapper;
|
||||
@Resource
|
||||
private IPdmProduceWorkorderrecordService reportRecordService;
|
||||
|
||||
@Override
|
||||
public Object queryAll(Map req, PageQuery pageQuery) {
|
||||
WorkorderQuery query = JSONObject.parseObject(JSON.toJSONString(req), WorkorderQuery.class);
|
||||
public Object queryAll(WorkorderQuery query, PageQuery pageQuery) {
|
||||
if (!StringUtils.isEmpty(query.getProduct_series())){
|
||||
query.setProduct_series( classstandardService.getChildIdStr(query.getProduct_series()));
|
||||
String collect = classstandardService.getChildIdStr(query.getProduct_series())
|
||||
.stream().collect(Collectors.joining("','"));
|
||||
query.setProduct_series("('"+collect+"')");
|
||||
}
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());
|
||||
List result = pdmProduceWorkorderMapper.pageQuery(query);
|
||||
@@ -93,171 +93,122 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProduceWorkorderDto> queryAll(Map whereJson) {
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONArray arr = wo.query().getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProduceWorkorderDto.class);
|
||||
return null;
|
||||
public Object queryAll(Map whereJson) {
|
||||
return this.list();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void create(JSONObject form) {
|
||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||
entity.setWorkorder_id(IdUtil.getStringId());
|
||||
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setCreate_time(DateUtil.now());
|
||||
entity.setCreate_type(WorkerOrderEnum.PCINTO.getCode());
|
||||
entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
this.save(entity);
|
||||
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,entity.getWorkorder_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProduceWorkorderDto findById(String workorder_id) {
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
return json.toJavaObject(ProduceWorkorderDto.class);
|
||||
public void updateForm(JSONObject form) {
|
||||
Assert.notNull(form,"参数不能为空");
|
||||
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", form.getString("workorder_id")));
|
||||
if (one == null) {
|
||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
}
|
||||
return null;
|
||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||
entity.setDown_time(DateUtil.now());
|
||||
entity.setDown_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setDown_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(entity);
|
||||
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,entity.getWorkorder_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProduceWorkorderDto findByCode(String code) {
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
return json.toJavaObject(ProduceWorkorderDto.class);
|
||||
}
|
||||
return null;
|
||||
public List<Map> getDtl(JSONObject param) {
|
||||
return this.baseMapper.getworkOrderDtl(param.getString("workorder_id"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(ProduceWorkorderDto dto) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||
dto.setCurrent_produce_person_id(currentUserId);
|
||||
dto.setCreate_id(currentUserId);
|
||||
dto.setCreate_name(nickName);
|
||||
dto.setUpdate_id(currentUserId);
|
||||
dto.setUpdate_name(nickName);
|
||||
dto.setUpdate_time(DateUtil.now());
|
||||
dto.setCreate_time(DateUtil.now());
|
||||
dto.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
dto.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
dto.setCreate_type(WorkerOrderEnum.PCINTO.getCode());
|
||||
dto.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.insert(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(ProduceWorkorderDto dto) {
|
||||
ProduceWorkorderDto entity = this.findById(dto.getWorkorder_id());
|
||||
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
dto.setUpdate_time(DateUtil.now());
|
||||
dto.setUpdate_id(currentUserId);
|
||||
dto.setUpdate_name(nickName);
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.update(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteAll(String[] ids) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder");
|
||||
for (String workorder_id : ids) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("is_delete", "1");
|
||||
param.put("update_id", currentUserId);
|
||||
param.put("update_name", nickName);
|
||||
param.put("update_time", DateUtil.now());
|
||||
wo.update(param, "workorder_id = '" + workorder_id + "'");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) {
|
||||
Map res = new HashMap();
|
||||
res.put("flag", "2");
|
||||
res.put("workprocedure_id", param.getString("workproceduce_id"));
|
||||
JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(res).process().getResultJSONArray(0);
|
||||
return resultJSONArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONArray getDtl(JSONObject param) {
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("flag", "3");
|
||||
map.put("workorder_id", param.getString("workorder_id"));
|
||||
JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(map).process().getResultJSONArray(0);
|
||||
return resultJSONArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submits(List<String> param) {
|
||||
if (param == null || param.size()==0){
|
||||
public void down(List<String> ids) {
|
||||
if (ids == null || ids.size()==0){
|
||||
return;
|
||||
}
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String sql = param.stream().collect(Collectors.joining("','"));
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
wo.update(MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode()
|
||||
,"update_id", currentUserId,"update_name"
|
||||
, nickName,"update_time", DateUtil.now())
|
||||
,"workorder_id in ('"+sql+"')");
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("workorder_status",WorkerOrderEnum.SEND.getCode())
|
||||
.set("down_id", SecurityUtils.getCurrentUserId())
|
||||
.set("down_name",SecurityUtils.getCurrentNickName())
|
||||
.set("down_time",new Date())
|
||||
.in("workorder_id", ids));
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,ids.toArray(new String[0]));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forceFinish(JSONObject param) {
|
||||
this.finish(param);
|
||||
public void unDown(List<String> ids) {
|
||||
if (ids == null || ids.size()==0){
|
||||
return;
|
||||
}
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.ne("workorder_status", WorkerOrderEnum.SEND.getCode())
|
||||
.in("workorder_id", ids));
|
||||
if (list.size()>0){
|
||||
throw new BadRequestException("只有下发状态的工单才能取消下发");
|
||||
}
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("workorder_status",WorkerOrderEnum.CREATE.getCode())
|
||||
.set("down_id", SecurityUtils.getCurrentUserId())
|
||||
.set("down_name",SecurityUtils.getCurrentNickName())
|
||||
.set("down_time",new Date())
|
||||
.in("workorder_id", ids));
|
||||
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,ids.toArray(new String[0]));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finish(JSONObject param) {
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
JSONObject row = param.getJSONObject("row");
|
||||
//强制完成时修改工单状态
|
||||
String workorder_id = row.getString("workorder_id");
|
||||
WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
ProduceWorkorderDto workorderDto = this.findById(workorder_id);
|
||||
JSONObject produceorderMap = new JSONObject();
|
||||
produceorderMap.put("workorder_id", workorder_id);
|
||||
produceorderMap.put("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode());
|
||||
produceorderMap.put("update_id", currentUserId);
|
||||
produceorderMap.put("device_code", null);
|
||||
produceorderMap.put("update_name", nickName);
|
||||
produceorderMap.put("update_time", DateUtil.now());
|
||||
produceorderMap.put("realproduceend_date", DateUtil.now());
|
||||
wo.update(produceorderMap,"workorder_id = '"+workorder_id+"'");
|
||||
JSONObject jsonObject = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
|
||||
String real_qty = jsonObject.getString("real_qty");
|
||||
if (StrUtil.isEmpty(real_qty)) {
|
||||
real_qty = "0";
|
||||
String workorder_id = param.getJSONObject("row").getString("workorder_id");
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("workorder_status",WorkerOrderEnum.FORCE_COMPLETE.getCode())
|
||||
.set("update_id", SecurityUtils.getCurrentUserId())
|
||||
.set("update_name",SecurityUtils.getCurrentNickName())
|
||||
.set("update_time",new Date())
|
||||
.in("workorder_id", workorder_id));
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("workorder_id", workorder_id);
|
||||
map.put("type", WorkerOrderEnum.FORCE_COMPLETE.getCode());
|
||||
array.add(map);
|
||||
Map<String, Object> result = wmsToAcsService.orderStatusUpdate(array);
|
||||
if (!HttpStatus.OK.equals(result.get("status"))) {
|
||||
throw new BadRequestException((String) result.get("message"));
|
||||
}
|
||||
//同时修改工单记录表中的期末数量及完成数量
|
||||
WQLObject wo_record = WQLObject.getWQLObject("PDM_produce_workOrderRecord");
|
||||
JSONObject result = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end = '' or operatetime_end is null) ").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
// todo: 数量不明确
|
||||
result.put("person_finish_qty", real_qty);
|
||||
result.put("person_report_qty", real_qty);
|
||||
result.put("operatetime_end", DateUtil.now());
|
||||
wo_record.update(result);
|
||||
}
|
||||
//工单开工以后需要向acs强制完成 wms向acs发送请求 工单强制完成
|
||||
// TODO: 业务不明
|
||||
OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()));
|
||||
String order_status = workorderDto.getWorkorder_status();
|
||||
if (!order_status.equals("1") && !order_status.equals("2")) {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("workorder_id", workorder_id);
|
||||
map.put("type", WorkerOrderEnum.FORCE_COMPLETE.getCode());
|
||||
array.add(map);
|
||||
wmsToAcsService.orderStatusUpdate(array);
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,workorder_id);
|
||||
}
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,16 +229,6 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//工单表
|
||||
WQLObject wo_order = WQLObject.getWQLObject("PDM_produce_workOrder");
|
||||
//物料表
|
||||
WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase");
|
||||
//设备表
|
||||
WQLObject wo_device = WQLObject.getWQLObject("pdm_bi_device");
|
||||
//工序表
|
||||
WQLObject wo_workprocedure = WQLObject.getWQLObject("pdm_bi_workprocedure");
|
||||
//人员表
|
||||
//WQLObject wo_user = WQLObject.getWQLObject("sys_user");
|
||||
|
||||
// 调用用 hutool 方法读取数据 调用第一个sheet白班数据
|
||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
||||
@@ -295,6 +236,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
List<List<Object>> read = excelReader.read(0, excelReader.getRowCount());
|
||||
String produce_date = "";
|
||||
// 循环获取的数据
|
||||
List<PdmProduceWorkorder> entitys = new ArrayList<>();
|
||||
row:
|
||||
for (int i = 0; i < read.size(); i++) {
|
||||
List<Object> list = read.get(i);
|
||||
@@ -304,7 +246,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
//获取每列
|
||||
JSONObject param = new JSONObject();
|
||||
//按照列获取
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
// param.put("macoperate_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_status", WorkerOrderEnum.CREATE.getCode());
|
||||
@@ -331,12 +273,12 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格为空,";
|
||||
}
|
||||
JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_material)) {
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_spec", col));
|
||||
if (ObjectUtil.isEmpty(material)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格对应物料信息不存在,";
|
||||
}else {
|
||||
param.put("material_id", json_material.getString("material_id"));
|
||||
param.put("material_id", material.getMaterial_id());
|
||||
}
|
||||
}
|
||||
if (j == 2) {
|
||||
@@ -366,16 +308,16 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
}
|
||||
if (j == 10) {
|
||||
String workprocedure_id = param.getString("workprocedure_id");
|
||||
JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_device)) {
|
||||
PdmBiDevice device = deviceService.getOne(new QueryWrapper<PdmBiDevice>().eq("device_code", col));
|
||||
if (ObjectUtil.isEmpty(device)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备编码不存在,";
|
||||
}
|
||||
if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) {
|
||||
if (!workprocedure_id.equals(device.getWorkprocedure_id())) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备与所属工序不匹配,";
|
||||
}else {
|
||||
param.put("device_id", json_device.getString("device_id"));
|
||||
param.put("device_code", device.getDevice_code());
|
||||
}
|
||||
}
|
||||
if (j == 11) {
|
||||
@@ -412,7 +354,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
param.put("create_id", currentUserId);
|
||||
param.put("create_name", nickName);
|
||||
param.put("create_time", DateUtil.now());
|
||||
wo_order.insert(param);
|
||||
entitys.add(param.toJavaObject(PdmProduceWorkorder.class));
|
||||
}
|
||||
|
||||
// 1.获取上传文件输入流
|
||||
@@ -434,7 +376,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
//获取每列
|
||||
JSONObject param = new JSONObject();
|
||||
//按照列获取
|
||||
param.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId());
|
||||
param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
// param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
param.put("workorder_status", WorkerOrderEnum.CREATE.getCode());
|
||||
@@ -460,12 +402,12 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格为空,";
|
||||
}
|
||||
JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_material)) {
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_spec", col));
|
||||
if (ObjectUtil.isEmpty(material)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "物料规格对应物料信息不存在,";
|
||||
}else {
|
||||
param.put("material_id", json_material.getString("material_id"));
|
||||
param.put("material_id", material.getMaterial_id());
|
||||
}
|
||||
}
|
||||
if (j == 2) {
|
||||
@@ -503,16 +445,16 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
// }
|
||||
if (j == 10) {
|
||||
String workprocedure_id = param.getString("workprocedure_id");
|
||||
JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(json_device)) {
|
||||
PdmBiDevice device = deviceService.getOne(new QueryWrapper<PdmBiDevice>().eq("device_code", col));
|
||||
if (ObjectUtil.isEmpty(device)) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备编码不存在,";
|
||||
}
|
||||
if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) {
|
||||
if (!workprocedure_id.equals(device.getWorkprocedure_id())) {
|
||||
is_error = "1";
|
||||
error_message = error_message + "设备与所属工序不匹配,";
|
||||
}else {
|
||||
param.put("device_id", json_device.getString("device_id"));
|
||||
param.put("device_code", device.getDevice_code());
|
||||
}
|
||||
}
|
||||
if (j == 11) {
|
||||
@@ -550,20 +492,22 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
param.put("create_id", currentUserId);
|
||||
param.put("create_name", nickName);
|
||||
param.put("create_time", DateUtil.now());
|
||||
wo_order.insert(param);
|
||||
entitys.add(param.toJavaObject(PdmProduceWorkorder.class));
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(entitys)){
|
||||
this.saveBatch(entitys);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public CommonResult<Map<String,Object>> openStart(JSONObject param) {
|
||||
public Object openStart(JSONObject param) {
|
||||
//获取前台传入的开工的工单信息
|
||||
//1-创建、2-下发、3-生产中、4-暂停、5-完成
|
||||
//判断该工单状态
|
||||
PdmProduceWorkorder result = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("current_device_code", param.getString("device_code"))
|
||||
.eq("device_code", param.getString("device_code"))
|
||||
.in("workorder_status","2","3","4")
|
||||
.ne("workorder_id",param.getString("workorder_id")));
|
||||
if(ObjectUtil.isNotEmpty(result)) {
|
||||
@@ -580,7 +524,8 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
throw new BadRequestException(String.valueOf(resp.get("message")));
|
||||
}
|
||||
this.update(result,new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||
OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,param.getString("workorder_id"),MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode()));
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,result.getWorkorder_id());
|
||||
|
||||
return RestBusinessTemplate.execute(() -> resp);
|
||||
}
|
||||
|
||||
@@ -588,7 +533,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
private JSONObject packageForm(PdmProduceWorkorder workOrder) {
|
||||
JSONObject form = new JSONObject();
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", workOrder.getMaterial_id()));
|
||||
PdmBiDevice device = deviceService.getOne(new QueryWrapper<PdmBiDevice>().eq("device_code", workOrder.getCurrent_device_code()));
|
||||
PdmBiDevice device = deviceService.getOne(new QueryWrapper<PdmBiDevice>().eq("device_code", workOrder.getDevice_code()));
|
||||
form.put("workorder_id",workOrder.getWorkorder_id());
|
||||
form.put("workorder_code",workOrder.getWorkorder_code());
|
||||
form.put("qty", workOrder.getPlan_qty());
|
||||
@@ -597,9 +542,93 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorkor
|
||||
form.put("material_name",material.getMaterial_name());
|
||||
form.put("material_code",material.getMaterial_code());
|
||||
form.put("material_spec",material.getMaterial_spec());
|
||||
form.put("device_code",workOrder.getCurrent_device_code());
|
||||
form.put("device_code",workOrder.getDevice_code());
|
||||
form.put("is_needmove",workOrder.getIs_needmove());
|
||||
return form;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Object report(JSONObject param) {
|
||||
Assert.notNull(new Object[]{param,param.get("report_qty"),param.get("nok_qty"),param.getBigDecimal("repare_qty")},"请求参数不能为空");
|
||||
|
||||
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||
if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode())||workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())){
|
||||
throw new BadRequestException(param.getString("workorder_id")+"当前工单已经完工不允许报工");
|
||||
}
|
||||
PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
|
||||
.eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportRecordStatus.CREATE.getCode()));
|
||||
if ( one == null) {
|
||||
throw new BadRequestException(param.getString("workorder_id")+"当前工单没有生成状态的报工记录");
|
||||
}
|
||||
workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty")));
|
||||
workorder.setNok_qty(workorder.getReport_qty().add(param.getBigDecimal("nok_qty")));
|
||||
workorder.setRepare_qty(workorder.getReport_qty().add(param.getBigDecimal("repare_qty")));
|
||||
if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()){
|
||||
workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode());
|
||||
}
|
||||
this.updateById(workorder);
|
||||
|
||||
reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>()
|
||||
.set("report_qty",param.getBigDecimal("report_qty"))
|
||||
.set("nok_qty",param.getBigDecimal("nok_qty"))
|
||||
.set("repare_qty",param.getBigDecimal("repare_qty"))
|
||||
.set("needproduct_qty",workorder.getPlan_qty().doubleValue()-workorder.getReport_qty().doubleValue())
|
||||
.eq("macoperate_id",one.getMacoperate_id()));
|
||||
return one.getMacoperate_id();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void reportApprove(JSONArray param) {
|
||||
List<PdmProduceWorkorderrecord> workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class);
|
||||
if (!CollectionUtils.isEmpty(workreportRecords)){
|
||||
List<String> macoperate_ids = workreportRecords.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList());
|
||||
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();
|
||||
itemRecord.forEach(item -> {
|
||||
item.setReport_status(ReportRecordStatus.FINISH.getCode());
|
||||
item.setConfirm_id(SecurityUtils.getCurrentUserId());
|
||||
item.setConfirm_name(SecurityUtils.getCurrentNickName());
|
||||
item.setConfirm_time(DateUtil.now());
|
||||
});
|
||||
List<Map> list = packageWorkorderQty(record, itemRecord);
|
||||
this.baseMapper.batchUpdateByParam(list,entry.getKey());
|
||||
reportRecordService.updateBatchById(itemRecord);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<Map> packageWorkorderQty(List<PdmProduceWorkorderrecord> record, List<PdmProduceWorkorderrecord> itemRecord) {
|
||||
List<String> ids = itemRecord.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList());
|
||||
List<PdmProduceWorkorderrecord> oldRecord = record.stream().filter(item -> ids.contains(item.getMacoperate_id())).collect(Collectors.toList());
|
||||
long old_nok_qty = oldRecord.stream().map(PdmProduceWorkorderrecord::getNok_qty).count();
|
||||
long new_nok_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getNok_qty).count();
|
||||
long old_repare_qty = oldRecord.stream().map(PdmProduceWorkorderrecord::getRepare_qty).count();
|
||||
long new_repare_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getRepare_qty).count();
|
||||
long old_report_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getReport_qty).count();
|
||||
long new_report_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getReport_qty).count();
|
||||
List<Map> list = new ArrayList<>();
|
||||
Map<String, Object> nok_qty = new HashMap<>();
|
||||
nok_qty.put("field","nok_qty");
|
||||
nok_qty.put("value",Math.abs(new_nok_qty-old_nok_qty));
|
||||
nok_qty.put("add",new_nok_qty>old_nok_qty);
|
||||
list.add(nok_qty);
|
||||
Map<String, Object> repare_qty = new HashMap<>();
|
||||
repare_qty.put("field","repare_qty");
|
||||
repare_qty.put("value",Math.abs(new_repare_qty-old_repare_qty));
|
||||
repare_qty.put("add",new_repare_qty>old_repare_qty);
|
||||
list.add(repare_qty);
|
||||
Map<String, Object> report_qty = new HashMap<>();
|
||||
report_qty.put("field","report_qty");
|
||||
report_qty.put("value",Math.abs(new_report_qty-old_report_qty));
|
||||
report_qty.put("add",new_report_qty>old_report_qty);
|
||||
list.add(report_qty);
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.product_manage.service.workprocedure.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
@@ -23,7 +24,8 @@ public class PdmBiWorkprocedure implements Serializable {
|
||||
/**
|
||||
* 工序标识
|
||||
*/
|
||||
private Long workprocedure_id;
|
||||
@TableId("workprocedure_id")
|
||||
private String workprocedure_id;
|
||||
|
||||
/**
|
||||
* 生产区域
|
||||
@@ -53,17 +55,17 @@ public class PdmBiWorkprocedure implements Serializable {
|
||||
/**
|
||||
* 是否关键工序
|
||||
*/
|
||||
private String is_keyworkprocedure;
|
||||
private Boolean is_keyworkprocedure;
|
||||
|
||||
/**
|
||||
* 是否首道工序
|
||||
*/
|
||||
private String is_first;
|
||||
private Boolean is_first;
|
||||
|
||||
/**
|
||||
* 是否启用
|
||||
*/
|
||||
private String is_used;
|
||||
private Boolean is_used;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
@@ -73,7 +75,7 @@ public class PdmBiWorkprocedure implements Serializable {
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long create_id;
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
@@ -88,7 +90,7 @@ public class PdmBiWorkprocedure implements Serializable {
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long update_id;
|
||||
private String update_id;
|
||||
|
||||
/**
|
||||
* 修改人姓名
|
||||
|
||||
@@ -25,7 +25,7 @@ public class PdmBiWorkprocedureServiceImpl extends ServiceImpl<PdmBiWorkprocedur
|
||||
|
||||
@Override
|
||||
public JSONArray downSelect() {
|
||||
List list = this.list(new QueryWrapper<PdmBiWorkprocedure>().eq("is_used", "1").orderByDesc("workprocedure_code"));
|
||||
List list = this.list(new QueryWrapper<PdmBiWorkprocedure>().eq("is_used", true).orderByDesc("workprocedure_code"));
|
||||
return new JSONArray(list);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.system_manage.service.ql.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import java.io.Serializable;
|
||||
@@ -26,7 +27,8 @@ public class PdmQlOption implements Serializable {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
private String optionId;
|
||||
@TableId(value = "option_id")
|
||||
private String option_id;
|
||||
|
||||
/**
|
||||
* 检测类型
|
||||
@@ -38,10 +40,12 @@ public class PdmQlOption implements Serializable {
|
||||
*/
|
||||
private String orderno;
|
||||
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 数据
|
||||
*/
|
||||
private String optionDate;
|
||||
private String optiod_date;
|
||||
/**
|
||||
* 业务类
|
||||
*/
|
||||
@@ -50,17 +54,17 @@ public class PdmQlOption implements Serializable {
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
private String createName;
|
||||
private String create_name;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createId;
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
|
||||
@@ -13,7 +13,7 @@ export const constantRouterMap = [
|
||||
},
|
||||
{
|
||||
path: '/produceTask',
|
||||
component: (resolve) => require(['@/views/wms/mps/produce/bigScreen'], resolve),
|
||||
component: (resolve) => require(['@/views/wms/product_manage/workorder/bigScreen'], resolve),
|
||||
hidden: true,
|
||||
meta: { title: '加工看板' }
|
||||
},
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
import CRUD, { crud, header, presenter } from '@crud/crud'
|
||||
import MaterDtl from '@/views/wms/pub/MaterDialog'
|
||||
import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
|
||||
import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder'
|
||||
|
||||
export default {
|
||||
name: 'AddDtl',
|
||||
@@ -63,7 +63,7 @@
|
||||
<script>
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
|
||||
import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder'
|
||||
import crudDevice from '@/api/wms/pdm/device'
|
||||
|
||||
export default {
|
||||
@@ -141,8 +141,8 @@ export default {
|
||||
this.$emit('AddChanged')
|
||||
})
|
||||
},
|
||||
getNotWorkDeviceByWorkproceduceId(workproceduce_id) {
|
||||
crudProduceshiftorder.getNotWorkDeviceByWorkproceduceId({ workproceduce_id: workproceduce_id }).then(res => {
|
||||
getNotWorkDeviceByWorkproceduceId(workprocedure_id) {
|
||||
crudProduceshiftorder.getNotWorkDeviceByWorkproceduceId({ workprocedure_id: workprocedure_id }).then(res => {
|
||||
this.deviceList = res
|
||||
})
|
||||
},
|
||||
@@ -38,7 +38,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder'
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
|
||||
export default {
|
||||
@@ -186,7 +186,7 @@
|
||||
<script>
|
||||
import { crud } from '@crud/crud'
|
||||
import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
|
||||
import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder/produceshiftorder'
|
||||
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import crudClassstandard from '@/api/wms/basedata/master/classstandard'
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
<script>
|
||||
import crud from '@/mixins/crud'
|
||||
import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder'
|
||||
|
||||
export default {
|
||||
name: 'BigscreenTask',
|
||||
@@ -176,6 +176,27 @@
|
||||
>
|
||||
下发
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="success"
|
||||
icon="el-icon-position"
|
||||
size="mini"
|
||||
:disabled="is_disabled(crud.selections)"
|
||||
@click="unSubmits(crud.selections)"
|
||||
>
|
||||
取消下发
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="success"
|
||||
icon="el-icon-position"
|
||||
size="mini"
|
||||
@click="report()"
|
||||
>
|
||||
报工审核
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
@@ -228,9 +249,9 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="crud.status.add" label="生产设备" prop="current_device_code">
|
||||
<el-form-item v-if="crud.status.add" label="生产设备" prop="device_code">
|
||||
<el-select
|
||||
v-model="form.current_device_code"
|
||||
v-model="form.device_code"
|
||||
clearable
|
||||
class="filter-item"
|
||||
style="width: 200px;"
|
||||
@@ -374,7 +395,7 @@
|
||||
<el-table-column prop="planproduceend_date" label="计划结束时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="realproducestart_date" label="实际开始时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="realproduceend_date" label="实际结束时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="current_device_code" label="当前设备编码" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="device_code" label="当前设备编码" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="is_canupdate_update" label="操作工是否允许修改报工数量" width="200" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.IS_OR_NOT[scope.row.is_canupdate_update] }}
|
||||
@@ -425,6 +446,7 @@
|
||||
@setMaterValue="setMaterValue"
|
||||
/>
|
||||
<ViewDialog ref="child3" />
|
||||
<reportDialog ref="report" />
|
||||
<UploadDialog :dialog-show.sync="uploadShow" @tableChanged3="tableChanged3" />
|
||||
<AddDialog :dialog-show.sync="addShow" @AddChanged="querytable" />
|
||||
<ReplaceDeviceDialog ref="child4" @AddChanged="querytable" />
|
||||
@@ -432,7 +454,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder/produceshiftorder'
|
||||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
@@ -442,11 +464,12 @@ import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure'
|
||||
import MaterDtl from '@/views/wms/pub/MaterDialog'
|
||||
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import ViewDialog from '@/views/wms/mps/produce/ViewDialog'
|
||||
import ViewDialog from '@/views/wms/product_manage/workorder/ViewDialog'
|
||||
import reportDialog from '@/views/wms/product_manage/workorder/reportDialog'
|
||||
import crudClassstandard from '@/api/wms/basedata/master/classstandard'
|
||||
import AddDialog from '@/views/wms/mps/produce/AddDialog'
|
||||
import UploadDialog from '@/views/wms/mps/produce/UploadDialog'
|
||||
import ReplaceDeviceDialog from '@/views/wms/mps/produce/ReplaceDeviceDialog'
|
||||
import AddDialog from '@/views/wms/product_manage/workorder/AddDialog'
|
||||
import UploadDialog from '@/views/wms/product_manage/workorder/UploadDialog'
|
||||
import ReplaceDeviceDialog from '@/views/wms/product_manage/workorder/ReplaceDeviceDialog'
|
||||
|
||||
const defaultForm = {
|
||||
workorder_id: null,
|
||||
@@ -467,7 +490,7 @@ const defaultForm = {
|
||||
planproduceend_date: null,
|
||||
realproducestart_date: null,
|
||||
realproduceend_date: null,
|
||||
current_device_code: null,
|
||||
device_code: null,
|
||||
current_produce_person_id: null,
|
||||
is_canupdate_update: null,
|
||||
workorder_status: null,
|
||||
@@ -487,7 +510,7 @@ const defaultForm = {
|
||||
}
|
||||
export default {
|
||||
name: 'Produceshiftorder',
|
||||
components: { AddDialog, pagination, crudOperation, rrOperation, udOperation, MaterDtl, Treeselect, ViewDialog, UploadDialog, ReplaceDeviceDialog },
|
||||
components: { AddDialog, pagination, crudOperation, rrOperation, udOperation, MaterDtl, Treeselect, ViewDialog,reportDialog, UploadDialog, ReplaceDeviceDialog },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
dicts: ['PDM_BI_SHIFTTYPE', 'MPS_BD_ORDERSTATUS', 'WORKORDER_CREATE_TYPE', 'is_used', 'PDM_BI_ORDERTYPE', 'IS_OR_NOT', 'product_area'],
|
||||
cruds() {
|
||||
@@ -552,7 +575,7 @@ export default {
|
||||
is_canupdate_update: [
|
||||
{ required: true, message: '不能为空', trigger: 'blur' }
|
||||
],
|
||||
current_device_code: [
|
||||
device_code: [
|
||||
{ required: true, message: '设备不能为空', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
@@ -566,9 +589,9 @@ export default {
|
||||
tableChanged3() {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
getNotWorkDeviceByWorkproceduceId(workproceduce_id) { // 根据工序标识获取设备列表
|
||||
crudProduceshiftorder.getNotWorkDeviceByWorkproceduceId({ workproceduce_id: workproceduce_id }).then(res => {
|
||||
this.deviceList = res
|
||||
getNotWorkDeviceByWorkproceduceId(workprocedure_id) { // 根据工序标识获取设备列表
|
||||
crudProduceshiftorder.getNotWorkDeviceByWorkproceduceId({ workprocedure_id: workprocedure_id }).then(res => {
|
||||
this.deviceList = res.content
|
||||
})
|
||||
},
|
||||
initDataPlan() {
|
||||
@@ -675,6 +698,10 @@ export default {
|
||||
this.$refs.child3.setForm(row)
|
||||
}
|
||||
},
|
||||
// 查看
|
||||
report() {
|
||||
this.$refs.report.setForm()
|
||||
},
|
||||
// 强制完成
|
||||
forceFinish(rows) {
|
||||
var i = Number(0)
|
||||
@@ -760,6 +787,17 @@ export default {
|
||||
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
}, // 取消下发
|
||||
unSubmits(rows) {
|
||||
var orders = []
|
||||
console.log(rows)
|
||||
rows.forEach((item) => {
|
||||
orders.push(item.workorder_id)
|
||||
})
|
||||
crudProduceshiftorder.unSubmits(orders).then(res => {
|
||||
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
},
|
||||
add() {
|
||||
this.addShow = true
|
||||
@@ -35,7 +35,14 @@ export function edit(data) {
|
||||
export function submits(data) {
|
||||
return request({
|
||||
url: 'api/produceWorkorder/submits',
|
||||
method: 'put',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
export function unSubmits(data) {
|
||||
return request({
|
||||
url: 'api/produceWorkorder/submits',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -128,4 +135,4 @@ export function replaceDevice(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, addRows, edit, del, submits, getDevice, getTable, openStart, saveReport, finish, getReportWork, forceFinish, getDtl, excelImport, getNotWorkDeviceByWorkproceduceId, replaceDevice }
|
||||
export default { add, addRows, edit, del, submits, unSubmits, getTable, openStart, saveReport, finish, getReportWork, forceFinish, getDtl, excelImport, getNotWorkDeviceByWorkproceduceId, replaceDevice }
|
||||
Reference in New Issue
Block a user