add:工单及工单记录

This commit is contained in:
zhangzhiqiang
2023-05-17 15:15:35 +08:00
parent a97b32d3a9
commit 30db992ada
38 changed files with 615 additions and 1176 deletions

View File

@@ -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

View File

@@ -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());

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -91,7 +91,7 @@ public class ProduceWorkorderDto implements Serializable {
/**
* 当前生产设备编码
*/
private String current_device_code;
private String device_code;
/**
* 当前生产人员id

View File

@@ -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);
}
}
}

View File

@@ -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;
}

View File

@@ -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'
)

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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());
}
}

View File

@@ -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;
}
}

View File

@@ -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;
/**
* 修改人姓名

View File

@@ -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);
}

View File

@@ -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;
/**
* 备注

View File

@@ -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: '加工看板' }
},

View File

@@ -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',

View File

@@ -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
})
},

View File

@@ -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 {

View File

@@ -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'

View File

@@ -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',

View File

@@ -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

View File

@@ -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 }