Browse Source

fix: 窑后送料禁止去货架三层、分拣优化、任务请求并发问题、点位解锁功能

master
李永德 1 year ago
parent
commit
0c0421f5ce
  1. 86
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  2. 4
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveProductionInfo.java
  3. 4
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveShelfInformation.java
  4. 3
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
  5. 8
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java
  6. 40
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
  7. 10
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/controller/SchBasePointController.java
  8. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java
  9. 19
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java
  10. 5
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java
  11. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java
  12. 1
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java
  13. 164
      lms/nladmin-system/nlsso-server/src/main/resources/config/application-test.yml
  14. 1
      lms/nladmin-system/nlsso-server/src/main/resources/stopword.dic
  15. 2
      lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue
  16. 33
      lms/nladmin-ui/src/views/wms/sch/point/index.vue
  17. 10
      lms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js

86
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -172,18 +172,21 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 找到当前的设备 // 找到当前的设备
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
String configCode = basePoint.getRegion_code() + "QLTask";
RLock lock = redissonClient.getLock(configCode);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode);
if (ObjectUtil.isEmpty(basePoint)) { if (ObjectUtil.isEmpty(basePoint)) {
throw new BadRequestException("点位错误!"); throw new BadRequestException("点位错误!");
} }
String configCode = basePoint.getRegion_code() + "QLTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
taskService.apply(param); taskService.apply(param);
} else {
throw new BadRequestException("其他设备占用锁,等待结束!");
} }
} finally { } finally {
if (tryLock) { if (tryLock) {
@ -206,18 +209,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 找到当前的设备 // 找到当前的设备
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
String configCode = basePoint.getRegion_code() + "QKTask";
RLock lock = redissonClient.getLock(configCode);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode);
if (ObjectUtil.isEmpty(basePoint)) { if (ObjectUtil.isEmpty(basePoint)) {
throw new BadRequestException("点位错误!"); throw new BadRequestException("点位错误!");
} }
String configCode = basePoint.getRegion_code() + "QKTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
taskService.apply(param); taskService.apply(param);
} else {
throw new BadRequestException("其他设备占用锁,等待结束!");
} }
} finally { } finally {
if (tryLock) { if (tryLock) {
@ -240,18 +247,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 找到当前的设备 // 找到当前的设备
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
String configCode = basePoint.getRegion_code() + "SKTask";
RLock lock = redissonClient.getLock(configCode);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode);
if (ObjectUtil.isEmpty(basePoint)) { if (ObjectUtil.isEmpty(basePoint)) {
throw new BadRequestException("点位错误!"); throw new BadRequestException("点位错误!");
} }
String configCode = basePoint.getRegion_code() + "SKTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
taskService.apply(param); taskService.apply(param);
} else {
throw new BadRequestException("其他设备占用锁,等待结束!");
} }
} finally { } finally {
if (tryLock) { if (tryLock) {
@ -274,21 +285,25 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 找到当前的设备 // 找到当前的设备
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
String configCode = basePoint.getRegion_code() + "MLTask";
RLock lock = redissonClient.getLock(configCode);
int handling = 0; // 无业务:0 int handling = 0; // 无业务:0
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode);
if (ObjectUtil.isEmpty(basePoint)) { if (ObjectUtil.isEmpty(basePoint)) {
throw new BadRequestException("点位错误!"); throw new BadRequestException("点位错误!");
} }
String configCode = basePoint.getRegion_code() + "MLTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
handling = specialHandling(basePoint.getRegion_code(), param); handling = specialHandling(basePoint.getRegion_code(), param);
param.put("special_param", handling); param.put("special_param", handling);
taskService.apply(param); taskService.apply(param);
} else {
throw new BadRequestException("其他设备占用锁,等待结束!");
} }
} finally { } finally {
if (tryLock) { if (tryLock) {
@ -322,18 +337,20 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
public ApplyTaskResponse applyForceTakeFullVehicle(JSONObject param) { public ApplyTaskResponse applyForceTakeFullVehicle(JSONObject param) {
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
RLock lock = redissonClient.getLock(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); String configCode = basePoint.getRegion_code() + "QZRKTask";
RLock lock = redissonClient.getLock(configCode);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { if (tryLock) {
SchBasePoint basePoint = pointService.getById(deviceCode);
if (ObjectUtil.isEmpty(basePoint)) { if (ObjectUtil.isEmpty(basePoint)) {
throw new BadRequestException("点位错误!"); throw new BadRequestException("点位错误!");
} }
String configCode = basePoint.getRegion_code() + "QZRKTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
taskService.apply(param); taskService.apply(param);
} else {
throw new BadRequestException("其他设备占用锁,等待结束!");
} }
} finally { } finally {
if (tryLock) { if (tryLock) {
@ -350,18 +367,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
* @return * @return
* @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest
*/ */
@SneakyThrows
public ApplyTaskResponse applyForceTakeFullVehicleInStorage(JSONObject param) { public ApplyTaskResponse applyForceTakeFullVehicleInStorage(JSONObject param) {
// 找到当前的设备 // 找到当前的设备
String deviceCode = param.getString("device_code"); String deviceCode = param.getString("device_code");
String requestNo = param.getString("requestNo");
SchBasePoint basePoint = pointService.getById(deviceCode); SchBasePoint basePoint = pointService.getById(deviceCode);
String configCode = basePoint.getRegion_code() + "SLHSTask";
RLock lock = redissonClient.getLock(configCode);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
if (ObjectUtil.isEmpty(basePoint)) { if (ObjectUtil.isEmpty(basePoint)) {
throw new BadRequestException("点位错误!"); throw new BadRequestException("点位错误!");
} }
String requestNo = param.getString("requestNo");
String configCode = basePoint.getRegion_code() + "SLHSTask";
// 组织参数 // 组织参数
param.put("config_code", configCode); param.put("config_code", configCode);
taskService.apply(param); taskService.apply(param);
} else {
throw new BadRequestException("其他设备占用锁,等待结束!");
}
} finally {
if (tryLock) {
lock.unlock();
}
}
return ApplyTaskResponse.responseOk(requestNo); return ApplyTaskResponse.responseOk(requestNo);
} }
@ -445,30 +475,32 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return ApplyTaskResponse.responseError(requestNo, "载具编码不能为空!"); return ApplyTaskResponse.responseError(requestNo, "载具编码不能为空!");
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(), SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getOneByVehicleCode(
GroupBindMaterialStatusEnum.UNBOUND.getValue()); baseRequest.getVehicle_code(), GroupBindMaterialStatusEnum.UNBOUND.getValue());
String materialId = groupInfo.getMaterial_id(); String materialId = groupInfo.getMaterial_id();
MdBaseMaterial baseMaterial = materialService.getById(materialId); MdBaseMaterial baseMaterial = materialService.getById(materialId);
BigDecimal materialWeight = ObjectUtil.isNotEmpty(groupInfo.getMaterial_weight()) BigDecimal materialQty = ObjectUtil.isNotEmpty(groupInfo.getMaterial_qty())
? groupInfo.getMaterial_weight() : BigDecimal.valueOf(0); ? BigDecimal.valueOf(groupInfo.getMaterial_qty()) : BigDecimal.valueOf(0);
String singleWeightStr = baseMaterial.getSingle_weight(); String singleWeightStr = baseMaterial.getSingle_weight();
BigDecimal singleWeight = BigDecimal.valueOf(Double.parseDouble(singleWeightStr)); BigDecimal singleWeight = BigDecimal.valueOf(Double.parseDouble(singleWeightStr));
BigDecimal multiply = materialWeight.multiply(singleWeight); BigDecimal multiply = materialQty.multiply(singleWeight);
// 获取工单 // 获取工单
PdmBdWorkorder workorder = workorderService.getByCode(groupInfo.getWorkorder_code()); PdmBdWorkorder workorder = workorderService.getByCode(groupInfo.getWorkorder_code());
String extData = workorder.getExt_data(); String extData = workorder.getExt_data();
JSONObject object = JSONObject.parseObject(extData); JSONObject object = JSONObject.parseObject(extData);
CusterVo custer = wmsToMesService.getCusterByNo(object.getString("custer_no")); log.info("包装数据:{}", object);
String custerNo = object.getString("custer_no");
String orderNo = object.getString("order_no");
// 组合 // 组合
sb.append(baseRequest.getVehicle_code()).append("##") sb.append(baseRequest.getVehicle_code()).append("##")
.append(baseMaterial.getMaterial_code()).append("##") .append(baseMaterial.getMaterial_code()).append("##")
.append(groupInfo.getMaterial_qty()).append("##") .append(groupInfo.getMaterial_qty()).append("##")
.append(multiply).append("##") .append(multiply).append("##")
.append(DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyy年MM月dd日")).append("##") .append(DateUtil.format(DateUtil.parse(DateUtil.today()), "yyyy年MM月dd日")).append("##")
.append(custer.getCUSTER_NAME()).append("##") .append(custerNo).append("##")
.append(workorder.getProduction_order()).append("##") .append(orderNo).append("##")
.append(baseMaterial.getMaterial_name()).append("##") .append(baseMaterial.getMaterial_name()).append("##")
.append(baseMaterial.getMaterial_model()); .append(baseMaterial.getMaterial_model()).append("**");
return ApplyTaskResponse.responseOk(requestNo, sb.toString()); return ApplyTaskResponse.responseOk(requestNo, sb.toString());
} }

4
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveProductionInfo.java

@ -2,6 +2,7 @@ package org.nl.wms.ext.mes.autotask;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.notice.ISysNoticeService;
@ -42,6 +43,9 @@ public class AutoSaveProductionInfo {
mi.setSTOCK_UNIT("块"); mi.setSTOCK_UNIT("块");
mi.setCREATE_TM(DateUtil.now()); mi.setCREATE_TM(DateUtil.now());
mi.setOP_FLAG(GeneralDefinition.NO); mi.setOP_FLAG(GeneralDefinition.NO);
if (ObjectUtil.isEmpty(mi.getBATCHNO())) {
mi.setBATCHNO("-");
}
// 3、批量插入MES数据库 // 3、批量插入MES数据库
try { try {
wmsToMesService.saveSemiProductionBatchToMes(mi); wmsToMesService.saveSemiProductionBatchToMes(mi);

4
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveShelfInformation.java

@ -2,6 +2,7 @@ package org.nl.wms.ext.mes.autotask;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.system.service.notice.ISysNoticeService; import org.nl.system.service.notice.ISysNoticeService;
@ -41,6 +42,9 @@ public class AutoSaveShelfInformation {
shelfInfo.setCREATE_TM(now); shelfInfo.setCREATE_TM(now);
shelfInfo.setSEND_TM(now); shelfInfo.setSEND_TM(now);
shelfInfo.setOP_FLAG(GeneralDefinition.NO); shelfInfo.setOP_FLAG(GeneralDefinition.NO);
if (ObjectUtil.isEmpty(shelfInfo.getSOURCE_VEHICLE_CODE())) {
shelfInfo.setSOURCE_VEHICLE_CODE("-");
}
// 插入数据 // 插入数据
try { try {
wmsToMesService.saveShelfInfoBatchToMes(shelfInfo); wmsToMesService.saveShelfInfoBatchToMes(shelfInfo);

3
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java

@ -186,7 +186,8 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
throw new BadRequestException("该设备已有生产工单,不能重复下发"); throw new BadRequestException("该设备已有生产工单,不能重复下发");
} }
// 设置开工人 // 设置开工人
pdmBdWorkorder.setOperator(SecurityUtils.getCurrentNickName()); pdmBdWorkorder.setOperator(ObjectUtil.isNotEmpty(SecurityUtils.getCurrentUser())
? SecurityUtils.getCurrentNickName() : "");
List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>(); List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>();
// 重装数据回ACS,重新根据id找一遍,省的改动以上代码 // 重装数据回ACS,重新根据id找一遍,省的改动以上代码
AcsWorkOrderVo acsWorkOrderVo = pdmBdWorkorderMapper.toAcsWorkOrderById(pdmBdWorkorder.getWorkorder_id()); AcsWorkOrderVo acsWorkOrderVo = pdmBdWorkorderMapper.toAcsWorkOrderById(pdmBdWorkorder.getWorkorder_id());

8
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java

@ -93,4 +93,12 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
* @param vehicleType * @param vehicleType
*/ */
void unBindingSameVehicleMaterial(String vehicleCode, String vehicleType); void unBindingSameVehicleMaterial(String vehicleCode, String vehicleType);
/**
* 包装获取组盘信息
* @param vehicleCode
* @param value
* @return
*/
SchBaseVehiclematerialgroup getOneByVehicleCode(String vehicleCode, String value);
} }

40
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java

@ -26,21 +26,23 @@ import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery; import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task_manage.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
* @description 服务实现 * @author lyd
* @author lyd * @description 服务实现
* @date 2023-05-16 * @date 2023-05-16
**/ **/
@Slf4j @Slf4j
@Service @Service
public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseVehiclematerialgroupMapper, SchBaseVehiclematerialgroup> implements ISchBaseVehiclematerialgroupService { public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseVehiclematerialgroupMapper, SchBaseVehiclematerialgroup> implements ISchBaseVehiclematerialgroupService {
@ -55,7 +57,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
private IMdBaseMaterialService materialService; private IMdBaseMaterialService materialService;
@Override @Override
public IPage<SchBaseVehiclematerialgroup> queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page){ public IPage<SchBaseVehiclematerialgroup> queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page) {
IPage<SchBaseVehiclematerialgroup> pages = new Page<>(page.getPage() + 1, page.getSize()); IPage<SchBaseVehiclematerialgroup> pages = new Page<>(page.getPage() + 1, page.getSize());
pages = vehiclematerialgroupMapper.selectPageLeftJoin(pages, whereJson); pages = vehiclematerialgroupMapper.selectPageLeftJoin(pages, whereJson);
return pages; return pages;
@ -67,7 +69,7 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
entity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); entity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
entity.setCreate_id(currentUserId); entity.setCreate_id(currentUserId);
entity.setCreate_name(nickName); entity.setCreate_name(nickName);
entity.setCreate_time(now); entity.setCreate_time(now);
@ -107,8 +109,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value)
.eq(SchBaseVehiclematerialgroup::getMaterial_id, materialId) .eq(SchBaseVehiclematerialgroup::getMaterial_id, materialId)
.eq(SchBaseVehiclematerialgroup::getIs_delete, false); .eq(SchBaseVehiclematerialgroup::getIs_delete, false);
SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); List<SchBaseVehiclematerialgroup> selectOne = vehiclematerialgroupMapper.selectList(lambda);
return selectOne; return selectOne.size() > 0 ? selectOne.get(0) : null;
} }
@Override @Override
@ -118,8 +120,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
.eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType) .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value)
.eq(SchBaseVehiclematerialgroup::getIs_delete, false); .eq(SchBaseVehiclematerialgroup::getIs_delete, false);
SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); List<SchBaseVehiclematerialgroup> selectOne = vehiclematerialgroupMapper.selectList(lambda);
return selectOne; return selectOne.size() > 0 ? selectOne.get(0) : null;
} }
@Override @Override
@ -128,8 +130,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value) .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value)
.eq(SchBaseVehiclematerialgroup::getIs_delete, false); .eq(SchBaseVehiclematerialgroup::getIs_delete, false);
SchBaseVehiclematerialgroup selectOne = vehiclematerialgroupMapper.selectOne(lambda); List<SchBaseVehiclematerialgroup> selectOne = vehiclematerialgroupMapper.selectList(lambda);
return selectOne; return selectOne.size() > 0 ? selectOne.get(0) : null;
} }
@Override @Override
@ -150,4 +152,18 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
this.updateBatchById(list); this.updateBatchById(list);
} }
@Override
public SchBaseVehiclematerialgroup getOneByVehicleCode(String vehicleCode, String value) {
List<String> list = new ArrayList<>();
list.add(GeneralDefinition.STEEL_TRAY);
list.add(GeneralDefinition.MATERIAL_CUP);
LambdaQueryWrapper<SchBaseVehiclematerialgroup> lambda = new QueryWrapper<SchBaseVehiclematerialgroup>().lambda();
lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, value)
.eq(SchBaseVehiclematerialgroup::getIs_delete, false)
.notIn(SchBaseVehiclematerialgroup::getVehicle_type, list);
List<SchBaseVehiclematerialgroup> selectOne = vehiclematerialgroupMapper.selectList(lambda);
return selectOne.size() > 0 ? selectOne.get(0) : null;
}
} }

10
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/controller/SchBasePointController.java

@ -1,5 +1,6 @@
package org.nl.wms.sch.point.controller; package org.nl.wms.sch.point.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -15,6 +16,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
/** /**
@ -80,4 +82,12 @@ public class SchBasePointController {
public ResponseEntity<Object> getPointList(@RequestBody(required = false) SchBasePoint region){ public ResponseEntity<Object> getPointList(@RequestBody(required = false) SchBasePoint region){
return new ResponseEntity<>(schBasePointService.getPointList(region),HttpStatus.OK); return new ResponseEntity<>(schBasePointService.getPointList(region),HttpStatus.OK);
} }
@Log("锁定与解锁")
@PostMapping("/changeLock")
@ApiOperation("锁定与解锁")
public ResponseEntity<Object> changeLock(@RequestBody JSONObject points) {
schBasePointService.changeLock(points);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
} }

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java

@ -56,4 +56,9 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
*/ */
List<SchBasePoint> getPointList(SchBasePoint region); List<SchBasePoint> getPointList(SchBasePoint region);
/**
* 解锁/上锁
* @param points
*/
void changeLock(JSONObject points);
} }

19
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/impl/SchBasePointServiceImpl.java

@ -31,10 +31,10 @@ import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @description 服务实现 * @author lyd
* @author lyd * @description 服务实现
* @date 2023-05-15 * @date 2023-05-15
**/ **/
@Slf4j @Slf4j
@Service @Service
public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, SchBasePoint> implements ISchBasePointService { public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, SchBasePoint> implements ISchBasePointService {
@ -46,7 +46,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
private SchBaseRegionMapper regionMapper; private SchBaseRegionMapper regionMapper;
@Override @Override
public IPage<SchBasePoint> queryAll(Map whereJson, PageQuery page){ public IPage<SchBasePoint> queryAll(Map whereJson, PageQuery page) {
String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry")) String blurry = ObjectUtil.isNotEmpty(whereJson.get("blurry"))
? whereJson.get("blurry").toString() : null; ? whereJson.get("blurry").toString() : null;
String workshop_code = ObjectUtil.isNotEmpty(whereJson.get("workshop_code")) String workshop_code = ObjectUtil.isNotEmpty(whereJson.get("workshop_code"))
@ -194,4 +194,13 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
.eq(SchBasePoint::getIs_has_workder, true)); .eq(SchBasePoint::getIs_has_workder, true));
} }
@Override
public void changeLock(JSONObject points) {
JSONArray data = points.getJSONArray("data");
Boolean lockType = points.getBoolean("lock_type");
List<SchBasePoint> pointList = data.toJavaList(SchBasePoint.class);
pointList.forEach(point -> point.setIng_task_code(lockType ? "" : "-"));
this.updateBatchById(pointList);
}
} }

5
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJQLTask.java

@ -120,11 +120,6 @@ public class FJQLTask extends AbstractTask {
// 找起点 // 找起点
String requestParam = task.getRequest_param(); String requestParam = task.getRequest_param();
JSONObject extGroupData = JSONObject.parseObject(requestParam); JSONObject extGroupData = JSONObject.parseObject(requestParam);
// 如果工单上的真实数量达到,就不能呼叫满料过来
PdmBdWorkorder workOrder = workorderService.getByCode(extGroupData.getString("workorder_code"));
if (workOrder.getPlan_qty().equals(workOrder.getReal_qty())) {
throw new BadRequestException("工单【" + workOrder.getWorkorder_code() + "】已达数量");
}
extGroupData.put("vehicle_type", task.getVehicle_type()); extGroupData.put("vehicle_type", task.getVehicle_type());
SchBasePoint point = findStartPoint(startRegionStr, extGroupData); SchBasePoint point = findStartPoint(startRegionStr, extGroupData);
if (ObjectUtil.isEmpty(point)) { if (ObjectUtil.isEmpty(point)) {

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/FJSLTask.java

@ -161,7 +161,7 @@ public class FJSLTask extends AbstractTask {
throw new BadRequestException("找不到组盘信息"); throw new BadRequestException("找不到组盘信息");
} }
groupObject.setIs_full(false); groupObject.setIs_full(false);
groupObject.setMaterial_qty(param.getInteger(param.getString("qty"))); groupObject.setMaterial_qty(param.getInteger("qty"));
groupObject.setExt_data(JSONObject.toJSONString(stackParameters)); groupObject.setExt_data(JSONObject.toJSONString(stackParameters));
TaskUtils.setGroupUpdateByAcs(groupObject); TaskUtils.setGroupUpdateByAcs(groupObject);
vehiclematerialgroupService.updateById(groupObject); vehiclematerialgroupService.updateById(groupObject);

1
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java

@ -162,6 +162,7 @@ public class CYZCTask extends AbstractTask {
.or() .or()
.eq(SchBasePoint::getIng_task_code, "")) .eq(SchBasePoint::getIng_task_code, ""))
.eq(SchBasePoint::getIs_used, true) .eq(SchBasePoint::getIs_used, true)
.ne(SchBasePoint::getLayer_num, "3")
.orderByAsc(SchBasePoint::getIn_order_seq); .orderByAsc(SchBasePoint::getIn_order_seq);
List<SchBasePoint> schBasePoints = pointService.list(lam); List<SchBasePoint> schBasePoints = pointService.list(lam);
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;

164
lms/nladmin-system/nlsso-server/src/main/resources/config/application-test.yml

@ -1,64 +1,52 @@
server: server:
port: 8010 port: 8011
#配置数据源 #配置数据源
spring: spring:
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource: datasource:
druid: dynamic:
db-type: com.alibaba.druid.pool.DruidDataSource primary: mysql
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy datasource:
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:ndxy3_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true mysql:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.93.41.198}:${DB_PORT:3306}/${DB_NAME:rl_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
# username: ${DB_USER:root}
# password: ${DB_PWD:123456}
url: jdbc:log4jdbc:mysql://${DB_HOST:101.37.151.193}:${DB_PORT:53306}/${DB_NAME:rt_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root} username: ${DB_USER:root}
password: ${DB_PWD:P@ssw0rd} password: ${DB_PWD:P@ssW0rd123}
# 初始连接数 type: com.alibaba.druid.pool.DruidDataSource
initial-size: 5 oracle:
# 最小连接数 driver-class-name: oracle.jdbc.OracleDriver
min-idle: 15 url: jdbc:oracle:thin:@172.27.37.66:1521:RTMES
# 最大连接数 username: ${DB_USER:LMSTELCOM}
max-active: 60 password: ${DB_PWD:LMSTELCOM_6463}
# 获取连接超时时间 type: com.alibaba.druid.pool.DruidDataSource
max-wait: 5000 sqlserver:
# 连接有效性检测时间 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
time-between-eviction-runs-millis: 60000 url: jdbc:sqlserver://10.93.41.2\WINCC;DatabaseName=马钢_RH
# 连接在池中最小生存的时间 username: ${DB_USER:sa}
min-evictable-idle-time-millis: 300000 password: ${DB_PWD:123}
# 连接在池中最大生存的时间 type: com.alibaba.druid.pool.DruidDataSource
max-evictable-idle-time-millis: 900000
# 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
test-while-idle: true
# 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
test-on-borrow: true
# 是否在归还到池中前进行检验
test-on-return: false
# 检测连接是否有效
validation-query: select 1
# 配置监控统计
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
# 控制台管理用户名和密码
url-pattern: /druid/*
reset-enable: false
login-username: admin
login-password: 123456
filter:
stat:
enabled: true
# 记录慢SQL
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
redis: redis:
#数据库索引 #数据库索引
database: ${REDIS_DB:15}
host: ${REDIS_HOST:127.0.0.1} host: ${REDIS_HOST:127.0.0.1}
port: ${REDIS_PORT:6379} port: ${REDIS_PORT:6379}
password: ${REDIS_PWD:} password: ${REDIS_PWD:}
#连接超时时间 redisson:
timeout: 5000 config: |
threads: 4
nettyThreads: 4
singleServerConfig:
database: 3
connectionMinimumIdleSize: 8
connectionPoolSize: 8
address: redis://127.0.0.1:6379
idleConnectionTimeout: 10000
timeout: 3000
# 登录相关配置 # 登录相关配置
login: login:
# 登录缓存 # 登录缓存
@ -77,47 +65,22 @@ login:
heigth: 36 heigth: 36
# 内容长度 # 内容长度
length: 2 length: 2
# 字体名称,为空则使用默认字体,如遇到线上乱码,设置其他字体即可 # 字体名称,为空则使用默认字体
font-name: font-name:
# 字体大小 # 字体大小
font-size: 25 font-size: 25
#jwt
jwt:
header: Authorization
# 令牌前缀
token-start-with: Bearer
# 必须使用最少88位的Base64对该令牌进行编码
base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI=
# 令牌过期时间 此处单位/毫秒 ,默认2小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html
token-validity-in-seconds: 7200000
# 在线用户key
online-key: online-token-
# 验证码
code-key: code-key-
# token 续期检查时间范围(默认30分钟,单位默认毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期
detect: 1800000
# 续期时间范围,默认 1小时,这里单位毫秒
renew: 3600000
# IP 本地解析
ip:
local-parsing: true
#是否允许生成代码,生产环境设置为false #是否允许生成代码,生产环境设置为false
generator: generator:
enabled: false enabled: true
#如果生产环境要开启swagger,需要配置请求地址
#springfox:
# documentation:
# swagger:
# v2:
# host: # 接口域名或外网ip
#是否开启 swagger-ui #是否开启 swagger-ui
swagger: swagger:
enabled: false enabled: true
# IP 本地解析
ip:
local-parsing: true
# 文件存储路径 # 文件存储路径
file: file:
@ -135,7 +98,7 @@ file:
avatarMaxSize: 5 avatarMaxSize: 5
logging: logging:
file: file:
path: /app/jar/logs path: C:\log\wms
config: classpath:logback-spring.xml config: classpath:logback-spring.xml
# Sa-Token配置 # Sa-Token配置
@ -157,3 +120,36 @@ sa-token:
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
# token 前缀 # token 前缀
token-prefix: Bearer token-prefix: Bearer
sso:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
# 所有允许的授权回调地址
allow-url: "*"
# 是否打开单点注销功能
is-slo: true
# ------- SSO-模式三相关配置 (下面的配置在SSO模式三并且 is-slo=true 时打开)
# 是否打开模式三
isHttp: true
# 接口调用秘钥(用于SSO模式三的单点注销功能)
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
# ---- 除了以上配置项,你还需要为 Sa-Token 配置http请求处理器(文档有步骤说明)
is-read-cookie: true
is-print: false
# 未登录 StpUtil.getTokenSession() 设置值,获取值 @SaIgnore 得忽略接口
token-session-check-login: false
alone-redis:
# Redis数据库索引(默认为0)
database: 1
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码(默认为空)
password:
# 连接超时时间
timeout: 10s
lucene:
index:
path: D:\lucene\index

1
lms/nladmin-system/nlsso-server/src/main/resources/stopword.dic

@ -1255,3 +1255,4 @@ $
压机产出返给MES的数据 压机产出返给MES的数据
反馈压机产出插入mes数据库失败 反馈压机产出插入mes数据库失败
插入压机检测失败 插入压机检测失败
包装数据

2
lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue

@ -231,7 +231,7 @@
v-for="item in custerList" v-for="item in custerList"
:key="item.custer_NO" :key="item.custer_NO"
:label="item.custer_NAME" :label="item.custer_NAME"
:value="item.custer_NO" :value="item.custer_NAME"
> >
<span style="float: left">{{ item.custer_NO }}</span> <span style="float: left">{{ item.custer_NO }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.custer_NAME }}</span> <span style="float: right; color: #8492a6; font-size: 13px">{{ item.custer_NAME }}</span>

33
lms/nladmin-ui/src/views/wms/sch/point/index.vue

@ -134,6 +134,30 @@
> >
禁用 禁用
</el-button> </el-button>
<el-button
v-if="!crud.query.lock_type"
slot="right"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-circle-check"
:disabled="crud.selections.length === 0"
@click="changeLock(crud.selections)"
>
锁定
</el-button>
<el-button
v-if="crud.query.lock_type"
slot="right"
class="filter-item"
size="mini"
type="danger"
icon="el-icon-circle-close"
:disabled="crud.selections.length === 0"
@click="changeLock(crud.selections)"
>
解锁
</el-button>
</crudOperation> </crudOperation>
<!--表单组件--> <!--表单组件-->
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="540px"> <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="540px">
@ -505,6 +529,15 @@ export default {
this.crud.query.point_type = null this.crud.query.point_type = null
this.crud.query.point_status = null this.crud.query.point_status = null
this.hand() this.hand()
},
changeLock(data) {
const param = {}
param.data = data
param.lock_type = this.crud.query.lock_type
crudSchBasePoint.changeLock(param).then(res => {
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
} }
} }
} }

10
lms/nladmin-ui/src/views/wms/sch/point/schBasePoint.js

@ -40,4 +40,12 @@ export function getPointList(data) {
}) })
} }
export default { add, edit, del, changeUsed, getPointList } export function changeLock(data) {
return request({
url: 'api/schBasePoint/changeLock',
method: 'post',
data: data
})
}
export default { add, edit, del, changeUsed, getPointList, changeLock }

Loading…
Cancel
Save