Compare commits

..

8 Commits

Author SHA1 Message Date
zhangzq
190f21d99b opt:优化结构 2026-04-23 20:04:51 +08:00
340355a66b opt:印尼打印功能新增子卷 2026-04-23 17:00:10 +08:00
b166d27960 opt:基础功能优化 2026-04-23 14:13:50 +08:00
a8179a54ad opt:数据库地址调整 2026-04-23 14:10:17 +08:00
4b58375671 opt:印尼海亮优化 2026-03-04 14:46:18 +08:00
ls
5dd197c974 入库测试 2026-02-28 13:32:41 +08:00
ls
21cdb6963d Merge remote-tracking branch 'origin/master' 2026-02-25 17:24:23 +08:00
ls
99c8ac4847 装箱测试 2026-02-25 17:23:12 +08:00
42 changed files with 449 additions and 252 deletions

View File

@@ -65,7 +65,7 @@
<version>0.0.1</version>
<scope>system</scope>
<systemPath>
${project.basedir}/libs/language-all.jar
${project.basedir}/libs/language-all-0.0.1.jar
</systemPath>
<!-- 移除 system 范围,使用默认的 compile 范围 -->
</dependency>

View File

@@ -37,7 +37,7 @@ public enum BoxStackEnum {
STOCK_UP_STATUS(MapOf.of("未开始", "1", "执行中", "2", "完成", "3")),
//木箱库区域
POINT_STATUS(MapOf.of("密集区", "1", "零散区", "2", "缓存区", "3", "等待区", "4","对接区", "5"));
POINT_STATUS(MapOf.of("密集区", "1", "零散区", "2", "缓存区", "3", "等待区", "4","木箱对接区", "5","木箱退货区", "6"));
private Map<String, String> code;

View File

@@ -67,23 +67,25 @@ public class VehicleTwoController {
@PostMapping("/updatePackageInfo")
@Log("一楼待检区-管制区子卷质检")
@Log("待检区-子卷质检")
@SaIgnore
public ResponseEntity<Object> updatePackageInfo(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(bstIvtPackageInfoIvtService.update(whereJson), HttpStatus.OK);
bstIvtPackageInfoIvtService.updateQC(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/updatePackageInfo2")
@Log("一楼待检区-管制点管理")
@Log("待检区-地面点管理")
@SaIgnore
public ResponseEntity<Object> updatePackageInfo2(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(bstIvtPackageInfoIvtService.update2(whereJson), HttpStatus.OK);
bstIvtPackageInfoIvtService.allReginPoint(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/toEndSub")
@Log("二期子卷包装解绑")
@Log("子卷包装解绑")
@SaIgnore
public ResponseEntity<Object> toEndSub(@RequestBody JSONObject whereJson) {
Map result = subpackagerelationService.toEndSubpackagerelation(whereJson.getString("container_name"));

View File

@@ -244,16 +244,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
}
}
//是否开启mes
String isOnMes = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_on_mes").getValue();
if (isOnMes.equals("1")) {
// 调用方法获取木箱料号:输入:子卷号、输出:木箱信息
r.setBox_type("");
PdmBiOrderbominfo bomInfoDao = iPdmBiOrderbominfoService.getBiOrderbominfoByContainer(r.getContainer_name());
if (ObjectUtil.isNotEmpty(bomInfoDao)) {
r.setBox_type(bomInfoDao.getProductName());
}
// 调用方法获取木箱料号:输入:子卷号、输出:木箱信息
r.setBox_type("");
PdmBiOrderbominfo bomInfoDao = iPdmBiOrderbominfoService.getBiOrderbominfoByContainer(r.getContainer_name());
if (ObjectUtil.isNotEmpty(bomInfoDao)) {
r.setBox_type(bomInfoDao.getProductName());
}
});
return pdmBiSubpackagerelationList;
}
@@ -281,9 +279,9 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
}
/**
* 子卷装箱
*
* @param whereJson 分配信息
* 子卷装箱
* 提前呼叫木箱,将子卷送到装箱区域
* 子卷可以多卷装一箱所以扫码时会扫多卷
*/
@Override
@Transactional(rollbackFor = Exception.class)
@@ -484,12 +482,14 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
List<BstIvtBoxstack> bstIvtBoxstacks = boxstackMapper.selectList(new QueryWrapper<BstIvtBoxstack>()
.eq("box_spec", whereJson.getString("checked"))
.gt("current_layer_count", 0)
.eq("point_status", BoxStackEnum.POINT_STATUS.code("对接区"))
.eq("point_status", BoxStackEnum.POINT_STATUS.code("木箱对接区"))
.orderByAsc("update_time"));
if (CollUtil.isEmpty(bstIvtBoxstacks)) {
// 查询缓存区木箱,先送数量少的
List<BstIvtBoxstack> bstIvtBoxstacks1 = boxstackMapper.selectList(new QueryWrapper<BstIvtBoxstack>().eq("box_spec", whereJson.getString("checked"))
.eq("point_status", BoxStackEnum.POINT_STATUS.code("缓存区")).orderByAsc("current_layer_count"));
List<BstIvtBoxstack> bstIvtBoxstacks1 = boxstackMapper.selectList(new QueryWrapper<BstIvtBoxstack>()
.eq("box_spec", whereJson.getString("checked"))
.eq("point_status", BoxStackEnum.POINT_STATUS.code("缓存区"))
.orderByAsc("current_layer_count"));
if (CollUtil.isEmpty(bstIvtBoxstacks1)) {
throw new BadRequestException("缓存区无可用木箱,请新建备货计划");
}
@@ -510,7 +510,8 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
} else {
createTask(whereJson, bstIvtBoxstacks1);
}
} else {
}
else {
InBoxTrussTask inBoxTrussTask = new InBoxTrussTask();
JSONObject taskParam = new JSONObject();

View File

@@ -67,18 +67,18 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
*
* @param whereJson /
*/
JSONObject update(JSONObject whereJson);
void updateQC(JSONObject whereJson);
/**
* 管制点管理
* 整体区域点管理
*
* @param whereJson /
*/
JSONObject update2(JSONObject whereJson);
void allReginPoint(JSONObject whereJson);

View File

@@ -376,172 +376,95 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
/**
* 手持子卷质检
* 26-4-23变更
* 该功能之前包括管制点状态设置,子卷质检设置,先功能只包含子卷质检设置,点位设置需另外开发
*/
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject update(JSONObject whereJson) {
public void updateQC(JSONObject whereJson) {
JSONObject result = new JSONObject();
if (StringUtils.isBlank(whereJson.getString("ivt_status"))) {
throw new BadRequestException("子卷检验结果为空");
}
//"空","0","空载具","1","有子卷","2","合格品","3","管制品","4",人工卷,"5"
List<BstIvtPackageinfoivt> dtoList;
final String containerName = whereJson.getString("container_name");
if (StringUtils.isEmpty(containerName)){
throw new BadRequestException("container_name不能为空");
}
//"合格品","3","管制品","4"
UpdateWrapper<BstIvtPackageinfoivt> updateWrapper = new UpdateWrapper<>();
JSONObject jo = new JSONObject();
//是否开启mes
String isOnMes = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_on_mes").getValue();
//是否开启mes质检
String isOnMes = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_mes_package").getValue();
//子卷质检合格品和管制品
if (StringUtils.isNotBlank(whereJson.getString("container_name"))) {
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))) {
throw new BadRequestException("质检结果只能为合格品或管制品");
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
PdmBiSubpackagerelation one = subpackagerelationService.getOne(new QueryWrapper<PdmBiSubpackagerelation>()
.eq("container_name", containerName));
if (one!=null){
throw new BadRequestException("包装关系存在,请先解绑MES及LMS包装关系");
}
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
PdmBiSubpackagerelation one = subpackagerelationService.getOne(new QueryWrapper<PdmBiSubpackagerelation>()
.eq("container_name", whereJson.getString("container_name")));
if (one!=null){
if (isOnMes.equals(IOSEnum.IS_NOTANDYES.code(""))) {
throw new BadRequestException("包装关系存在,请先解绑MES及LMS包装关系");
}else {
throw new BadRequestException("包装关系存已存在");
}
}
}
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getContainer_name, whereJson.getString("container_name")));
if (ObjectUtils.isEmpty(dtoList)) {
throw new BadRequestException("子卷号或点位信息有误,请核对是否存在!");
}
if (dtoList.size() > 1) {
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
result.put("message", "存在多个相同子卷号或点位信息有误,请核对是否存在!");
return result;
}
BstIvtPackageinfoivt packageinfoivt = dtoList.get(0);
String pointCode = packageinfoivt.getPoint_code();
if (pointCode.equals("ZXQ_135") || pointCode.equals("ZXQ_136")) {
throw new BadRequestException("管制点设置子卷状态时需要选择点位");
}
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
if (packageinfoivt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))){
throw new BadRequestException("当前子卷已设置为管制品");
}
//获取子卷最新信息
jo.put("container_name", whereJson.getString("container_name"));
//TODO:子卷下料信息MES传递给LMS
if (isOnMes.equals(IOSEnum.IS_NOTANDYES.code(""))) {
lmsToMesService.getInspectionResult(jo);
//子卷下料信息MES传递给LMS
iPdmBiContainerinfoService.createSubInfoByContainer(whereJson.getString("container_name"));
} else {
packageData(whereJson);
}
}
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZJ,MapOf.of("质检结果",whereJson.getString("ivt_status")),Boolean.TRUE,null, packageinfoivt.getContainer_name());
updateWrapper.set("container_name", packageinfoivt.getContainer_name());
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
} else {
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
result.put("message", "请输入子卷号或管制点位信息!");
return result;
}
String pointCode = dtoList.get(0).getPoint_code();
if (dtoList.get(0).getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))){
throw new BadRequestException("满轴缓存位无法设置子卷状态");
BstIvtPackageinfoivt packageinfoivt = this.getOne(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getContainer_name, containerName));
if (packageinfoivt == null) {
throw new BadRequestException("子卷号或点位信息有误,请核对是否存在!");
}
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(packageinfoivt.getPoint_code());
if (!CollectionUtils.isEmpty(schBaseTasks)){
throw new BadRequestException("当前点位"+dtoList.get(0).getPoint_name()+"正在执行搬运任务"+schBaseTasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
throw new BadRequestException("当前点位"+packageinfoivt.getPoint_code()+"正在执行搬运任务"+schBaseTasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
updateWrapper.eq("point_code", pointCode);
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
if (packageinfoivt.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))){
throw new BadRequestException("当前子卷已设置为管制品");
}
//获取子卷最新信息
jo.put("container_name", containerName);
if (isOnMes.equals(IOSEnum.IS_NOTANDYES.code(""))) {
lmsToMesService.getInspectionResult(jo);
//子卷下料信息MES传递给LMS-同步子卷包装关系
iPdmBiContainerinfoService.createSubInfoByContainer(containerName);
}
}
updateWrapper.set("container_name", packageinfoivt.getContainer_name());
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
updateWrapper.eq("point_code", packageinfoivt.getPoint_code());
updateWrapper.set("update_optid", Long.valueOf(SecurityUtils.getCurrentUserId()));
updateWrapper.set("update_optname", SecurityUtils.getCurrentNickName());
updateWrapper.set("update_time", DateUtil.now());
bstIvtPackageinfoivtMapper.update(null, updateWrapper);
result.put("status", org.springframework.http.HttpStatus.OK.value());
result.put("message", "检验成功!");
return result;
PdmProductSpecServiceImpl.doRecord(SpecEnum.ZJ,MapOf.of("质检结果",whereJson.getString("ivt_status")),Boolean.TRUE,null, packageinfoivt.getContainer_name());
}
/**
* 整体子卷区域点管理
* 4-24变更
* 1.管制点作用:空载具拉回,点位释放,管制点不做复合动作
* 2.印尼管制区管制点为整个区域,需要通过扫码方式而不是选点
*/
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject update2(JSONObject whereJson) {
public void allReginPoint(JSONObject whereJson) {
//"空","0","空载具","1","有子卷","2"
JSONObject result = new JSONObject();
if (StringUtils.isBlank(whereJson.getString("ivt_status"))) {
throw new BadRequestException("子卷检验结果为空");
}
//"空","0","空载具","1","有子卷","2","合格品","3","管制品","4",人工卷,"5"
List<BstIvtPackageinfoivt> dtoList;
UpdateWrapper<BstIvtPackageinfoivt> updateWrapper = new UpdateWrapper<>();
JSONObject jo = new JSONObject();
//是否开启mes
String isOnMes = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("is_on_mes").getValue();
//复称
if (StringUtils.isNotBlank(whereJson.getString("container_name")) && StringUtils.isNotBlank(whereJson.getString("pointCode"))) {
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("pointCode").equals("1") ? "ZXQ_135" : "ZXQ_136"));
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品"))) {
//获取子卷最新信息
jo.put("container_name", whereJson.getString("container_name"));
if (isOnMes.equals(IOSEnum.IS_NOTANDYES.code(""))) {
lmsToMesService.getInspectionResult(jo);
//子卷下料信息MES传递给LMS
iPdmBiContainerinfoService.createSubInfoByContainer(whereJson.getString("container_name"));
} else {
packageData(whereJson);
}
updateWrapper.set("container_name", whereJson.getString("container_name"));
updateWrapper.set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("合格品"));
} else {
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
result.put("message", "该点位只能放复称的合格品!");
return result;
}
if (StringUtils.isNotBlank(whereJson.getString("pointCode"))){
throw new BadRequestException("子卷检验结果为空");
}
//取放空载具
else if (StringUtils.isNotBlank(whereJson.getString("pointCode")) && StringUtils.isBlank(whereJson.getString("container_name"))) {
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("合格品")) || whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("管制品"))) {
throw new BadRequestException("人工管制点只能设置空载具或空点位");
}
String pointCode = whereJson.getString("pointCode");
if (StringUtils.isEmpty(pointCode)){
throw new BadRequestException("人工管制点不能为空");
}
HashMap of = MapOf.of("1", "ZXQ_135", "2", "ZXQ_136");
// "ZXQ_135" : "ZXQ_136";
JSONObject task = new JSONObject();
task.put("point_code1", of.get(pointCode));
int count = taskService.count(new QueryWrapper<SchBaseTask>()
.eq("is_delete", "0")
.eq("point_code1", of.get(pointCode))
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
if (count>0){
throw new BadRequestException("当前人工管制点存在任务,稍后操作");
}
dtoList = bstIvtPackageinfoivtMapper.selectList(new LambdaQueryWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, whereJson.getString("pointCode").equals("1") ? "ZXQ_135" : "ZXQ_136"));
updateWrapper.set("container_name", null);
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
} else {
result.put("status", org.springframework.http.HttpStatus.BAD_REQUEST.value());
result.put("message", "请输入子卷号或管制点位信息!");
return result;
}
String pointCode = dtoList.get(0).getPoint_code();
if (dtoList.get(0).getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))){
throw new BadRequestException("满轴缓存位无法设置子卷状态");
}
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(whereJson.getString("pointCode"));
if (!CollectionUtils.isEmpty(schBaseTasks)){
throw new BadRequestException("当前点位"+dtoList.get(0).getPoint_name()+"正在执行搬运任务"+schBaseTasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
throw new BadRequestException("当前点位"+whereJson.getString("pointCode")+"正在执行搬运任务"+schBaseTasks.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
updateWrapper.eq("point_code", pointCode);
if (whereJson.getString("ivt_status").equals(PackageInfoIvtEnum.IVT_STATUS.code("有子卷"))
&& StringUtils.isEmpty(whereJson.getString("container_name"))) {
throw new BadRequestException("设置有子卷时需输入子卷号");
}
UpdateWrapper<BstIvtPackageinfoivt> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("container_name", whereJson.getString("container_name"));
updateWrapper.set("ivt_status", whereJson.getString("ivt_status"));
updateWrapper.eq("point_code", whereJson.getString("pointCode"));
updateWrapper.set("update_optid", Long.valueOf(SecurityUtils.getCurrentUserId()));
updateWrapper.set("update_optname", SecurityUtils.getCurrentNickName());
updateWrapper.set("update_time", DateUtil.now());
bstIvtPackageinfoivtMapper.update(null, updateWrapper);
result.put("status", org.springframework.http.HttpStatus.OK.value());
result.put("message", "检验成功!");
return result;
}

View File

@@ -75,7 +75,7 @@ public class AutoMxZxTask {
return;
}
//确定终点有位置生成agv任务 ,无位置生成移库任务
List<BstIvtBoxstack> bstIvtBoxstacks = boxstackMapper.selectAndNoTask( BoxStackEnum.POINT_STATUS.code("对接区"));
List<BstIvtBoxstack> bstIvtBoxstacks = boxstackMapper.selectAndNoTask( BoxStackEnum.POINT_STATUS.code("木箱对接区"));
if (CollectionUtil.isEmpty(bstIvtBoxstacks)){
//获取对接区没有任务的对接位
BstIvtBoxstack bstIvtBoxstack = new BstIvtBoxstack();

View File

@@ -0,0 +1,99 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.first_floor_area.GzqTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Slf4j
@Component
@RequiredArgsConstructor
public class AutoSendDjqToZxq extends Prun{
private final String THIS_CLASS = AutoSendDjqToZxq.class.getName();
@Resource
private RedissonClient redissonClient;
@Resource
private GzqTask gzqTask;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private BstIvtPackageinfoivtMapper bstIvtPackageinfoivtMapper;
@Resource
private IschBaseTaskService taskService;
//待检区->装箱区agv自动搬运任务
@Autowired
public void run() {
try {
this.sendDjqToGzq();
}catch (Exception ex){
log.error(ex.getMessage());
}
}
/**
* 普通任务
*/
@SneakyThrows
public void sendDjqToGzq() {
log.info(THIS_CLASS+"-待检区->装箱区定时任务开始执行扫描。");
RLock lock = redissonClient.getLock(THIS_CLASS);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
List<String> taskTypes = new ArrayList<>(Collections.singletonList(PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区")));
List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
if (existTask.size() > 2) {
return;
}
JSONObject task = new JSONObject();
//待检区有合格品且过滤未完成任务
List<BstIvtPackageinfoivt> selectEmpPoints = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("合格品"));
if (ObjectUtils.isEmpty(selectEmpPoints)) {
return;
}
//装箱区为空位且过滤未完成任务
List<BstIvtPackageinfoivt> gzqPackageinfoivtList = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("装箱区"), PackageInfoIvtEnum.IVT_STATUS.code(""));
if (ObjectUtils.isEmpty(gzqPackageinfoivtList)) {
return;
}
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("待检区->装箱区"));
task.put("vehicle_code", selectEmpPoints.get(0).getContainer_name());
task.put("point_code1", selectEmpPoints.get(0).getPoint_code());
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("普通任务"));
task.put("point_code2", gzqPackageinfoivtList.get(0).getPoint_code());
gzqTask.createTask(task);
} else {
log.info("待检区->装箱区任务正在创建被锁住。");
}
} finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
}
}

View File

@@ -67,7 +67,7 @@ public enum IOSEnum {
)),
//仓库id
STOR_ID(MapOf.of("二期", "1582991156504039455")),
STOR_ID(MapOf.of("印尼仓库", "1582991156504039424")),
//仓位锁定类型
LOCK_OPERATE(MapOf.of("入库锁定", "1","入库取消","2")),
@@ -79,7 +79,7 @@ public enum IOSEnum {
SECT_TYPE(MapOf.of("主存区", "00","暂存区","01","虚拟区","09")),
//库区
SECT_ID(MapOf.of("二期主存区", "1748219897940414464")),
SECT_ID(MapOf.of("印尼主存区", "2026561243103498240")),
//库存变动类型
IVT_CHANGE(MapOf.of("加待入", "31","加库存","33","减待入","32","加冻结","11","减冻结","12","减库存","21")),
@@ -113,10 +113,18 @@ public enum IOSEnum {
OUT_HANGER(MapOf.of("行架位1", "CK2013","行架位2", "CK2017")),
// 点位
POINT_CODE(MapOf.of("退货入库位", "THRKDJW1", "2020","CK2020", "2022","CK2022","木箱装箱位","CK2024")),
POINT_CODE(MapOf.of("退货入库位", "THRKDJW1", "2020","CK2020", "2022","CK2022","木箱装箱开盒盖","CK2024")),
//acs申请任务
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1","空盘入库","2","空盘出库","3","异常处理位","4","木箱入库","5","退货入库","6","贴标","1","捆扎","2","子卷装箱","7")),
ACSTOLMS_TYPE(MapOf.of("成品入库任务", "1"
,"空盘入库","2","空盘出库"
,"3","异常处理位","4"
,"木箱入库","5"
,"退货入库","6"
,"贴标","1"
,"捆扎","2"
,"木箱装箱开盒盖位","7"
,"退货异常申请行架对接位至NG位","9")),
// acs外部系统用户
EXT_ACS(MapOf.of("acs", "2","kc","康成")),

View File

@@ -519,7 +519,6 @@
sub.net_weight_convert,
sub.gross_weight_convert,
sub.warranty_expire_date,
replace(CONCAT( sub.thickness_request, '*', sub.width_standard ),'.0','') AS spec,
sub.thickness,
sub.box_weight,
sub.length,
@@ -686,7 +685,6 @@
sub.actual_value,
mst.remark,
sub.container_name,
replace(CONCAT( sub.thickness_request, '*', sub.width_standard ),'.0','') AS spec,
CONCAT( sub.box_length,'*',sub.box_width,'*',sub.box_high) AS box_size
FROM
(

View File

@@ -1676,11 +1676,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@@ -1812,11 +1812,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());

View File

@@ -366,11 +366,11 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
String heightLevel2 = iSysParamService.findByCode("height_level_2").getValue();
String box_high = "3";
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
attrParam.put("height", height);
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonObject.getString("sect_id")));
@@ -387,6 +387,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
JSONObject oneStruct = twoInBussManageService.getOneStruct(attrParam);
if (!ObjectUtil.isEmpty(oneStruct)) {
stIvtStructattr = oneStruct.toJavaObject(StIvtStructattr.class);
stIvtStructattrs.add(stIvtStructattr);
}
}

View File

@@ -263,7 +263,7 @@ public class InBussManageServiceImpl implements InBussManageService {
}
// 主表
JSONObject mst = new JSONObject();
mst.put("stor_id", IOSEnum.STOR_ID.code("二期"));
mst.put("stor_id", IOSEnum.STOR_ID.code("印尼仓库"));
mst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
mst.put("total_qty", pdmBiSubpackagerelations.stream().map(row -> Double.valueOf(row.getNet_weight())).reduce(Double::sum).orElse(0.00));
mst.put("detail_count", pdmBiSubpackagerelations.size());
@@ -338,8 +338,8 @@ public class InBussManageServiceImpl implements InBussManageService {
jsonDiv.put("checked", true);
jsonDiv.put("is_send", IOSEnum.IS_SEND.code(""));
jsonDiv.put("point_code", jsonObject.getString("device_code"));
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("二期主存区"));
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("二期"));
jsonDiv.put("sect_id", IOSEnum.SECT_ID.code("印尼主存区"));
jsonDiv.put("stor_id", IOSEnum.STOR_ID.code("印尼仓库"));
jsonDiv.put("material_barcode", jsonObject.getString("material_barcode"));
jsonDiv.put("vehicle_code", jsonObject.getString("vehicle_code"));
jsonDiv.put("vehicle_type", jsonObject.getString("vehicleType"));

View File

@@ -469,11 +469,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@@ -649,11 +649,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
moveParam.put("height", height);
moveParam.put("vehicle_type", boxDao.getVehicle_type());
@@ -783,11 +783,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
moveParam.put("height", height);
@@ -898,11 +898,11 @@ public class OutBussManageServiceImpl implements OutBussManageService {
String box_high = boxDao.getBox_high();
if (Integer.parseInt(box_high) <= Integer.parseInt(heightLevel1)) {
height = "'1','2','3'";
height = "1,2,3";
} else if (Integer.parseInt(box_high) > Integer.parseInt(heightLevel1) && Integer.parseInt(box_high) <= Integer.parseInt(heightLevel2)) {
height = "'2','3'";
height = "2,3";
} else {
height = "'3'";
height = "3";
}
moveParam.put("height", height);

View File

@@ -70,7 +70,7 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
String input = jsonObject.getString("height");
List<String> result = Arrays.asList(input.split("','"));
List<String> result = Arrays.asList(input.split(","));
LambdaQueryWrapper<StIvtStructattr> stIvtStructattrLambdaQueryWrapper = new LambdaQueryWrapper<>();

View File

@@ -212,4 +212,9 @@ public class MdCsCustomerBase implements Serializable {
* 内标打印模版
*/
private String bz_print_within;
/**
* 是否单卷单箱
*/
private String is_single_roll_single_box;
}

View File

@@ -142,7 +142,6 @@ public class MaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialBaseMapper,
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
dto.setMaterial_id(IdUtil.getSnowflake(1, 1).nextId());
dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName);
@@ -234,7 +233,7 @@ public class MaterialbaseServiceImpl extends ServiceImpl<MdMeMaterialBaseMapper,
}
return newParentArray;
}
@Override
public List<JSONObject> getMaterialAllByCodes(List<String> materialCodes) {
LambdaQueryWrapper<MdMeMaterialBase> lam = new LambdaQueryWrapper<>();

View File

@@ -16,7 +16,9 @@
AND IFNULL(attr.storagevehicle_code,'') = ''
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.storagevehicle_type = #{param.vehicle_type}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
</if>
<if test="param.not_in_block_num != '' and param.not_in_block_num != null ">
AND attr.block_num != #{param.block_num}
</if>
@@ -49,9 +51,9 @@
AND IFNULL(attr.storagevehicle_code,'') != ''
AND box.is_packing = '1'
<if test="param.block_in != null ">
AND attr.block_num in
<foreach collection="param.block_in" open="(" close=")" separator="," index="block_num">
<if test="param.block_in != null and param.block_in.size() > 0 ">
AND attr.block_num IN
<foreach collection="param.block_in" open="(" close=")" separator="," item="block_num">
#{block_num}
</foreach>
</if>
@@ -148,7 +150,9 @@
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.zdepth = '2'
AND attr.storagevehicle_type = #{param.vehicle_type}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
@@ -206,7 +210,9 @@
AND IFNULL(attr.storagevehicle_code,'') = ''
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.storagevehicle_type = #{param.vehicle_type}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">
#{height}
@@ -240,7 +246,9 @@
AND attr.is_delete = '0'
AND attr.stor_id = #{param.stor_id}
AND attr.sect_id = #{param.sect_id}
AND attr.storagevehicle_type = #{param.vehicle_type}
<if test="param.vehicle_type != '' and param.vehicle_type != null ">
AND attr.storagevehicle_type != #{param.vehicle_type}
</if>
AND attr.height in
<foreach collection="param.height" open="(" close=")" separator="," index="height">

View File

@@ -784,6 +784,7 @@
LEFT JOIN PDM_BI_SubPackageRelation sub ON ivt.pcsn = sub.container_name AND sub.status = '2' AND attr.storagevehicle_code = sub.package_box_sn
WHERE
attr.is_delete = '0'
AND ivt.canuse_qty <![CDATA[ <> ]]> '0'
AND attr.is_used = '1'
AND attr.storagevehicle_code = #{boxNo}
</select>

View File

@@ -69,8 +69,8 @@ public class Init implements ApplicationRunner {
String struct_code = "L" + row + "-" + col_num + "-" + layer_num + "";
JSONObject jsonObject = tab2.query("stor_id = '1582991156504039455'").uniqueResult(0);
JSONObject jsonObjec2 = tab3.query("stor_id = '1582991156504039455' and sect_code = 'BZC01'").uniqueResult(0);
JSONObject jsonObject = tab2.query("stor_id = '1582991156504039424'").uniqueResult(0);
JSONObject jsonObjec2 = tab3.query("stor_id = '1582991156504039424' and sect_code = 'NC02'").uniqueResult(0);
// 新增仓位
json.put("sect_id", jsonObjec2.getString("sect_id"));
@@ -286,8 +286,8 @@ public class Init implements ApplicationRunner {
json.put("struct_code", "91-"+i+"-01");
json.put("struct_name", "91排"+i+"列-01层");
}
JSONObject jsonObject = tab2.query("stor_id = '1597073830499717138'").uniqueResult(0);
JSONObject jsonObjec2 = tab3.query("stor_id = '1597073830499717138' and sect_code = 'XN91'").uniqueResult(0);
JSONObject jsonObject = tab2.query("stor_id = '1582991156504039424'").uniqueResult(0);
JSONObject jsonObjec2 = tab3.query("stor_id = '1582991156504039424' and sect_code = 'NC02'").uniqueResult(0);
// 新增仓位
json.put("simple_name", json.getString("struct_name"));

View File

@@ -84,6 +84,11 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
@Override
public Page queryVo(DeptQuery query, PageQuery pageQuery) {
if("true".equals(query.getIs_used())){
query.setIs_used("1");
} else {
query.setIs_used("0");
}
if (query.getPid_is_null() == null) {
if (query.getPid() == null) {
query.setPid_is_null(true);

View File

@@ -209,4 +209,9 @@ public class CustomerbaseDto implements Serializable {
* 内标打印模版
*/
private String bz_print_within;
/**
* 是否单卷单箱
*/
private String is_single_roll_single_box;
}

View File

@@ -1428,7 +1428,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
whereJson.put("material_barcode", material_barcodes);
inBussManageService.inTask(whereJson);
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("子卷装箱"))) {
} else if (type.equals(IOSEnum.ACSTOLMS_TYPE.code("木箱装箱开盒盖位"))) {
//校验
List<PdmBiSubpackagerelation> pdmBiSubpackagerelations = pdmBiSubpackagerelationMapper.selectList(new QueryWrapper<PdmBiSubpackagerelation>().eq("package_box_sn", whereJson.getString("material_barcode")).eq("status", "0"));
if (ObjectUtil.isEmpty(pdmBiSubpackagerelations)){
@@ -1441,7 +1441,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONObject jsonParam = new JSONObject();
jsonParam.put("start_device_code",whereJson.getString("device_code"));
jsonParam.put("next_device_code",IOSEnum.POINT_CODE.code("木箱装箱位"));
jsonParam.put("next_device_code",IOSEnum.POINT_CODE.code("木箱装箱开盒盖"));
jsonParam.put("vehicle_code2",mdPdStorageVehicleInfo.getStoragevehicle_code());
jsonParam.put("vehicle_code",whereJson.getString("material_barcode"));
jsonParam.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());

View File

@@ -161,7 +161,10 @@ public class FeedingServiceImpl implements FeedingService {
public JSONObject handleConfirm(JSONObject form) {
JSONObject json = form.getJSONObject("raw_jo");
String next_point_code = json.getString("point_code");
String container_name = json.getString("container_name");
String container_name = json.getString("parent_container_name");
if (StrUtil.isEmpty(container_name)){
container_name = json.getString("restruct_container_name");
}
StIvtCutpointivt cut_jo = stIvtCutpointivtMapper.selectOne(new LambdaQueryWrapper<StIvtCutpointivt>().eq(StIvtCutpointivt::getPoint_code, next_point_code));
if (ObjectUtil.isEmpty(cut_jo)) {
throw new BadRequestException("找不到分切机:" + next_point_code + "的点位!");

View File

@@ -96,6 +96,8 @@ public class PrintServiceImpl implements PrintService {
String nspector = "1";
//储存条件
String storage_conditions = "";
//子卷号
String container_name = "";
// 根据客户条件选择对应模板
JSONObject jsonCust = custTab.query("cust_code = '" + box_jo.getString("customer_name") + "' and is_delete = '0' and is_used = '1'").uniqueResult(0);
@@ -107,12 +109,17 @@ public class PrintServiceImpl implements PrintService {
throw new BadRequestException("请先设置客户打印模板");
}
String bz_print_no = jsonCust.getString("bz_print_no");
String is_single_roll_single_box = jsonCust.getString("is_single_roll_single_box");
double weight = 0;
JSONArray rows = WQL.getWO("PDA_ST_01").addParam("flag", "5").addParam("box_no", box_no).process().getResultJSONArray(0);
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.getJSONObject(i);
weight += row.getDoubleValue("net_weight");
if(i == 0 && "1".equals(is_single_roll_single_box) ){
container_name = row.getString("container_name");
}
}
// 生成txt文件
@@ -132,7 +139,7 @@ public class PrintServiceImpl implements PrintService {
fw = new FileWriter(filePath);
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
BufferedWriter bw = new BufferedWriter(write);
bw.write("bz_print_no,package_box_sn1,package_box_sn2,sale_order_name,product_description,product_name,width,pcsn,date_of_FG_inbound,box_weight,date_of_production,quanlity_in_box,quality_guaran_period,nspector,storage_conditions,weight,customer_name,customer_description,thickness,mass_per_unit_area,length,box_type,sap_pcsn,box_length,box_width,box_high,material_type,joint_type\n");
bw.write("bz_print_no,package_box_sn1,package_box_sn2,sale_order_name,product_description,product_name,width,pcsn,date_of_FG_inbound,box_weight,date_of_production,quanlity_in_box,quality_guaran_period,nspector,storage_conditions,container_name,weight,customer_name,customer_description,thickness,mass_per_unit_area,length,box_type,sap_pcsn,box_length,box_width,box_high,material_type,joint_type\n");
bw.write(bz_print_no + ","
+ package_box_sn1 + ","
@@ -149,6 +156,7 @@ public class PrintServiceImpl implements PrintService {
+ quality_guaran_period + ","
+ nspector + ","
+ storage_conditions + ","
+ container_name + ","
+ NumberUtil.round(weight, 2).toString() + "KG,"
+ box_jo.getString("customer_name") + ","
+ box_jo.getString("customer_description") + ","

View File

@@ -312,7 +312,7 @@ public class CoolCutTask extends AbstractAcsTask {
coolPointIvtMapper.updateById(jsonCoolIvt);
//更新母卷状态
RawfoilWorkOrder rawfoilWorkOrder = rawfoilWorkOrderMapper.selectOne(new LambdaQueryWrapper<RawfoilWorkOrder>().eq(RawfoilWorkOrder::getContainer_name, schBaseTask.getMaterial_code()));
RawfoilWorkOrder rawfoilWorkOrder = rawfoilWorkOrderMapper.selectOne(new LambdaQueryWrapper<RawfoilWorkOrder>().eq(RawfoilWorkOrder::getContainer_name, schBaseTask.getVehicle_code()));
rawfoilWorkOrder.setOrigin("3");
rawfoilWorkOrder.setRoll_status("3");
rawfoilWorkOrder.setUpdate_optid(currentUserId);

View File

@@ -444,13 +444,13 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
queryWrapper.eq("container_name", container_name);
}
if (StrUtil.isNotEmpty(bill_code)) {
queryWrapper.eq("bill_code", bill_code);
queryWrapper.eq("sale_order_name", bill_code);
}
if (StrUtil.isNotEmpty(sap_pcsn)) {
queryWrapper.eq("sap_pcsn", sap_pcsn);
}
if (StrUtil.isNotEmpty(material_search)) {
queryWrapper.like("material_search", material_search);
queryWrapper.like("product_name", material_search);
}
if (StrUtil.isNotEmpty(begin_time)) {
String beginDate = begin_time.substring(0, 10);

View File

@@ -230,7 +230,10 @@ public class StorPublicServiceImpl implements StorPublicService {
double ivt_qty = jo_in.getDoubleValue("ivt_qty");
double canuse_qty = NumberUtil.sub(jo_in.getDoubleValue("canuse_qty"), change_qty);
if (canuse_qty < 0) {
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative1"));
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative1")
+ "库存数:" + jo_in.getString("canuse_qty")
+ "变更数:" + change_qty
+ "物料标识:" + material_id_In);
}
jo_in.put("canuse_qty", canuse_qty);
jo_in.put("frozen_qty", jo_in.getDoubleValue("frozen_qty") + change_qty);
@@ -313,7 +316,10 @@ public class StorPublicServiceImpl implements StorPublicService {
throw new BadRequestException(LangBehavior.language("system.inputDataException"));
}
if (jo_in.getDoubleValue("canuse_qty") < 0) {
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative2"));
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative2")
+ "可用数:" + jo_in.getString("canuse_qty")
+ "变更数:" + change_qty
+ "物料标识:" + material_id_In);
}
structivtService.updateById(jo_in.toJavaObject(StIvtStructivt.class));
} else {
@@ -339,7 +345,10 @@ public class StorPublicServiceImpl implements StorPublicService {
throw new BadRequestException(LangBehavior.language("system.stockNumNotNegative"));
}
if (jo_in.getDoubleValue("canuse_qty") < 0) {
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative2"));
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative2")
+ "可用数:" + jo_in.getString("canuse_qty")
+ "变更数:" + change_qty
+ "物料标识:" + material_id_In);
}
structivtService.updateById(jo_in.toJavaObject(StIvtStructivt.class));
} else {
@@ -403,7 +412,10 @@ public class StorPublicServiceImpl implements StorPublicService {
throw new BadRequestException(LangBehavior.language("system.stockNumNotNegative"));
}
if (jo_in.getDoubleValue("canuse_qty") < 0) {
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative2"));
throw new BadRequestException(LangBehavior.language("system.availableNumNotNegative2")
+ "可用数:" + jo_in.getString("canuse_qty")
+ "变更数:" + change_qty
+ "物料标识:" + material_id_In);
}
structivtService.updateById(jo_in.toJavaObject(StIvtStructivt.class));
} else {

View File

@@ -667,31 +667,32 @@ public class InBillQueryServiceImpl implements InBillQueryService {
for (int i = 0; i < inBillPageVos.size(); i++) {
InBillPageVo billPageVo = inBillPageVos.get(i);
Map<String, Object> mp = new LinkedHashMap<>();
mp.put("成品卷号 \nSub-roll number", billPageVo.getContainer_name());
mp.put("入库日期\nWarehousing date", billPageVo.getConfirm_time());
mp.put("装箱日期\nPacking date", billPageVo.getDate_of_production().replace("-", "/"));
mp.put("客户名称\nCustomer name", billPageVo.getCustomer_description());
mp.put("成品卷号", billPageVo.getContainer_name());
mp.put("入库日期", billPageVo.getConfirm_time());
mp.put("装箱日期", billPageVo.getDate_of_production().replace("-", "/"));
mp.put("客户名称", billPageVo.getCust_name());
try {
mp.put("订单号\nPO number", billPageVo.getSale_order_name().substring(0, billPageVo.getSale_order_name().indexOf("-")));
mp.put("订单号", billPageVo.getSale_order_name().substring(0, billPageVo.getSale_order_name().indexOf("-")));
} catch (Exception e) {
mp.put("订单号\nPO number", billPageVo.getSale_order_name());
mp.put("订单号", billPageVo.getSale_order_name());
}
mp.put("批号\nBatch number", billPageVo.getCustomer_batch_number());
mp.put("物料号\nMaterial number", billPageVo.getCustomer_material_code());
mp.put("箱号\nBox number", billPageVo.getBox_no());
mp.put("客户箱号/序列号\nCustomer Box number/Serial number", billPageVo.getBox_customer_sn() );
mp.put("客户卷号\nCustomer Roll Number", billPageVo.getCustomer_roll_name());
mp.put("客户要求厚度\n", billPageVo.getThickness_request());
mp.put("客户要求幅宽\n", billPageVo.getWidth_standard());
mp.put("规格\nSpec", billPageVo.getSpec());
mp.put("子卷净重\nRoll net weight", NumberUtil.round(StrUtil.isEmpty(billPageVo.getNet_weight()) ? "0" : billPageVo.getNet_weight(), 1));
mp.put("米数(长度)\nLength", NumberUtil.round(StrUtil.isEmpty(billPageVo.getLength()) ? "0" : billPageVo.getLength(), 1));
mp.put("净重合计\nTotal net weight",billPageVo.getTotal_net_weight());
mp.put("重合计\nTotal gross weight", NumberUtil.round(StrUtil.isEmpty(billPageVo.getBox_weight()) ? "0" : billPageVo.getBox_weight(), 1));
mp.put("备注\n", billPageVo.getRoll_remark());
mp.put("净重转换\nnet weight convert",billPageVo.getNet_weight_convert());
mp.put("重转换\ngross weight convert",billPageVo.getGross_weight_convert());
mp.put("质保截止日期\n",billPageVo.getWarranty_expire_date());
mp.put("批号", billPageVo.getCustomer_batch_number());
mp.put("物料号", billPageVo.getCustomer_material_code());
mp.put("箱号", billPageVo.getBox_no());
mp.put("客户箱号/序列号", billPageVo.getBox_customer_sn() );
mp.put("客户卷号", billPageVo.getCustomer_roll_name());
mp.put("客户要求厚度", billPageVo.getThickness_request());
mp.put("客户要求幅宽", String.format("%.0f", Double.parseDouble(billPageVo.getWidth_standard())));
//怎么取 现在还不明确
mp.put("规格", billPageVo.getThickness_request());
mp.put("子卷净重", NumberUtil.round(StrUtil.isEmpty(billPageVo.getNet_weight()) ? "0" : billPageVo.getNet_weight(), 1));
mp.put("米数(长度)", NumberUtil.round(StrUtil.isEmpty(billPageVo.getLength()) ? "0" : billPageVo.getLength(), 1));
mp.put("重合计",billPageVo.getTotal_net_weight());
mp.put("毛重合计", NumberUtil.round(StrUtil.isEmpty(billPageVo.getBox_weight()) ? "0" : billPageVo.getBox_weight(), 1));
mp.put("备注", billPageVo.getRoll_remark());
mp.put("重转换",billPageVo.getNet_weight_convert());
mp.put("毛重转换",billPageVo.getGross_weight_convert());
mp.put("质保截止日期",billPageVo.getWarranty_expire_date());
list.add(mp);
}

View File

@@ -43,9 +43,9 @@ spring:
reset-enable: false
filters:
DruidFilter,stat
url: jdbc:mysql://localhost:3306/lanzhou_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.81.251:3306/yinni_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
username: root
password: 123456
password: P@ssw0rd.
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -84,9 +84,9 @@ spring:
reset-enable: false
filters:
DruidFilter,stat
url: jdbc:mysql://127.0.0.1:3306/lanzhou_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.81.251:3306/yinni_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
username: root
password: 123456
password: P@ssw0rd.
rules:
readwrite-splitting:
data-sources:

View File

@@ -43,9 +43,9 @@ spring:
reset-enable: false
filters:
DruidFilter,stat
url: jdbc:mysql://localhost:3306/ynhl_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.81.251:3306/yinni_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
username: root
password: password
password: P@ssw0rd.
slave:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -84,9 +84,9 @@ spring:
reset-enable: false
filters:
DruidFilter,stat
url: jdbc:mysql://127.0.0.1:3306/ynhl_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.81.251:3306/yinni_lms?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
username: root
password: password
password: P@ssw0rd.
rules:
readwrite-splitting:
data-sources:

View File

@@ -49,6 +49,26 @@ var config = {
"mesErrorTitle": "MES Error"
},
"common": {
"siteAlreadySet":"Site already set",
"outboundAllocation":"Outbound Allocation",
"allocateAll":"Allocate All",
"cancelAll":"Cancel All",
"autoAllocate":"Auto Allocate",
"autoCancel":"Auto Cancel",
"manualAllocate":"Manual Allocate",
"oneClickSetting":"One-Click Setting",
"allocationDetails":"Allocation Details",
"outboundPoint":"Outbound Point",
"setSite":"Set Site",
"saveChanges":"Save Changes",
"doNotShipOverdue":"Do not ship overdue items",
"shipOverdue":"Ship overdue items",
"isAbnormalOutbound":"Abnormal outbound",
"allocationSuccessful":"Allocation successful",
"pleaseSelectSiteFirst":"Please select a site first",
"siteHasBeenSet":"Site has been set",
"settingSuccessful":"Setting successful",
"taskAlreadyGenerated":"Task has been generated",
"warranty_expire_date":"warranty expire date",
"spec": "Specification",
"warehousing_time": "Warehousing Time",
@@ -3626,6 +3646,7 @@ var config = {
"topCategoryCannotBeEmpty": "Is Top Category cannot be empty"
},
"customer": {
"isSingleRollSingleBox": "Is single roll single box",
"enterCustomerCodeOrName": "Enter customer code or name",
"customerCode": "Customer Code",
"customerName": "Customer Name",

View File

@@ -48,6 +48,26 @@ var config = {
"load_text5": "Hanya dapat mengunggah satu file excel!"
},
"common": {
"siteAlreadySet":"Situs sudah diatur",
"outboundAllocation":"Alokasi Pengeluaran",
"allocateAll":"Alokasi Semua",
"cancelAll":"Batalkan Semua",
"autoAllocate":"Alokasi Otomatis",
"autoCancel":"Pembatalan Otomatis",
"manualAllocate":"Alokasi Manual",
"oneClickSetting":"Pengaturan Satu Klik",
"allocationDetails":"Detail Alokasi",
"outboundPoint":"Titik Pengeluaran",
"setSite":"Atur Situs",
"saveChanges":"Simpan Perubahan",
"doNotShipOverdue":"Jangan kirim yang terlambat",
"shipOverdue":"Kirim yang terlambat",
"isAbnormalOutbound":"Pengeluaran abnormal",
"allocationSuccessful":"Alokasi berhasil",
"pleaseSelectSiteFirst":"Silakan pilih situs terlebih dahulu",
"siteHasBeenSet":"Situs telah diatur",
"settingSuccessful":"Pengaturan berhasil",
"taskAlreadyGenerated":"Tugas telah dibuat",
"warranty_expire_date":"Tanggal Berakhir Garansi",
"spec": "Spesifikasi",
"warehousing_time": "Waktu Pemasukan Gudang",
@@ -3586,6 +3606,7 @@ var config = {
"topCategoryCannotBeEmpty": "Apakah kategori teratas tidak boleh kosong"
},
"customer": {
"isSingleRollSingleBox": "Apakah satu gulung per kotak",
"enterCustomerCodeOrName": "Masukkan kode atau nama pelanggan",
"customerCode": "Kode Pelanggan",
"customerName": "Nama Pelanggan",

View File

@@ -93,6 +93,26 @@ var config = {
"correspondingDeepLocationError": "对应的深货位错误!"
},
"common": {
"siteAlreadySet":"站点已设置",
"outboundAllocation":"出库分配",
"allocateAll":"全部分配",
"cancelAll":"全部取消",
"autoAllocate":"自动分配",
"autoCancel":"自动取消",
"manualAllocate":"手工分配",
"oneClickSetting":"一键设置",
"allocationDetails":"分配明细",
"outboundPoint":"出库点",
"setSite":"设置站点",
"saveChanges":"保存修改",
"doNotShipOverdue":"不发超期",
"shipOverdue":"发超期",
"isAbnormalOutbound":"是否异常出库",
"allocationSuccessful":"",
"pleaseSelectSiteFirst":"请先选择站点",
"siteHasBeenSet":"站点已设置",
"settingSuccessful":"设置成功",
"taskAlreadyGenerated":"任务已生成",
"warranty_expire_date":"质保截止日期",
"spec":"规格",
"warehousing_time":"入库时间",
@@ -3670,6 +3690,7 @@ var config = {
"topCategoryCannotBeEmpty": "是否顶级分类不能为空"
},
"customer": {
"isSingleRollSingleBox": "是否单卷单箱",
"enterCustomerCodeOrName": "输入客户编码或名称",
"customerCode": "客户编码",
"customerName": "客户名称",

View File

@@ -22,7 +22,7 @@ import './assets/styles/index.scss'
import i18n from './i18n'
import { fetchMessages } from '@/api/i18n' // 有一个API模块来获取语言文件
// 当前语言可以从本地存储、用户设置或URL参数中获取
const currentLocale = localStorage.getItem('lang')
const currentLocale = localStorage.getItem('lang') || 'zh'
// 代码高亮
import VueHighlightJS from 'vue-highlightjs'
import 'highlight.js/styles/atom-one-dark.css'

View File

@@ -70,7 +70,6 @@ export default {
data() {
return {
language: '简体中文',
title: i18n.t('platform.title'),
title_param: 'platform',
Background: Background,
codeUrl: '',
@@ -91,6 +90,11 @@ export default {
redirect: undefined
}
},
computed: {
title() {
return this.$t('platform.title')
}
},
watch: {
$route: {
handler: function(route) {

View File

@@ -135,6 +135,12 @@
<el-radio v-model="form.is_auto_table" label="1">{{ $t('wms.basedata.master.customer.yes') }}</el-radio>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('wms.basedata.master.customer.isSingleRollSingleBox')" prop="is_single_roll_single_box">
<el-radio v-model="form.is_single_roll_single_box" label="0">{{ $t('wms.basedata.master.customer.no') }}</el-radio>
<el-radio v-model="form.is_single_roll_single_box" label="1">{{ $t('wms.basedata.master.customer.yes') }}</el-radio>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('wms.basedata.master.customer.salesman')" prop="sales_owner">
<el-input v-model="form.sales_owner" style="width: 200px;" />
@@ -196,6 +202,7 @@
<el-table-column prop="shd_print_no" :label="$t('wms.basedata.master.customer.deliveryNotePrintTemplatePath')" width="180px" show-overflow-tooltip />
<el-table-column prop="shd_dtl_num" :label="$t('wms.basedata.master.customer.deliveryNoteDetailCount')" width="150px" show-overflow-tooltip />
<el-table-column prop="is_auto_table" :label="$t('wms.basedata.master.customer.isAutoLabeling')" width="150px" show-overflow-tooltip :formatter="autoTable" />
<el-table-column prop="is_single_roll_single_box" :label="$t('wms.basedata.master.customer.isSingleRollSingleBox')" width="150px" show-overflow-tooltip :formatter="singleRollSingleBox" />
<el-table-column prop="update_optname" :label="$t('wms.basedata.master.customer.modifier')" width="150px" />
<el-table-column prop="update_time" :label="$t('wms.basedata.master.customer.modificationTime')" width="150" />
<el-table-column :label="$t('wms.basedata.master.customer.enabled')" align="center" prop="is_used">
@@ -278,6 +285,7 @@ const defaultForm = {
bz_print_no: null,
shd_print_no: null,
is_auto_table: '1',
is_single_roll_single_box: '0',
bz_print_within: null,
sales_owner: null
}
@@ -415,6 +423,9 @@ export default {
},
autoTable(row) {
return this.dict.label.is_used[row.is_auto_table]
},
singleRollSingleBox(row) {
return this.dict.label.is_used[row.is_single_roll_single_box]
}
}
}

View File

@@ -85,6 +85,44 @@
<el-input v-model="form.ext_id" style="width: 200px;" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('wms.basedata.master.material.materialCategory')" prop="material_type_id">
<el-select
v-model="form.material_type_id"
size="mini"
:placeholder="$t('wms.basedata.master.material.pleaseSelect')"
class="filter-item"
>
<el-option
v-for="item in dict.material_type"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item :label="$t('wms.basedata.master.material.measureUnit')" prop="base_unit_id">
<el-select
v-model="form.base_unit_id"
size="mini"
:placeholder="$t('wms.basedata.master.material.measureUnit')"
class="filter-item"
>
<el-option
v-for="item in measure_unit"
:key="item.measure_unit_id"
:label="item.unit_name"
:value="item.measure_unit_id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item :label="$t('wms.basedata.master.material.isEnabled')" prop="is_used">
<el-radio v-model="form.is_used" label="0">{{ $t('wms.basedata.master.material.no') }}</el-radio>
@@ -114,6 +152,8 @@
<el-table-column prop="material_name" :label="$t('wms.basedata.master.material.materialName')" width="180" show-overflow-tooltip />
<el-table-column prop="material_spec" :label="$t('wms.basedata.master.material.materialSpecification')" width="140" />
<el-table-column prop="material_model" :label="$t('wms.basedata.master.material.materialModel')" />
<el-table-column prop="class_code" :label="$t('wms.basedata.master.material.materialClassCode')" width="120" />
<el-table-column prop="class_name" :label="$t('wms.basedata.master.material.materialClass')" width="140" />
<el-table-column prop="unit_name" :label="$t('wms.basedata.master.material.measureUnit')" />
<el-table-column prop="standing_time" :label="$t('wms.basedata.master.material.standingTimeMinutes')" width="130px" />
<el-table-column :label="$t('wms.basedata.master.material.enabled')" align="center" prop="is_used">
@@ -234,8 +274,8 @@ export default {
is_used: [
{ required: true, message: this.$t('wms.basedata.master.material.isEnabledCannotBeEmpty'), trigger: 'blur' }
],
material_type_id: [
{ required: true, message: this.$t('wms.basedata.master.material.cannotBeEmpty'), trigger: 'blur' }
base_unit_id: [
{ required: true, message: this.$t('wms.basedata.master.material.isEnabledCannotBeEmpty'), trigger: 'blur' }
]
}
}

View File

@@ -566,7 +566,7 @@ export default {
this.loadingAlldiv = true
this.mstrow.div_type = '1'
checkoutbill.allDiv(this.mstrow).then(res => {
this.crud.notify($t('common.allocationSuccessful'), CRUD.NOTIFICATION_TYPE.INFO)
this.crud.notify(this.$t('common.allocationSuccessful'), CRUD.NOTIFICATION_TYPE.INFO)
this.queryTableDtl()
this.updataIsOverdue()
this.loadingAlldiv = false

View File

@@ -141,7 +141,7 @@
/>
</el-select>
</el-form-item>
<!-- <el-form-item :label="$t('common.is_summary')">
<!-- <el-form-item :label="$t('common.is_summary')">
<el-select
v-model="query.is_all"
clearable
@@ -291,7 +291,7 @@
prop="box_weight"
:label="$t('common.totalGrossWeight')"
:formatter="crud.formatNum2"
:min-width="flexWidth('box_weight',crud.data,$t('common.totalGrossWeight'))"
:min-width="flexWidth('box_weight',crud.data,$t('common.totalGrossWeight'))"
/>
<el-table-column
show-overflow-tooltip