rev:修改工单开工逻辑:一个设备允许多个工单创建下发
This commit is contained in:
@@ -37,10 +37,10 @@ public class OptionRecord {
|
||||
bean.save(qlOption);
|
||||
}
|
||||
public static<T> void recordAsync(OptionEnum type,String status, Buss classname, String order, T option){
|
||||
ThreadPoolExecutor EXECUTOR = SpringContextHolder.getBean("meshandlerPool");
|
||||
EXECUTOR.execute(()->{
|
||||
record(type,status,classname,order,option);
|
||||
});
|
||||
// ThreadPoolExecutor EXECUTOR = SpringContextHolder.getBean("meshandlerPool");
|
||||
// EXECUTOR.execute(()->{
|
||||
// record(type,status,classname,order,option);
|
||||
// });
|
||||
}
|
||||
public static<T> List<T> getRecord(OptionRecordQuery query,final Class<T> clazz){
|
||||
IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class);
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.product_manage.controller.workorder;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
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.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.github.pagehelper.Page;
|
||||
@@ -10,6 +11,7 @@ import com.github.pagehelper.PageHelper;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -20,6 +22,7 @@ import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
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.ReportQuery;
|
||||
@@ -48,7 +51,7 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
|
||||
|
||||
@RequestMapping("/api/produceWorkorder")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
@@ -88,7 +91,7 @@ public class PdmProduceWorkorderController{
|
||||
|
||||
@PostMapping("/create")
|
||||
@Log("新增工单管理")
|
||||
//("新增工单管理")
|
||||
//("新增工单管理"):添加下发顺序
|
||||
public ResponseEntity<Object> submit(@Validated @RequestBody JSONObject dto) {
|
||||
iPdmProduceWorkorderService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
@@ -123,12 +126,18 @@ public class PdmProduceWorkorderController{
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
if(ids != null && ids.length > 0) {
|
||||
List<PdmProduceWorkorder> workOrderList = iPdmProduceWorkorderService.list(new LambdaUpdateWrapper<PdmProduceWorkorder>().in(PdmProduceWorkorder::getWorkorder_id, Arrays.asList(ids)));
|
||||
List<PdmProduceWorkorder> workOrderList = iPdmProduceWorkorderService
|
||||
.list(new LambdaUpdateWrapper<PdmProduceWorkorder>()
|
||||
.in(PdmProduceWorkorder::getWorkorder_id, Arrays.asList(ids)));
|
||||
int size = workOrderList.stream().filter(r -> Objects.equals(r.getCreate_type(), StatusEnum.APSINTO.getCode())).collect(Collectors.toList()).size();
|
||||
if(size > 0) {
|
||||
throw new BadRequestException("不允许删除aps工单");
|
||||
}
|
||||
iPdmProduceWorkorderService.update(new UpdateWrapper<PdmProduceWorkorder>().set("is_delete", true).in("workorder_id", Arrays.asList(ids)));
|
||||
long count = workOrderList.stream().filter(a -> !a.getWorkorder_status().equals(WorkerOrderEnum.CREATE.getCode())).count();
|
||||
if (count>0){
|
||||
throw new BadRequestException("删除失败:只能删除创建状态的工单");
|
||||
}
|
||||
iPdmProduceWorkorderService.removeByIds(Arrays.asList(ids));
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@@ -140,6 +149,22 @@ public class PdmProduceWorkorderController{
|
||||
return new ResponseEntity<>(TableDataInfo.build(deviceService.getNotWorkDeviceByWorkproceduceId(param)), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getWorkDeviceByWorkproceduceId")
|
||||
@Log("根据工序查询没有工单的设备")
|
||||
//("根据工序查询没有工单的设备")
|
||||
public ResponseEntity<Object> getWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) {
|
||||
QueryWrapper<PdmBiDevice> query = new QueryWrapper<PdmBiDevice>()
|
||||
.eq("is_delete", '0');
|
||||
if (StringUtils.isNotEmpty(param.getString("workprocedure_id"))){
|
||||
query.eq("workprocedure_id",param.getString("workprocedure_id"));
|
||||
}
|
||||
if (StringUtils.isNotEmpty(param.getString("product_area"))){
|
||||
query.eq("product_area",param.getString("product_area"));
|
||||
}
|
||||
return new ResponseEntity<>(TableDataInfo.build(deviceService.list(query)), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/forceFinish")
|
||||
@Log("工单强制完成")
|
||||
//("工单强制完成")
|
||||
|
||||
@@ -2,17 +2,19 @@ package org.nl.wms.product_manage.service.workorder.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
import org.nl.wms.analysis_manage.productCapacity.service.dto.ProductCapQuery;
|
||||
import org.nl.wms.analysis_manage.qlmanage.dto.QualityQuery;
|
||||
import org.nl.wms.analysis_manage.scrapRate.service.dto.ScrapRateQuery;
|
||||
import org.nl.wms.analysis_manage.workingGoods.service.dto.ByProcessQuery;
|
||||
import org.nl.wms.device_manage.ios.service.structIvt.dto.StructIvtEmQuery;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -44,6 +46,16 @@ public interface PdmProduceWorkorderMapper extends BaseMapper<PdmProduceWorkorde
|
||||
*/
|
||||
void insertBatch(@Param("entities") List<PdmProduceWorkorder> entities);
|
||||
|
||||
Integer getMaxNo(@Param("device_code")String device_code,@Param("workorder_code")String workorder_code);
|
||||
@Select("select min(aps_workorder_no) from pdm_produce_workorder " +
|
||||
"where device_code = #{device_code} and workorder_status = #{workorder_status} ")
|
||||
Integer getMinNo(@Param("device_code")String device_code,@Param("workorder_status")String workorder_status);
|
||||
|
||||
List<Map> getMaxNos(Set<String> devices);
|
||||
|
||||
@Update("update pdm_produce_workorder set aps_workorder_no = aps_workorder_no-1 where device_code = #{device_code} and workorder_status = '1'")
|
||||
void recursionNo(String device_code);
|
||||
|
||||
/**
|
||||
* 在制品分析
|
||||
*
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
LEFT JOIN sys_user users ON users.user_id = ShiftOrder.current_produce_person_id
|
||||
LEFT JOIN pdm_bi_device device ON ShiftOrder.device_code = device.device_code
|
||||
WHERE
|
||||
ShiftOrder.device_code is not null and ShiftOrder.current_produce_person_id is not null and
|
||||
ShiftOrder.is_delete = '0' AND ShiftOrder.aps_work_type != 'S'
|
||||
ShiftOrder.device_code is not null and
|
||||
ShiftOrder.is_delete = '0'
|
||||
<if test="query.workorder_code != null and query.workorder_code != ''">
|
||||
and ShiftOrder.workorder_code like concat('%',#{query.workorder_code},'%')
|
||||
</if>
|
||||
@@ -275,7 +275,7 @@
|
||||
<if test="optuser != null and optuser != ''">
|
||||
and workorder.current_produce_person_id = #{optuser}
|
||||
</if>
|
||||
order by workorder_code desc
|
||||
order by device_code desc,aps_workorder_no asc
|
||||
</select>
|
||||
<select id="orderListByDevLimit"
|
||||
resultType="org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto">
|
||||
@@ -739,5 +739,23 @@
|
||||
</foreach>)
|
||||
and DATE_FORMAT(pdm_produce_workorder.planproducestart_date,'%Y-%m-%d') = CURDATE();
|
||||
</select>
|
||||
<select id="getMaxNo" resultType="java.lang.Integer">
|
||||
select IFNULL(max(aps_workorder_no),0) from pdm_produce_workorder
|
||||
where device_code = #{device_code}
|
||||
and workorder_status = '1'
|
||||
<if test="workorder_code != null and workorder_code != ''">
|
||||
and workorder_code <![CDATA[<>]]> #{workorder_code}
|
||||
</if>
|
||||
</select>
|
||||
<select id="getMaxNos" resultType="java.util.Map">
|
||||
select device_code,
|
||||
IFNULL(max(aps_workorder_no),0) as maxNo from pdm_produce_workorder
|
||||
where workorder_status = '1' and
|
||||
device_code IN
|
||||
<foreach collection="devices" item="item" index="index" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
GROUP BY device_code
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.ParseException;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -173,10 +174,14 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (planQty.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
throw new BadRequestException("计划数量应大于0");
|
||||
}
|
||||
//aps_workorder_no
|
||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||
if (ext != null) {
|
||||
entity.setPackage_ext(ext.toJSONString());
|
||||
}
|
||||
int maxNo = this.baseMapper.getMaxNo(entity.getDevice_code(),entity.getWorkorder_code());
|
||||
entity.setAps_workorder_no(maxNo+1);
|
||||
|
||||
entity.setWorkorder_id(IdUtil.getStringId());
|
||||
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
String current_produce_person_id = form.getString("current_produce_person_id");
|
||||
@@ -187,6 +192,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
entity.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setCreate_time(DateUtil.now());
|
||||
entity.setAps_workorder_no(maxNo);
|
||||
entity.setCreate_type(StatusEnum.PCINTO.getCode());
|
||||
entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
entity.setAps_update_time(DateUtil.now());
|
||||
@@ -200,6 +206,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateForm(JSONObject form) {
|
||||
Assert.notNull(form, "参数不能为空");
|
||||
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", form.getString("workorder_id")).in("workorder_status", "1", "2", "4"));
|
||||
@@ -207,6 +214,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
throw new BadRequestException("工单状态非生产状态下不允许修改");
|
||||
}
|
||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||
if (entity.getWorkorder_status().equals(WorkerOrderEnum.CREATE.getCode())){
|
||||
Integer maxNo = this.baseMapper.getMaxNo(entity.getDevice_code(),entity.getWorkorder_code());
|
||||
entity.setAps_workorder_no(maxNo+1);
|
||||
}
|
||||
entity.setDown_time(DateUtil.now());
|
||||
entity.setDown_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setDown_name(SecurityUtils.getCurrentNickName());
|
||||
@@ -214,7 +225,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
entity.setUpdate_time(new Date());
|
||||
entity.setReal_qty(null);
|
||||
this.updateById(entity);
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id());
|
||||
if (!entity.getAps_workorder_no().equals(one.getAps_workorder_no())){
|
||||
sortNo(entity.getDevice_code());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -222,46 +235,64 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
return this.baseMapper.getworkOrderDtl(param.getString("workorder_id"));
|
||||
}
|
||||
|
||||
|
||||
void sortNo(String device_code){
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("device_code", device_code)
|
||||
.eq("workorder_status", WorkerOrderEnum.CREATE.getCode())
|
||||
.ne("aps_workorder_no", 0)
|
||||
.select("workorder_id")
|
||||
.orderByAsc("aps_workorder_no"));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("aps_workorder_no",i+1).eq("workorder_id",list.get(i).getWorkorder_id()));
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 工单下发
|
||||
*/
|
||||
@Override
|
||||
public void down(List<String> ids) {
|
||||
@Transactional
|
||||
public void
|
||||
down(List<String> ids) {
|
||||
if (ids == null || ids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
|
||||
//工单下发校验
|
||||
checkWorkOrder(workorders);
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0").or().eq("create_type", "3")).in("workorder_id", ids));
|
||||
//aps排产完成的工单,生成工单编号再下发
|
||||
if (list.size() > 0) {
|
||||
list.forEach(r -> {
|
||||
UpdateWrapper<PdmProduceWorkorder> updateWrapper = new UpdateWrapper<PdmProduceWorkorder>();
|
||||
updateWrapper.eq("workorder_id", r.getWorkorder_id());
|
||||
//updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
updateWrapper.set("device_code", r.getDevice_code());
|
||||
updateWrapper.set("workprocedure_id", r.getWorkprocedure_id());
|
||||
updateWrapper.set("aps_update_flag", "M");
|
||||
updateWrapper.set("aps_update_inner_flag", "M");
|
||||
updateWrapper.set("aps_update_time", DateUtil.now());
|
||||
updateWrapper.set("update_time", DateUtil.now());
|
||||
updateWrapper.set("update_id", SecurityUtils.getCurrentUserId());
|
||||
updateWrapper.set("update_name", SecurityUtils.getCurrentNickName());
|
||||
this.update(updateWrapper);
|
||||
});
|
||||
}
|
||||
// List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0").or().eq("create_type", "3")).in("workorder_id", ids));
|
||||
// //aps排产完成的工单,生成工单编号再下发
|
||||
// if (list.size() > 0) {
|
||||
// list.forEach(r -> {
|
||||
// UpdateWrapper<PdmProduceWorkorder> updateWrapper = new UpdateWrapper<PdmProduceWorkorder>();
|
||||
// updateWrapper.eq("workorder_id", r.getWorkorder_id());
|
||||
// //updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
// updateWrapper.set("device_code", r.getDevice_code());
|
||||
// updateWrapper.set("workprocedure_id", r.getWorkprocedure_id());
|
||||
// updateWrapper.set("aps_update_flag", "M");
|
||||
// updateWrapper.set("aps_update_inner_flag", "M");
|
||||
// updateWrapper.set("aps_update_time", DateUtil.now());
|
||||
// updateWrapper.set("update_time", DateUtil.now());
|
||||
// updateWrapper.set("update_id", SecurityUtils.getCurrentUserId());
|
||||
// updateWrapper.set("update_name", SecurityUtils.getCurrentNickName());
|
||||
// this.update(updateWrapper);
|
||||
// });
|
||||
// }
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>().set("workorder_status", WorkerOrderEnum.SEND.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("update_time", new Date()).set("down_time", new Date()).in("workorder_id", ids));
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
||||
Set<String> deviceCodes = workorders.stream().map(PdmProduceWorkorder::getDevice_code).collect(Collectors.toSet());
|
||||
for (String deviceCode : deviceCodes) {
|
||||
this.sortNo(deviceCode);
|
||||
}
|
||||
}
|
||||
|
||||
//工单下发前校验
|
||||
public void checkWorkOrder(List<PdmProduceWorkorder> workorders) {
|
||||
//1.校验批量下发工单中是否存在已完成的/未绑定设备的工单/未绑定人员的
|
||||
boolean isFinished = workorders.stream().anyMatch(workorder -> Integer.parseInt(workorder.getWorkorder_status()) > 5 || Integer.parseInt(workorder.getWorkorder_status()) == 2 || StringUtils.isBlank(workorder.getDevice_code()) || StringUtils.isBlank(workorder.getCurrent_produce_person_id()));
|
||||
boolean isFinished = workorders.stream().anyMatch(workorder -> Integer.parseInt(workorder.getWorkorder_status()) > 5 || Integer.parseInt(workorder.getWorkorder_status()) == 2|| workorder.getAps_workorder_no() == 0 || StringUtils.isBlank(workorder.getDevice_code()));
|
||||
if (isFinished) {
|
||||
throw new BadRequestException("存在未分派人员或已下发或已完成或的工单,无法下发");
|
||||
throw new BadRequestException("当前工单未调整下发顺序或者已经下发,无法下发");
|
||||
}
|
||||
//2.校验批量工单中是否有绑定相同设备
|
||||
//工作顺序号排序
|
||||
@@ -272,7 +303,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
// }
|
||||
//3.校验单个工单下发,校验下发工单列表中是否存在相同工序中更小的工单下发顺序号
|
||||
if (workorders.size() == 1) {
|
||||
compareWorkorderNo(workorders.get(0).getAps_workorder_no(), workorders.get(0).getWorkprocedure_id(), workorders.get(0).getDevice_code());
|
||||
compareWorkorderNo(workorders.get(0).getAps_workorder_no(), WorkerOrderEnum.CREATE.getCode(), workorders.get(0).getDevice_code());
|
||||
}
|
||||
//根据设备号和工序分组,进行下发顺序校验
|
||||
Map<String, List<PdmProduceWorkorder>> groupedWorkorders = workorders.stream().collect(Collectors.groupingBy(workorder -> workorder.getWorkprocedure_id() + "-" + workorder.getDevice_code()));
|
||||
@@ -283,7 +314,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
String deviceCode = workprocedureId.split("-")[1];
|
||||
PdmProduceWorkorder firstWorkorder = workorderList.get(0);
|
||||
//5.校验批量下发工单列表中是否存在相同工序中更小的工单下发顺序号
|
||||
compareWorkorderNo(firstWorkorder.getAps_workorder_no(), firstWorkorder.getWorkprocedure_id(), deviceCode);
|
||||
compareWorkorderNo(firstWorkorder.getAps_workorder_no(), WorkerOrderEnum.CREATE.getCode(), deviceCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -312,15 +343,15 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
/**
|
||||
* 校验下发工单列表中是否存在相同工序中更小的工单下发顺序号
|
||||
*/
|
||||
private void compareWorkorderNo(Integer max, String workprocedureId, String deviceCode) {
|
||||
Integer min = 0;
|
||||
List<PdmProduceWorkorder> workorderList = this.list(new QueryWrapper<PdmProduceWorkorder>().eq("workprocedure_id", workprocedureId).eq("workorder_status", WorkerOrderEnum.CREATE.getCode()).eq("create_type", 3).eq("device_code", deviceCode));
|
||||
Optional<PdmProduceWorkorder> minWorkorder = workorderList.stream().min(Comparator.comparing(PdmProduceWorkorder::getAps_workorder_no));
|
||||
if (minWorkorder.isPresent()) {
|
||||
min = minWorkorder.get().getAps_workorder_no();
|
||||
if (!Objects.equals(max, min)) {
|
||||
if (max > min) {
|
||||
throw new BadRequestException("存在下发顺序更小的工单,请优先下发");
|
||||
private void compareWorkorderNo(Integer max, String status, String deviceCode) {
|
||||
Integer minNo = this.baseMapper.getMinNo(deviceCode,status);
|
||||
if (minNo!=null){
|
||||
if (minNo == 0){
|
||||
throw new BadRequestException("设备"+deviceCode+"存在未调整的工单,请先调整在下发");
|
||||
}
|
||||
if (!Objects.equals(max, minNo)) {
|
||||
if (max > minNo) {
|
||||
throw new BadRequestException("存在下发顺序更小的工单,请优先操作该工单");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -330,16 +361,26 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
* 工单取消下发
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
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) {
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
|
||||
boolean present = list.stream().filter(order -> !order.getWorkorder_status().equals(WorkerOrderEnum.SEND.getCode())).findAny().isPresent();
|
||||
if (present) {
|
||||
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]));
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("workorder_status", WorkerOrderEnum.CREATE.getCode())
|
||||
.set("down_id", SecurityUtils.getCurrentUserId())
|
||||
.set("down_name", SecurityUtils.getCurrentNickName())
|
||||
.set("down_name", SecurityUtils.getCurrentNickName())
|
||||
.set("aps_workorder_no", 0)
|
||||
.in("workorder_id", ids));
|
||||
for (PdmProduceWorkorder pdmProduceWorkorder : list) {
|
||||
sortNo(pdmProduceWorkorder.getDevice_code());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -397,7 +438,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (!HttpStatus.OK.equals(result.get("status"))) {
|
||||
log.error((String) result.get("message"));
|
||||
}
|
||||
//this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id);
|
||||
//强制完成后重新排序
|
||||
sortNo(pdmProduceWorkorder.getDevice_code());
|
||||
}
|
||||
|
||||
|
||||
@@ -429,7 +471,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (reportList.size() > 0) {
|
||||
one = reportList.get(0);
|
||||
} else {
|
||||
throw new BadRequestException(param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
|
||||
throw new BadRequestException("当前工单没有生成状态的报工记录");
|
||||
}
|
||||
//Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
|
||||
workorder.setReport_qty(workorder.getReport_qty() == null ? BigDecimal.ZERO : workorder.getReport_qty());
|
||||
@@ -636,6 +678,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (j == 14) {
|
||||
workorder.setRemark(col);
|
||||
}
|
||||
if (j == 15) {
|
||||
if (!StringUtils.isEmpty(col)){
|
||||
workorder.setAps_workorder_no(Integer.valueOf(col));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(errorMap)) {
|
||||
@@ -683,7 +730,12 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (!CollectionUtils.isEmpty(errorMap)) {
|
||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||
} else {
|
||||
//顺序处理
|
||||
this.saveBatch(data);
|
||||
Set<String> devices = data.stream().map(PdmProduceWorkorder::getDevice_code).collect(Collectors.toSet());
|
||||
for (String device_code : devices) {
|
||||
sortNo(device_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -758,6 +810,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (j == 16) {
|
||||
workorder.setRemark(col);
|
||||
}
|
||||
if (j == 17) {
|
||||
if (!StringUtils.isEmpty(col)){
|
||||
workorder.setAps_workorder_no(Integer.valueOf(col));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(errorMap)) {
|
||||
@@ -836,6 +893,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||
} else {
|
||||
this.saveBatch(data);
|
||||
Set<String> devices = data.stream().map(PdmProduceWorkorder::getDevice_code).collect(Collectors.toSet());
|
||||
for (String device_code : devices) {
|
||||
sortNo(device_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -846,6 +907,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
workorder.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
workorder.setIs_needmove(true);
|
||||
workorder.setIs_canupdate_update(true);
|
||||
workorder.setAps_workorder_no(0);
|
||||
workorder.setCreate_time(DateUtil.now());
|
||||
workorder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
workorder.setCreate_name("导入订单");
|
||||
@@ -866,6 +928,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!");
|
||||
}
|
||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_id", param.getString("workorder_id")));
|
||||
compareWorkorderNo(workOrder.getAps_workorder_no(), WorkerOrderEnum.SEND.getCode(), workOrder.getDevice_code());
|
||||
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject order = packageForm(param);
|
||||
//开工时更新设备生产的物料规格
|
||||
@@ -874,7 +940,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
// .eq("device_code",order.getString("device_code")));
|
||||
array.add(order);
|
||||
//下发acs
|
||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||
|
||||
workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode());
|
||||
workOrder.setRealproducestart_date(DateUtil.now().replace("-", "/"));
|
||||
//触发APS修改指令
|
||||
|
||||
@@ -365,7 +365,7 @@
|
||||
clearable
|
||||
size="mini"
|
||||
style="width: 200px;"
|
||||
@change="getNotWorkDeviceByWorkproceduceId(form.workprocedure_id)"
|
||||
@change="getWorkDeviceByWorkproceduceId(form.workprocedure_id)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in workprocedureListArea"
|
||||
@@ -391,7 +391,15 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="crud.status.edit" label="工单下发顺序">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number
|
||||
v-model="form.aps_workorder_no"
|
||||
style="width: 200px;"
|
||||
>
|
||||
</el-input-number>
|
||||
</template>
|
||||
</el-form-item>
|
||||
<el-form-item label="销售单号">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
@@ -1126,8 +1134,8 @@ export default {
|
||||
tableChanged3() {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
getNotWorkDeviceByWorkproceduceId(workprocedure_id) { // 根据工序标识获取设备列表
|
||||
crudProduceshiftorder.getNotWorkDeviceByWorkproceduceId({
|
||||
getWorkDeviceByWorkproceduceId(workprocedure_id) { // 根据工序标识获取设备列表
|
||||
crudProduceshiftorder.getWorkDeviceByWorkproceduceId({
|
||||
workprocedure_id: workprocedure_id,
|
||||
product_area: this.form.product_area
|
||||
}).then(res => {
|
||||
|
||||
@@ -144,6 +144,13 @@ export function getNotWorkDeviceByWorkproceduceId(data) {
|
||||
data
|
||||
})
|
||||
}
|
||||
export function getWorkDeviceByWorkproceduceId(data) {
|
||||
return request({
|
||||
url: 'api/produceWorkorder/getWorkDeviceByWorkproceduceId',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function replaceDevice(data) {
|
||||
return request({
|
||||
@@ -245,6 +252,7 @@ export default {
|
||||
reportQuery3,
|
||||
excelImport,
|
||||
getNotWorkDeviceByWorkproceduceId,
|
||||
getWorkDeviceByWorkproceduceId,
|
||||
replaceDevice,
|
||||
submitAdjustWorkOrder,
|
||||
queryAdjustWorkOrder,
|
||||
|
||||
Reference in New Issue
Block a user