宏丰二期初始提交
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
|
||||
package org.nl.wms.basedata.rest;
|
||||
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.nl.wms.basedata.service.VehicleDetailService;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDetailDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @date 2023-04-17
|
||||
**/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "组盘信息管理")
|
||||
@RequestMapping("/api/vehicleDetail")
|
||||
@Slf4j
|
||||
public class VehicleDetailController {
|
||||
|
||||
private final VehicleDetailService vehicleDetailService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询组盘信息")
|
||||
@ApiOperation("查询组盘信息")
|
||||
//@SaCheckPermission("@el.check('vehicleDetail:list')")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page){
|
||||
return new ResponseEntity<>(vehicleDetailService.queryAll(whereJson,page),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Log("新增组盘信息")
|
||||
@ApiOperation("新增组盘信息")
|
||||
//@SaCheckPermission("@el.check('vehicleDetail:add')")
|
||||
public ResponseEntity<Object> create(@Validated @RequestBody VehicleDetailDto dto){
|
||||
vehicleDetailService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PutMapping
|
||||
@Log("修改组盘信息")
|
||||
@ApiOperation("修改组盘信息")
|
||||
//@SaCheckPermission("@el.check('vehicleDetail:edit')")
|
||||
public ResponseEntity<Object> update(@Validated @RequestBody VehicleDetailDto dto){
|
||||
vehicleDetailService.update(dto);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("删除组盘信息")
|
||||
@ApiOperation("删除组盘信息")
|
||||
//@SaCheckPermission("@el.check('vehicleDetail:del')")
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
vehicleDetailService.deleteAll(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
package org.nl.wms.basedata.service;
|
||||
|
||||
import org.nl.wms.basedata.service.dto.VehicleDetailDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @description 服务接口
|
||||
* @date 2023-04-17
|
||||
**/
|
||||
public interface VehicleDetailService {
|
||||
|
||||
/**
|
||||
* 查询数据分页
|
||||
*
|
||||
* @param whereJson 条件
|
||||
* @param page 分页参数
|
||||
* @return Map<String, Object>
|
||||
*/
|
||||
Map<String, Object> queryAll(Map whereJson, Pageable page);
|
||||
|
||||
/**
|
||||
* 查询所有数据不分页
|
||||
*
|
||||
* @param whereJson 条件参数
|
||||
* @return List<VehicleDetailDto>
|
||||
*/
|
||||
List<VehicleDetailDto> queryAll(Map whereJson);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
*
|
||||
* @param group_id ID
|
||||
* @return VehicleDetail
|
||||
*/
|
||||
VehicleDetailDto findById(String group_id);
|
||||
|
||||
/**
|
||||
* 根据编码查询
|
||||
*
|
||||
* @param code code
|
||||
* @return VehicleDetail
|
||||
*/
|
||||
VehicleDetailDto findByCode(String code);
|
||||
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param dto /
|
||||
*/
|
||||
void create(VehicleDetailDto dto);
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param dto /
|
||||
*/
|
||||
void update(VehicleDetailDto dto);
|
||||
|
||||
/**
|
||||
* 多选删除
|
||||
*
|
||||
* @param ids /
|
||||
*/
|
||||
void deleteAll(String[] ids);
|
||||
}
|
||||
@@ -102,4 +102,22 @@ public class MaterialbaseDto implements Serializable {
|
||||
private Long product_series;
|
||||
|
||||
private Integer standing_time;
|
||||
|
||||
//A长边
|
||||
private String a;
|
||||
|
||||
//B短边
|
||||
private String b;
|
||||
|
||||
//H梯形高
|
||||
private String h;
|
||||
|
||||
//W厚度
|
||||
private String w;
|
||||
|
||||
//产品编号
|
||||
private String product_code;
|
||||
|
||||
//托盘砖数量
|
||||
private String number;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package org.nl.wms.basedata.service.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class VehicleDetailDto implements Serializable {
|
||||
|
||||
/** 组盘标识 */
|
||||
private String group_id;
|
||||
/** 载具编码 */
|
||||
private String vehicle_code;
|
||||
/** 工单编号 */
|
||||
private String order_code;
|
||||
/** 物料号 */
|
||||
private String material_code;
|
||||
/** 产品编号 */
|
||||
private String product_code;
|
||||
/** 点位编码(窑号1/2) */
|
||||
private String point_code;
|
||||
/** 区域编码 0-缓存区 1-窑内 2-窑外冷却区 3-已拆垛*/
|
||||
private String region_code;
|
||||
/** 顺序号 */
|
||||
private String order_seq;
|
||||
/** 是否删除 */
|
||||
private Integer is_delete;
|
||||
|
||||
/** 创建人 */
|
||||
private String create_name;
|
||||
|
||||
/** 创建时间 */
|
||||
private String create_time;
|
||||
|
||||
/** 修改人 */
|
||||
private Long update_optid;
|
||||
|
||||
/** 修改人 */
|
||||
private String update_optname;
|
||||
|
||||
/** 修改时间 */
|
||||
private String update_time;
|
||||
}
|
||||
@@ -68,7 +68,8 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
map.put("flag", "1");
|
||||
map.put("search", search);
|
||||
|
||||
return WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id");
|
||||
Map<String,Object> maps =WQL.getWO("QMD_ME_MATERIAL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "material_id");
|
||||
return maps;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,13 +135,14 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
|
||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
}
|
||||
MaterialbaseDto materialbaseDto = this.findByCode(dto.getMaterial_code());
|
||||
if (ObjectUtil.isNotEmpty(materialbaseDto) && materialbaseDto.getMaterial_id() != entity.getMaterial_id()) {
|
||||
if (ObjectUtil.isNotEmpty(materialbaseDto) && !materialbaseDto.getMaterial_id().equals(entity.getMaterial_id())) {
|
||||
throw new BadRequestException("物料编码重复!");
|
||||
}
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
String now = DateUtil.now();
|
||||
dto.setUnit_code(ObjectUtil.isEmpty(dto.getUnit_code())?null:dto.getUnit_code());
|
||||
dto.setUpdate_time(now);
|
||||
dto.setUpdate_optid(currentUserId);
|
||||
dto.setUpdate_optname(nickName);
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
|
||||
package org.nl.wms.basedata.service.impl;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.wms.basedata.service.VehicleDetailService;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDetailDto;
|
||||
import org.nl.wms.util.MapOf;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.WqlUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
|
||||
/**
|
||||
* @author lyd
|
||||
* @description 服务实现
|
||||
* @date 2023-04-17
|
||||
**/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class VehicleDetailServiceImpl implements VehicleDetailService {
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
|
||||
JSONObject pageQuery = WQL.getWO("QMD_PB_VEHICLE_GROUP").addParamMap(MapOf.of("flag", "1"
|
||||
, "vehicle_code", whereJson.get("vehicle_code")))
|
||||
.pageQuery(WqlUtil.getHttpContext(page), "vehicle_code asc");
|
||||
return pageQuery;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VehicleDetailDto> queryAll(Map whereJson) {
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
JSONArray arr = wo.query().getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(VehicleDetailDto.class);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VehicleDetailDto findById(String group_id) {
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
JSONObject json = wo.query("group_id = '" + group_id + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
return json.toJavaObject(VehicleDetailDto.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VehicleDetailDto findByCode(String code) {
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
return json.toJavaObject(VehicleDetailDto.class);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(VehicleDetailDto dto) {
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
dto.setGroup_id(String.valueOf(IdUtil.getSnowflake(1, 1).nextId()));
|
||||
dto.setCreate_name(nickName);
|
||||
dto.setUpdate_optid(currentUserId);
|
||||
dto.setUpdate_optname(nickName);
|
||||
dto.setUpdate_time(now);
|
||||
dto.setCreate_time(now);
|
||||
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.insert(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(VehicleDetailDto dto) {
|
||||
VehicleDetailDto entity = this.findById(dto.getGroup_id());
|
||||
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
|
||||
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
|
||||
String now = DateUtil.now();
|
||||
dto.setUpdate_time(now);
|
||||
dto.setUpdate_optid(currentUserId);
|
||||
dto.setUpdate_optname(nickName);
|
||||
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
wo.update(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteAll(String[] ids) {
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
for (String group_id : ids) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("group_id", group_id);
|
||||
wo.delete(param);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -45,6 +45,12 @@
|
||||
material.material_code,
|
||||
material.material_name,
|
||||
material.unit_code,
|
||||
material.product_code,
|
||||
material.a,
|
||||
material.b,
|
||||
material.h,
|
||||
material.w,
|
||||
material.number,
|
||||
unit.unit_name AS 'unit_name',
|
||||
material.is_used,
|
||||
material.create_name,
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
[交易说明]
|
||||
交易名: 载具组盘
|
||||
所属模块:
|
||||
功能简述:
|
||||
版权所有:
|
||||
表引用:
|
||||
版本经历:
|
||||
|
||||
[数据库]
|
||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||
|
||||
[IO定义]
|
||||
#################################################
|
||||
## 表字段对应输入参数
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.vehicle_code TYPEAS s_string
|
||||
输入.vehicle_type TYPEAS s_string
|
||||
输入.vehicle_status TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
|
||||
[临时变量]
|
||||
--所有中间过程变量均可在此处定义
|
||||
|
||||
[业务过程]
|
||||
|
||||
##########################################
|
||||
# 1、输入输出检查 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 2、主过程前处理 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 3、业务主过程 #
|
||||
##########################################
|
||||
|
||||
IF 输入.flag = "1"
|
||||
PAGEQUERY
|
||||
SELECT
|
||||
vd.*,
|
||||
p.point_name
|
||||
FROM
|
||||
sch_base_vehicle_group vd
|
||||
LEFT JOIN sch_base_point p ON p.point_code = vd.point_code
|
||||
WHERE
|
||||
1 = 1
|
||||
OPTION 输入.vehicle_code <> ""
|
||||
vd.vehicle_code LIKE '%' 输入.vehicle_code '%'
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDPAGEQUERY
|
||||
ENDIF
|
||||
@@ -89,4 +89,22 @@ public class AcsToWmsController {
|
||||
public ResponseEntity<Object> orderConfirm(@RequestBody JSONObject param) {
|
||||
return new ResponseEntity<>(acsToWmsService.orderConfirm(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/uploadPalletizing")
|
||||
@Log("组盘信息上报")
|
||||
@ApiOperation("组盘信息上报")
|
||||
@SaCheckPermission("menu:list")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> uploadPalletizing(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.uploadPalletizing(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateKiln")
|
||||
@Log("更新托盘状态")
|
||||
@ApiOperation("更新托盘状态")
|
||||
@SaCheckPermission("menu:list")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> updateKiln(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.updateKiln(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,4 +81,18 @@ public interface AcsToWmsService {
|
||||
*/
|
||||
JSONObject orderConfirm(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 组盘信息上报
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
JSONObject uploadPalletizing(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 更新托盘状态
|
||||
* @param whereJson
|
||||
* @return
|
||||
*/
|
||||
JSONObject updateKiln(JSONObject whereJson);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package org.nl.wms.ext.acs.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
@@ -20,15 +23,19 @@ import org.nl.wms.basedata.service.MaterialbaseService;
|
||||
import org.nl.wms.basedata.service.VehicleService;
|
||||
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDto;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDetailDto;
|
||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.pda.scanGroup.HcwNumEnum;
|
||||
import org.nl.wms.pda.scanGroup.KlzhcwUtil;
|
||||
import org.nl.wms.pdm.service.DeviceService;
|
||||
import org.nl.wms.pdm.service.WorkordeService;
|
||||
import org.nl.wms.pdm.service.dto.WorkorderDto;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.service.PointService;
|
||||
import org.nl.wms.sch.service.TaskService;
|
||||
import org.nl.wms.sch.tasks.callEmpty.HnjCallEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.callMaterial.YljCallMaterialTask;
|
||||
import org.nl.wms.sch.tasks.phaseTwo.PalletizingTask;
|
||||
import org.nl.wms.sch.tasks.sendEmpty.KzdjwSendEmpVehicleTask;
|
||||
import org.nl.wms.sch.tasks.sendMaterial.HnjSendMaterialTask;
|
||||
import org.nl.wms.st.structivt.service.StructivtService;
|
||||
@@ -64,6 +71,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private RedissonClient redissonClient;
|
||||
@Autowired
|
||||
private AcsToWmsService acsToWmsService;
|
||||
@Autowired
|
||||
private PointService pointService;
|
||||
|
||||
/**
|
||||
* task_id:任务标识
|
||||
@@ -285,6 +294,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
* 2.混碾机满盅入库
|
||||
* 3.压力机叫料
|
||||
* 4.空料盅对接位有货时申请RGV搬运至空料盅缓存位
|
||||
* 5.拆垛位申请取料
|
||||
*/
|
||||
if (StrUtil.equals(type, "1")) {
|
||||
// 1.混碾机呼叫空盅
|
||||
@@ -336,6 +346,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
// 创建任务
|
||||
KzdjwSendEmpVehicleTask taskBean = SpringContextHolder.getBean(KzdjwSendEmpVehicleTask.class);
|
||||
taskBean.createTask(param);
|
||||
} else if (StrUtil.equals(type, "5")) {
|
||||
// 5.拆垛位申请取料
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("point_code1", point_code); // 叫料点
|
||||
param.put("create_mode", create_mode);
|
||||
param.put("material_code",whereJson.getString("material_code"));
|
||||
param.put("is_auto_issue", is_auto_issue);
|
||||
PalletizingTask taskBean = SpringContextHolder.getBean(PalletizingTask.class);
|
||||
taskBean.createTask(param);
|
||||
}
|
||||
resp.put("status", "200");
|
||||
resp.put("message", "申请成功");
|
||||
@@ -481,4 +500,113 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
resp.put("message", "人工排产确认成功!");
|
||||
return resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject uploadPalletizing(JSONObject whereJson) {
|
||||
JSONObject resp = new JSONObject();
|
||||
VehicleDetailDto dto = VehicleDetailDto.builder()
|
||||
.group_id(String.valueOf(IdUtil.getSnowflake(1, 1).nextId()))
|
||||
.vehicle_code(whereJson.getString("vehicle_code"))
|
||||
.order_code(whereJson.getString("order_code"))
|
||||
.material_code(whereJson.getString("material_code"))
|
||||
.product_code(whereJson.getString("product_code"))
|
||||
// .point_code(whereJson.getString("point_code"))
|
||||
.region_code("0")
|
||||
.order_seq("0")
|
||||
.is_delete(0)
|
||||
.create_name("acs")
|
||||
.create_time(DateUtil.now())
|
||||
.build();
|
||||
WQLObject wo = WQLObject.getWQLObject("SCH_BASE_vehicle_group");
|
||||
JSONObject json = (JSONObject) JSONObject.toJSON(dto);
|
||||
wo.insert(json);
|
||||
resp.put("status", "200");
|
||||
resp.put("message", "组盘信息上报成功!");
|
||||
return resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject updateKiln(JSONObject whereJson) {
|
||||
JSONObject resp = new JSONObject();
|
||||
try {
|
||||
int state = whereJson.getIntValue("state");
|
||||
String vehicle_code = whereJson.getString("barcode");
|
||||
String kiln_code = whereJson.getString("kiln_id");
|
||||
WQLObject wo = WQLObject.getWQLObject("SCH_BASE_vehicle_group");
|
||||
switch (state) {
|
||||
//入窑
|
||||
case 0: {
|
||||
// 查询指定托盘号
|
||||
JSONObject json = wo.query("vehicle_code ='" + vehicle_code + "' AND region_code= 0 AND is_delete = 0").uniqueResult(0);
|
||||
// 如果该托盘号不存在缓冲区则返回异常
|
||||
if (MapUtil.isEmpty(json)) {
|
||||
throw new Exception("当前缓冲区内不存在托盘号为" + vehicle_code + "的托盘!");
|
||||
}
|
||||
int count = 0;
|
||||
JSONObject jsonObject = wo.query("kiln_code=" + kiln_code + " AND region_code= 1 AND is_delete = 0","order_seq desc").uniqueResult(0);
|
||||
if (jsonObject != null) {
|
||||
count = jsonObject.getInteger("order_seq");
|
||||
}
|
||||
|
||||
// 将托盘放入指定窑道
|
||||
json.put("kiln_code", kiln_code);
|
||||
json.put("region_code", 1);
|
||||
json.put("order_seq", count + 1);
|
||||
wo.update(json);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
//出窑到缓存位
|
||||
//检查指定窑道外部有无仍然存留的托盘
|
||||
JSONObject jsonObject = wo.query("kiln_code ='" + kiln_code + "' AND region_code= 2 AND is_delete = 0").uniqueResult(0);
|
||||
if (jsonObject != null) {
|
||||
log.error("当前窑道" + kiln_code + "外冷却区存在存留托盘,无法出窑!");
|
||||
log.error(jsonObject.toJSONString());
|
||||
resp.put("status", "400");
|
||||
resp.put("message", "窑道外冷却区存在存留托盘,无法出窑!");
|
||||
return resp;
|
||||
}
|
||||
// 查询指定窑道所有托盘,将其状态改为已出窑
|
||||
JSONArray jsonArray = wo.query("kiln_code ='" + kiln_code + "' AND region_code= 1 AND is_delete = 0").getResultJSONArray(0);
|
||||
//将所有点位更改为有货
|
||||
WQLObject point = WQLObject.getWQLObject("sch_base_point");
|
||||
for (int i = 0; i < jsonArray.size(); i++) {
|
||||
JSONObject js = jsonArray.getJSONObject(i);
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("point_status", 3);
|
||||
json.put("update_time", DateUtil.now());
|
||||
point.update(json, "point_code = 'YWHC0"+js.getString("order_seq")+"'");
|
||||
JSONObject vihicleJson = new JSONObject();
|
||||
json.put("region_code", 2);
|
||||
json.put("point_code", "YWHC0"+js.getString("order_seq"));
|
||||
wo.update(json, "group_id=" + js.getString("group_id") );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:{
|
||||
JSONObject json = wo.query("vehicle_code ='" + vehicle_code + "' AND is_delete = 0").uniqueResult(0);
|
||||
// 将托盘置为已拆垛并删除,供后续重复使用
|
||||
json.put("kiln_code", kiln_code);
|
||||
json.put("region_code", 3);
|
||||
json.put("is_delete", 1);
|
||||
wo.update(json);
|
||||
//将点位更改为无货
|
||||
WQLObject point = WQLObject.getWQLObject("sch_base_point");
|
||||
JSONObject pointJson = new JSONObject();
|
||||
pointJson.put("point_status", 1);
|
||||
pointJson.put("update_time", DateUtil.now());
|
||||
point.update(pointJson, "point_code = 'YWHC0"+json.getString("order_seq")+"'");
|
||||
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("更新托盘状态失败{}", e.getMessage(), e);
|
||||
}
|
||||
|
||||
resp.put("status", "200");
|
||||
resp.put("message", "更新托盘状态成功!");
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package org.nl.wms.pda.point.rest;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.nl.wms.pda.point.service.PdaPointService;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Api(tags = "点位绑定解绑")
|
||||
@RequestMapping("api/pda/point")
|
||||
@Slf4j
|
||||
public class pdaPointController {
|
||||
|
||||
private final PdaPointService pdaPointService;
|
||||
|
||||
@PostMapping("/queryPoint")
|
||||
@Log("查询")
|
||||
@ApiOperation("查询点位状态")
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaPointService.queryPoint(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/binding")
|
||||
@Log("点位绑定解绑")
|
||||
@ApiOperation("点位绑定解绑")
|
||||
public ResponseEntity<Object> binding(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaPointService.queryPoint(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.pda.point.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
public interface PdaPointService {
|
||||
|
||||
|
||||
/**
|
||||
* 点位查询
|
||||
* @param whereJson /
|
||||
* @return JSONObject
|
||||
*/
|
||||
JSONObject queryPoint(JSONObject whereJson);
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package org.nl.wms.pda.point.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.basedata.service.VehicleService;
|
||||
import org.nl.wms.basedata.service.dto.VehicleDto;
|
||||
import org.nl.wms.pda.outStruct.service.OutStructService;
|
||||
import org.nl.wms.pda.point.service.PdaPointService;
|
||||
import org.nl.wms.sch.tasks.RegionTypeEnum;
|
||||
import org.nl.wms.st.structivt.service.KlhcqIvt;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class PdaPointServiceImpl implements PdaPointService {
|
||||
|
||||
private final RedisUtils redisUtils;
|
||||
|
||||
private final VehicleService vehicleService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject queryPoint(JSONObject param) {
|
||||
String vehicle_code = param.getString("carrier_code");
|
||||
if (StrUtil.isBlank(vehicle_code)) {
|
||||
throw new BadRequestException("载具号不能为空");
|
||||
}
|
||||
VehicleDto vehicle = vehicleService.findByCode(vehicle_code);
|
||||
if (ObjectUtil.isEmpty(vehicle)) {
|
||||
throw new BadRequestException("载具号不存在");
|
||||
}
|
||||
WQLObject wo = WQLObject.getWQLObject("ST_IVT_StructIvt");
|
||||
WQLObject wo_point = WQLObject.getWQLObject("sch_base_point");
|
||||
log.info("手持出库确认,从redis中删除对应的载具号:{},物料信息:{}", vehicle_code, redisUtils.get(vehicle_code));
|
||||
redisUtils.del(vehicle_code);
|
||||
redisUtils.del(vehicle_code + "-ivt_qty");
|
||||
JSONObject jsonObject = wo.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(jsonObject)) {
|
||||
jsonObject.put("vehicle_type", "");
|
||||
jsonObject.put("vehicle_code", "");
|
||||
jsonObject.put("material_id", "");
|
||||
jsonObject.put("instorage_time", "");
|
||||
wo.update(jsonObject);
|
||||
String point_id = jsonObject.getString("point_id");
|
||||
JSONObject jsonObject1 = wo_point.query("point_id = '" + point_id + "'").uniqueResult(0);
|
||||
jsonObject1.put("point_status", "1");
|
||||
jsonObject1.put("lock_type", "1");
|
||||
jsonObject1.put("task_id", "");
|
||||
jsonObject1.put("vehicle_type", "");
|
||||
jsonObject1.put("vehicle_code", "");
|
||||
wo_point.update(jsonObject1);
|
||||
if (jsonObject.getString("region_code").equals(RegionTypeEnum.KLZCQ.getCode())
|
||||
|| (jsonObject.getString("region_code").equals(RegionTypeEnum.GT1.getCode()))) {
|
||||
KlhcqIvt.clear();
|
||||
}
|
||||
}
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("code", "1");
|
||||
result.put("desc", "出库成功");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
[交易说明]
|
||||
交易名: 手持出库确认
|
||||
所属模块:
|
||||
功能简述:
|
||||
版权所有:
|
||||
表引用:
|
||||
版本经历:
|
||||
|
||||
[数据库]
|
||||
--指定数据库,为空采用默认值,默认为db.properties中列出的第一个库
|
||||
|
||||
[IO定义]
|
||||
#################################################
|
||||
## 表字段对应输入参数
|
||||
#################################################
|
||||
输入.flag TYPEAS s_string
|
||||
输入.region_id TYPEAS s_string
|
||||
|
||||
[临时表]
|
||||
--这边列出来的临时表就会在运行期动态创建
|
||||
|
||||
[临时变量]
|
||||
--所有中间过程变量均可在此处定义
|
||||
|
||||
[业务过程]
|
||||
|
||||
##########################################
|
||||
# 1、输入输出检查 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 2、主过程前处理 #
|
||||
##########################################
|
||||
|
||||
|
||||
##########################################
|
||||
# 3、业务主过程 #
|
||||
##########################################
|
||||
|
||||
IF 输入.flag = "1"
|
||||
QUERY
|
||||
SELECT
|
||||
region_id,
|
||||
region_code,
|
||||
region_name
|
||||
FROM
|
||||
sch_base_region
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "2"
|
||||
QUERY
|
||||
SELECT
|
||||
point_id,
|
||||
point_code,
|
||||
point_name
|
||||
FROM
|
||||
sch_base_point
|
||||
WHERE
|
||||
is_used = '1'
|
||||
AND is_delete = '0'
|
||||
OPTION 输入.region_id <> ""
|
||||
region_id = 输入.region_id
|
||||
ENDOPTION
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
|
||||
IF 输入.flag = "3"
|
||||
QUERY
|
||||
SELECT
|
||||
material_id,
|
||||
material_code,
|
||||
material_name
|
||||
FROM
|
||||
md_me_materialbase
|
||||
ENDSELECT
|
||||
ENDQUERY
|
||||
ENDIF
|
||||
@@ -192,7 +192,7 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void submits(JSONObject param) {
|
||||
public synchronized void submits(JSONObject param) {
|
||||
Long currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
@@ -214,6 +214,13 @@ public class WorkorderServiceImpl implements WorkordeService {
|
||||
map.put("qty", json.getString("plan_qty"));
|
||||
map.put("material_code", jsonObject.getString("material_code"));
|
||||
map.put("device_code", json.getString("device_code"));
|
||||
map.put("material_name",jsonObject.getString("material_name"));
|
||||
map.put("a",jsonObject.getString("a"));
|
||||
map.put("b",jsonObject.getString("b"));
|
||||
map.put("h",jsonObject.getString("h"));
|
||||
map.put("w",jsonObject.getString("w"));
|
||||
map.put("product_code",jsonObject.getString("product_code"));
|
||||
map.put("number",jsonObject.getString("number"));
|
||||
array.add(map);
|
||||
Map<String, Object> resp = wmsToAcsService.order(array);
|
||||
if (StrUtil.equals(String.valueOf(resp.get("status")), "200")) {
|
||||
|
||||
@@ -110,6 +110,7 @@ public class AutoCreateTask {
|
||||
JSONObject taskObj = errArr.getJSONObject(i);
|
||||
taskObj.put("remark", "下发失败:"+taskObj.getString("message"));
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("task_id",taskObj.getString("ext_task_id"));
|
||||
taskTab.update(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,365 @@
|
||||
package org.nl.wms.sch.tasks.phaseTwo;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl;
|
||||
import org.nl.wms.sch.SchTaskDto;
|
||||
import org.nl.wms.sch.manage.AbstractAcsTask;
|
||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||
import org.nl.wms.sch.tasks.AcsTaskDto;
|
||||
import org.nl.wms.sch.tasks.RegionTypeEnum;
|
||||
import org.nl.wms.st.structivt.service.KlhcqIvt;
|
||||
import org.nl.wms.util.IdUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
/**
|
||||
* 二期包装拆垛位请求叫料
|
||||
*/
|
||||
public class PalletizingTask extends AbstractAcsTask {
|
||||
|
||||
private final String THIS_CLASS = PalletizingTask.class.getName();
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public List<AcsTaskDto> addTask() {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
/*
|
||||
* 下发给ACS时需要特殊处理
|
||||
*/
|
||||
JSONArray arr = taskTab.query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0);
|
||||
ArrayList<AcsTaskDto> acsTaskArr = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
//JSONObject jsonMaterial = materialTab.query("material_id = '" + json.getString("material_id") + "'").uniqueResult(0);
|
||||
AcsTaskDto dto = AcsTaskDto.builder()
|
||||
.task_id(json.getString("task_id"))
|
||||
.task_code(json.getString("task_code"))
|
||||
.task_type(json.getString("acs_task_type"))
|
||||
.start_device_code(json.getString("point_code1"))
|
||||
.next_device_code(json.getString("point_code2"))
|
||||
.vehicle_code(json.getString("vehicle_code"))
|
||||
.vehicle_type(json.getString("vehicle_type"))
|
||||
.material_code(json.getString("material_code"))
|
||||
.priority(json.getString("priority"))
|
||||
.remark(json.getString("remark"))
|
||||
.build();
|
||||
acsTaskArr.add(dto);
|
||||
}
|
||||
return acsTaskArr;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateTaskStatus(JSONObject task, String status) {
|
||||
//任务表
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
//点位表
|
||||
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
|
||||
//库存表
|
||||
WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_StructIvt");
|
||||
|
||||
WQLObject vehicleTab = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
|
||||
String task_id = task.getString("task_id");
|
||||
String finished_type = task.getString("finished_type");
|
||||
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
|
||||
String sort_seq = taskObj.getString("sort_seq");
|
||||
String point_code1 = taskObj.getString("point_code1");
|
||||
String point_code2 = taskObj.getString("point_code2");
|
||||
|
||||
JSONObject jsonEnd = pointTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
JSONObject jsonStart = pointTab.query("point_code = '" + point_code1 + "'").uniqueResult(0);
|
||||
JSONObject vehicleJson = vehicleTab.query("vehicle_code ='"+taskObj.getString("vehicle_code")+"' and is_delete=0").uniqueResult(0);
|
||||
|
||||
//任务取消
|
||||
if (StrUtil.equals(status, "0")) {
|
||||
if (StrUtil.equals(taskObj.getString("task_status"), TaskStatusEnum.FINISHED.getCode())) {
|
||||
throw new BadRequestException("已完成不能取消!");
|
||||
}
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("remark", "已取消");
|
||||
taskTab.update(taskObj);
|
||||
//取空任务取消
|
||||
if (StrUtil.equals(sort_seq, "1")) {
|
||||
//解锁起点
|
||||
if (ObjectUtil.isNotEmpty(jsonStart)){
|
||||
jsonStart.put("lock_type", "1");
|
||||
jsonStart.put("task_id", "");
|
||||
jsonStart.put("update_time", DateUtil.now());
|
||||
pointTab.update(jsonStart);
|
||||
}
|
||||
}
|
||||
//取满任务取消
|
||||
if (StrUtil.equals(sort_seq, "2")) {
|
||||
//解锁终点
|
||||
if (ObjectUtil.isNotEmpty(jsonEnd)){
|
||||
jsonEnd.put("lock_type", "1");
|
||||
jsonEnd.put("task_id", "");
|
||||
jsonEnd.put("update_time", DateUtil.now());
|
||||
pointTab.update(jsonEnd);
|
||||
}
|
||||
}
|
||||
|
||||
vehicleJson.put("is_delete",0);
|
||||
vehicleTab.update(vehicleJson);
|
||||
|
||||
}
|
||||
|
||||
// 更新任务状态为执行中
|
||||
if (StrUtil.equals(status, TaskStatusEnum.EXECUTING.getCode())) {
|
||||
taskObj.put("task_status", TaskStatusEnum.EXECUTING.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
|
||||
}
|
||||
|
||||
//任务完成
|
||||
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
|
||||
|
||||
vehicleJson.put("is_delete",1);
|
||||
vehicleJson.put("region_code",3);
|
||||
vehicleTab.update(vehicleJson);
|
||||
//判断状态,
|
||||
if (StrUtil.equals("2", taskObj.getString("task_status"))) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
return;
|
||||
}
|
||||
|
||||
//更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_optname", "acs");
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskObj.put("finished_type", finished_type);
|
||||
taskTab.update(taskObj);
|
||||
|
||||
//取空任务完成
|
||||
if (StrUtil.equals(sort_seq, "1")) {
|
||||
//更新起点终点的库存
|
||||
JSONObject ivtStart = ivtTab.query("point_code = '" + jsonStart.getString("point_code") + "'").uniqueResult(0);
|
||||
JSONObject ivtEnd = ivtTab.query("point_code = '" + jsonEnd.getString("point_code") + "'").uniqueResult(0);
|
||||
|
||||
//修改终点库存
|
||||
ivtEnd.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
ivtEnd.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
ivtEnd.put("material_id", taskObj.getString("material_id"));
|
||||
ivtEnd.put("instorage_time", DateUtil.now());
|
||||
ivtTab.update(ivtEnd);
|
||||
|
||||
//解锁终点
|
||||
jsonEnd.put("lock_type", "1");
|
||||
jsonEnd.put("vehicle_type", "");
|
||||
jsonEnd.put("vehicle_code", "");
|
||||
jsonEnd.put("material_id", "");
|
||||
jsonEnd.put("point_status", "2");
|
||||
jsonEnd.put("task_id", "");
|
||||
jsonEnd.put("update_time", DateUtil.now());
|
||||
pointTab.update(jsonEnd);
|
||||
log.info("包装拆垛位请求叫料任务完成,终点解锁成功,任务号:{}", taskObj.getString("task_code"));
|
||||
|
||||
//修改起点库存
|
||||
ivtStart.put("vehicle_type", "");
|
||||
ivtStart.put("vehicle_code", "");
|
||||
ivtStart.put("material_id", "");
|
||||
ivtStart.put("instorage_time", DateUtil.now());
|
||||
ivtTab.update(ivtStart);
|
||||
|
||||
//解锁起点
|
||||
jsonStart.put("lock_type", "1");
|
||||
jsonStart.put("vehicle_type", "");
|
||||
jsonStart.put("vehicle_code", "");
|
||||
jsonStart.put("material_id", "");
|
||||
jsonStart.put("point_status", "1");
|
||||
jsonStart.put("task_id", "");
|
||||
jsonStart.put("update_time", DateUtil.now());
|
||||
pointTab.update(jsonStart);
|
||||
log.info("包装拆垛位请求叫料完成,起点解锁成功,任务号:{}", taskObj.getString("task_code"));
|
||||
}
|
||||
|
||||
//取满任务完成
|
||||
if (StrUtil.equals(sort_seq, "2")) {
|
||||
|
||||
//判断状态,
|
||||
if (StrUtil.equals("2", taskObj.getString("task_status"))) {
|
||||
// 更改任务状态为完成
|
||||
taskObj.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
taskObj.put("update_time", DateUtil.now());
|
||||
taskTab.update(taskObj);
|
||||
return;
|
||||
}
|
||||
|
||||
//更新终点的库存
|
||||
String region_code = jsonEnd.getString("region_code");
|
||||
if (!StrUtil.equals(region_code, RegionTypeEnum.KLZHCQ.getCode())) {
|
||||
jsonEnd.put("lock_type", "1");
|
||||
jsonEnd.put("task_id", "");
|
||||
jsonEnd.put("vehicle_type", "");
|
||||
jsonEnd.put("vehicle_code", "");
|
||||
jsonEnd.put("material_id", "");
|
||||
jsonEnd.put("point_status", "1");
|
||||
jsonEnd.put("update_time", DateUtil.now());
|
||||
pointTab.update(jsonEnd);
|
||||
log.info("包装拆垛位请求叫料任务完成,终点解锁成功,任务号:{}", taskObj.getString("task_code"));
|
||||
JSONObject ivtEnd = ivtTab.query("point_code = '" + point_code2 + "'").uniqueResult(0);
|
||||
Map<String, String> ivtMap = new HashMap<>();
|
||||
ivtMap.put(taskObj.getString("vehicle_code"), taskObj.getString("material_id"));
|
||||
try {
|
||||
KlhcqIvt.add(ivtMap);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
log.error("包装拆垛位请求叫料任务完成更新出现异常!" + e.getMessage());
|
||||
}
|
||||
//修改终点库存
|
||||
ivtEnd.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
ivtEnd.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
ivtEnd.put("material_id", taskObj.getString("material_id"));
|
||||
ivtEnd.put("instorage_time", DateUtil.now());
|
||||
ivtTab.update(ivtEnd);
|
||||
} else {
|
||||
JSONObject jsonObject = ivtTab.query("point_code = '" + jsonEnd.getString("point_code") + "'").uniqueResult(0);
|
||||
//修改终点库存信息
|
||||
jsonObject.put("vehicle_type", taskObj.getString("vehicle_type"));
|
||||
jsonObject.put("vehicle_code", taskObj.getString("vehicle_code"));
|
||||
jsonObject.put("material_id", taskObj.getString("material_id"));
|
||||
jsonObject.put("ivt_qty", taskObj.getString("qty"));
|
||||
jsonObject.put("instorage_time", DateUtil.now());
|
||||
ivtTab.update(jsonObject);
|
||||
//解锁终点
|
||||
jsonEnd.put("point_status", "3");
|
||||
jsonEnd.put("lock_type", "1");
|
||||
jsonEnd.put("task_id", "");
|
||||
jsonEnd.put("update_time", DateUtil.now());
|
||||
pointTab.update(jsonEnd);
|
||||
log.info("包装拆垛位请求叫料完成,终点解锁成功,任务号:{}", taskObj.getString("task_code"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject form) {
|
||||
String create_mode = form.getString("create_mode");
|
||||
String is_auto_issue = form.getString("is_auto_issue");
|
||||
String material_code =form.getString("material_code");
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表
|
||||
//查找当前是否有未完成任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and task_name = '包装拆垛位请求叫料' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)){
|
||||
log.error("存在未完成的任务:" + taskObj.getString("task_id"));
|
||||
return taskObj.getString("task_id");
|
||||
// throw new BadRequestException("存在未完成的任务:" + taskObj.getString("task_id"));
|
||||
}
|
||||
//查找起点当前缓存区最右边有货的点位及其对应的终点点位1-20-》21 22-41-》42
|
||||
WQLObject tab = WQLObject.getWQLObject("sch_base_vehicle_group");
|
||||
JSONObject pointObj =tab.query("is_delete='0' and region_code='2' and material_code='"+material_code+"'","order_seq desc").uniqueResult(0);
|
||||
if(ObjectUtil.isEmpty(pointObj)){
|
||||
log.error("当前窑外缓存区无点位有货!");
|
||||
throw new BadRequestException("当前窑外缓存区无点位有货!");
|
||||
}
|
||||
SchTaskDto dto = SchTaskDto.builder()
|
||||
.task_id(IdUtil.getLongId())
|
||||
.task_code(CodeUtil.getNewCode("TASK_CODE"))
|
||||
.task_type("1")
|
||||
.task_name("包装拆垛位请求叫料")
|
||||
.vehicle_code(pointObj.getString("vehicle_code"))
|
||||
.task_status(TaskStatusEnum.START_AND_POINT.getCode())
|
||||
.point_code1("YWHC0"+pointObj.getString("order_seq"))
|
||||
.point_code2("YWHC0"+ (pointObj.getInteger("order_seq")>21?42:21))
|
||||
.priority("1")
|
||||
.handle_class(THIS_CLASS)
|
||||
.is_auto_issue(is_auto_issue)
|
||||
.acs_task_type("2")
|
||||
.create_mode(create_mode)
|
||||
.create_time(DateUtil.now())
|
||||
.request_param(form.toJSONString())
|
||||
.build();
|
||||
|
||||
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
|
||||
taskTab.insert(json);
|
||||
|
||||
this.immediateNotifyAcs();
|
||||
return String.valueOf(dto.getTask_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void forceFinish(String task_id) {
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status < " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
WmsToAcsServiceImpl wmsToAcsService = SpringContextHolder.getBean(WmsToAcsServiceImpl.class);
|
||||
Integer task_status = taskObj.getInteger("task_status");
|
||||
if (task_status >= 5) {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("task_id", task_id);
|
||||
map.put("task_code", taskObj.getString("task_code"));
|
||||
array.add(map);
|
||||
Map<String, Object> resp = wmsToAcsService.forceFinishToAcs(array);
|
||||
if (StrUtil.equals(String.valueOf(resp.get("status")), "200")) {
|
||||
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
|
||||
} else {
|
||||
throw new BadRequestException(String.valueOf(resp.get("message")));
|
||||
}
|
||||
} else {
|
||||
this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode());
|
||||
}
|
||||
|
||||
} else {
|
||||
throw new BadRequestException("任务已删除或者已完成!");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancel(String task_id) {
|
||||
WmsToAcsServiceImpl wmsToAcsService = SpringContextHolder.getBean(WmsToAcsServiceImpl.class);
|
||||
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task");
|
||||
JSONObject taskObj = taskTab.query("task_id = '" + task_id + "' and is_delete = '0' and task_status <> " + TaskStatusEnum.FINISHED.getCode()).uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
Integer task_status = taskObj.getInteger("task_status");
|
||||
if (task_status >= 5) {
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject map = new JSONObject();
|
||||
map.put("task_id", task_id);
|
||||
map.put("task_code", taskObj.getString("task_code"));
|
||||
array.add(map);
|
||||
Map<String, Object> resp = wmsToAcsService.cancelToAcs(array);
|
||||
if (StrUtil.equals(String.valueOf(resp.get("status")), "200")) {
|
||||
this.updateTaskStatus(taskObj, "0");
|
||||
} else {
|
||||
throw new BadRequestException(String.valueOf(resp.get("message")));
|
||||
}
|
||||
} else {
|
||||
this.updateTaskStatus(taskObj, "0");
|
||||
}
|
||||
} else {
|
||||
throw new BadRequestException("任务已删除或者已完成!");
|
||||
}
|
||||
}
|
||||
}
|
||||
20
lms/nladmin-system/src/main/java/org/nl/wms/util/MapOf.java
Normal file
20
lms/nladmin-system/src/main/java/org/nl/wms/util/MapOf.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package org.nl.wms.util;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2022/11/29 2:55 下午
|
||||
*/
|
||||
public class MapOf implements Serializable {
|
||||
|
||||
public static <K> HashMap of(K... key){
|
||||
HashMap map = new HashMap<>();
|
||||
for (int i = 0; i < (key.length & ~1); i=i+2) {
|
||||
map.put(key[i],key[i+1]);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -6,9 +6,9 @@ spring:
|
||||
druid:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:hf_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.01}:${DB_PORT:3306}/${DB_NAME:hf_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:P@ssw0rd}
|
||||
password: ${DB_PWD:123456}
|
||||
# 初始连接数
|
||||
initial-size: 5
|
||||
# 最小连接数
|
||||
|
||||
@@ -9,6 +9,8 @@ spring:
|
||||
redis:
|
||||
repositories:
|
||||
enabled: false
|
||||
cache:
|
||||
type: redis
|
||||
|
||||
#配置 Jpa
|
||||
jpa:
|
||||
|
||||
@@ -58,7 +58,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
|
||||
<!--开发环境:打印控制台-->
|
||||
<springProfile name="dev">
|
||||
<root level="debug">
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
||||
|
||||
27
lms/nladmin-ui/src/api/wms/basedata/vehicleDetail.js
Normal file
27
lms/nladmin-ui/src/api/wms/basedata/vehicleDetail.js
Normal file
@@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: 'api/vehicleDetail',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: 'api/vehicleDetail/',
|
||||
method: 'delete',
|
||||
data: ids
|
||||
})
|
||||
}
|
||||
|
||||
export function edit(data) {
|
||||
return request({
|
||||
url: 'api/vehicleDetail',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del }
|
||||
@@ -71,6 +71,48 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="产品编号" prop="product_code">
|
||||
<el-input v-model="form.product_code" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="物料长度" prop="a">
|
||||
<el-input v-model="form.a" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="物料宽度" prop="b">
|
||||
<el-input v-model="form.b" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="物料高度" prop="h">
|
||||
<el-input v-model="form.h" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="物料厚度" prop="w">
|
||||
<el-input v-model="form.w" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="托盘砖数量" prop="number">
|
||||
<el-input v-model="form.number" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="是否启用" prop="is_used">
|
||||
|
||||
Reference in New Issue
Block a user