rev:手持组盘入库

This commit is contained in:
zhangzq
2024-08-16 10:57:31 +08:00
parent b18820a475
commit a95eabf89a
33 changed files with 503 additions and 160 deletions

View File

@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
@ServletComponentScan
@EnableTransactionManagement
@MapperScan("org.nl.**.mapper")
@EnableDynamicTp
//@EnableDynamicTp
public class AppRun implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(AppRun.class, args);

View File

@@ -14,4 +14,7 @@ public class DictConstantPool {
public static final String DICT_SYS_NAME = "所属系统";
public static final int STRUCT_COUNT = 5;
public static final Map<String,String> PRODUCT_OUT_POINT = MapOf.of("A1","1101","A2","2114","A3","3204");
public static final Map<String,String> PRODUCT_OUT_POINT_TP = MapOf.of("A1","1131","A2","2127","A3","3110");
}

View File

@@ -6,20 +6,26 @@ import org.nl.common.domain.entity.QParam;
import org.nl.common.enums.QueryTEnum;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
/*
/* *
*物料查询对象
* @author ZZQ
* @Date 2023/5/4 19:49
*/
@Data
public class MaterialQuery extends BaseQuery<MdMeMaterialbase> {
/**
* 物料编码名称
*/
private String search;
/**
* 物料类型
*/
private String material_type_id;
@Override
public void paramMapping() {
super.doP.put("search", QParam.builder().k(new String[]{"material_code","material_name"}).type(QueryTEnum.EQ).build());
super.doP.put("search", QParam.builder().k(new String[]{"material_code","material_name"}).type(QueryTEnum.ORLK).build());
super.doP.put("material_type_id", QParam.builder().k(new String[]{"material_type_id"}).type(QueryTEnum.EQ).build());
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
@@ -62,6 +63,7 @@ public class BmFormStrucController {
}
@PostMapping
@Log("创建单据结构")
public ResponseEntity<Object> save(@RequestBody JSONObject param){
//参数判读,参数解析,调用参数入库
BmFormStruc formStruc = param.toJavaObject(BmFormStruc.class);
@@ -72,6 +74,7 @@ public class BmFormStrucController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/update")
@Log("修改单据结构")
public ResponseEntity<Object> update(@RequestBody JSONObject param){
//逻辑判断:如果有数据了则不允许修改
BmFormStruc formStruc = param.toJavaObject(BmFormStruc.class);
@@ -86,6 +89,7 @@ public class BmFormStrucController {
}
@DeleteMapping
@Log("删除单据结构")
public ResponseEntity<Object> delete(@RequestBody String[] ids){
//参数判读,参数解析,调用参数入库
if (ids.length>0){
@@ -129,6 +133,7 @@ public class BmFormStrucController {
* 数据结构:{"type":xxx,"name":xxx,"desc":xxx,"item":{"desc":"描述"}}
*/
@GetMapping("/formColumns/{form_type}")
@Log("查询动态表头")
public ResponseEntity<Object> formColumns(@PathVariable String form_type){
//参数判读,参数解析,调用参数入库
List<Map> items = new ArrayList<>();

View File

@@ -5,16 +5,14 @@ import com.alibaba.fastjson.JSONObject;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.TaskScheduleService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.system_manage.service.quartz.task.TaskScheduleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

View File

@@ -54,7 +54,12 @@ public class OutStorageTask extends AbstractTask {
//通过全局变量获取目标位置
String product_area = from.getString("product_area");
if (StringUtils.isNotEmpty(product_area)){
String configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
String configTarget;
if (vehicle_code.contains("T")){
configTarget = DictConstantPool.PRODUCT_OUT_POINT_TP.get(product_area);
}else {
configTarget = DictConstantPool.PRODUCT_OUT_POINT.get(product_area);
}
if (StringUtils.isEmpty(configTarget)){
throw new BadRequestException("创建任务失败:出库点车间点位对应关系配置异常");
}

View File

@@ -1,80 +0,0 @@
package org.nl.wms.dispatch_manage.task.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.TableDataInfo;
import org.nl.common.enums.StatusEnum;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.external_system.acs.service.WmsToAcsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
/*
* @author ZZQ
* @Date 2023/3/22 17:14
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class TaskScheduleService {
private ReentrantLock lock = new ReentrantLock();
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
@Autowired
private WmsToAcsService wmsToAcsService;
@SneakyThrows
// @Scheduled(cron = "0/30 * * * * ?")
public void taskPublish(){
boolean islock = lock.tryLock();
try {
if (islock){
//查询所有自动下发的任务
List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("is_send", true)
.eq("status", StatusEnum.FORM_STATUS.code("生成")));
if (!CollectionUtils.isEmpty(list)){
List<String> taskCodes = list.stream().map(SchBaseTask::getTask_code).collect(Collectors.toList());
TableDataInfo response = wmsToAcsService.interationToExt(list, "createTask");
if (!response.getCode().equals(String.valueOf(HttpStatus.HTTP_OK))){
JSONArray results = (JSONArray)JSON.toJSON(response.getData());
if (!CollectionUtils.isEmpty(results)){
for (Object result : results) {
Map resultM = (Map) result;
taskCodes.remove(resultM.get("task_code"));
iSchBaseTaskService.update(new UpdateWrapper<SchBaseTask>()
.eq("task_code",resultM.get("task_code"))
.set("status",StatusEnum.FORM_STATUS.code("暂停"))
.set("update_time", DateUtil.now()).set("remark",resultM.get("msg")));
}
}
}
if (!CollectionUtils.isEmpty(taskCodes)){
iSchBaseTaskService.update(new UpdateWrapper<SchBaseTask>()
.set("status",StatusEnum.FORM_STATUS.code("下发"))
.in("task_code",taskCodes));
}
}
}
}finally {
if (lock.isLocked() && lock.isHeldByCurrentThread()){
lock.unlock();
}
}
}
}

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum;
@@ -61,11 +62,13 @@ public class ActDeModelController {
private BpmnJSONConverter bpmnJSONConverter;
@GetMapping
@Log("查询模型")
public ResponseEntity<Object> getAll(ModelQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(modelService.page(page.build(), query.build())), HttpStatus.OK);
}
@PostMapping
@Log("新增模型")
public ResponseEntity<Object> add(@Validated @RequestBody JSONObject form) {
ActDeModel actDeModel = form.toJavaObject(ActDeModel.class);
@@ -86,6 +89,7 @@ public class ActDeModelController {
}
@PutMapping
@Log("修改模型")
public ResponseEntity<Object> update(@Validated @RequestBody ActDeModel dto) {
dto.setStatus(StatusEnum.MODEL_STATUS.code("未发布"));
dto.setUpdated_id(SecurityUtils.getCurrentNickName());
@@ -104,6 +108,7 @@ public class ActDeModelController {
}
@DeleteMapping
@Log("删除模型")
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
throw new BadRequestException("模型配置无法直接删除");
// if (ids.length > 0) {

View File

@@ -12,6 +12,7 @@ import org.nl.common.utils.SecurityUtils;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
import org.nl.wms.md_manage.group_dick.service.dto.GroupDickQuery;
import org.nl.wms.pda_manage.group.dto.MaterGroupDto;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -83,8 +84,8 @@ public class MdGruopDickController {
@PostMapping
@Log("人工组盘入库")
@SaIgnore
public ResponseEntity<Object> groupDick(@RequestBody JSONObject dicks) {
iMdGruopDickService.groupDick(dicks);
public ResponseEntity<Object> groupDick(@RequestBody MaterGroupDto dicks) {
iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(dicks));
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@@ -88,7 +88,7 @@ public class MdGruopDickServiceImpl extends ServiceImpl<MdGruopDickMapper, MdGru
}
}, StatusEnum.STRATEGY_TYPE.code("入库")+forms.getString("stor_code"),5);
List<JSONObject> tableData = (ArrayList)forms.remove("item");
List<Map> tableData = (List)forms.remove("item");
String now = DateUtil.now();
forms.put("create_name",SecurityUtils.getCurrentNickName());
forms.put("create_time", now);

View File

@@ -0,0 +1,59 @@
package org.nl.wms.pda_manage.common;
import cn.dev33.satoken.annotation.SaIgnore;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.wms.dispatch_manage.point.service.ISchBasePointService;
import org.nl.wms.dispatch_manage.point.service.dao.SchBasePoint;
import org.nl.wms.external_system.acs.service.WmsToAcsService;
import org.nl.wms.pda_manage.devicemanage.dto.ComTp;
import org.springframework.beans.factory.annotation.Autowired;
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;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
*公共接口
* @author generator
* @since 2024-03-28
*/
@RestController
@RequestMapping("api/pda/common")
public class PdaCommonController {
@Autowired
private WmsToAcsService wmsToAcsService;
@Autowired
private ISchBasePointService iSchBasePointService;
/**
* 仓库编码
* @return
*/
@PostMapping("/storList")
@SaIgnore
@Log("仓库编码")
public ResponseEntity<TableDataInfo<List>> storList() {
HashMap of1 = MapOf.of("label", "托盘库编码", "value", "FStockPallet");
HashMap of2 = MapOf.of("label", "料箱库编码", "value", "FStockId");
HashMap of3 = MapOf.of("label", "虚拟库编码", "value", "FicStockId");
ArrayList list = ListOf.of(of1, of2, of3);
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK);
}
}

View File

@@ -13,6 +13,7 @@ import org.nl.wms.dispatch_manage.point.service.ISchBasePointService;
import org.nl.wms.dispatch_manage.point.service.dao.SchBasePoint;
import org.nl.wms.external_system.acs.service.AcsToWmsService;
import org.nl.wms.external_system.acs.service.WmsToAcsService;
import org.nl.wms.pda_manage.devicemanage.dto.ComTp;
import org.nl.wms.pda_manage.palletio.service.PalletIostorinvService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -25,10 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.text.Format;
/**
* <p>
* 出入库单主表 前端控制器
* </p>
*
*设备操控
* @author generator
* @since 2024-03-28
*/
@@ -41,31 +39,47 @@ public class DeviceManageController {
@Autowired
private ISchBasePointService iSchBasePointService;
/**
* 切换出入库模式
* @param form
* @return
*/
@PostMapping("/changeMode/switchInOut")
@SaIgnore
@Log("切换出入库模式")
public ResponseEntity<Object> changeModeIO(@RequestBody JSONObject form) {
wmsToAcsService.changeMode(form.getString("device_code"),"switchInOut",form.getString("mode"));
public ResponseEntity<TableDataInfo> changeModeIO(@RequestBody ComTp form) {
wmsToAcsService.changeMode(form.getDevice_code(),"switchInOut",form.getMode());
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
/**
* 拣选工位启停模式
* @param form
* @return
*/
@PostMapping("/changeMode/pinkStartStop")
@SaIgnore
@Log("切换拣选工位启停模式")
public ResponseEntity<Object> changeModePick(@RequestBody JSONObject form) {
wmsToAcsService.changeMode(form.getString("device_code"),"pinkStartStop",form.getString("mode"));
public ResponseEntity<TableDataInfo> changeModePick(@RequestBody ComTp form) {
wmsToAcsService.changeMode(form.getDevice_code(),"pinkStartStop",form.getMode());
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("/toCommandTP")
/**
* 下发输送线运动命令
* @param form
* @return
*/
@PostMapping("/changeMode/toCommandTP")
@SaIgnore
@Log("下发输送线运动命令")
public ResponseEntity<Object> toCommandTP(@RequestBody JSONObject form) {
String device_code = form.getString("device_code");
public ResponseEntity<TableDataInfo> toCommandTP(@RequestBody ComTp form) {
String device_code = form.getDevice_code();
SchBasePoint code = iSchBasePointService.getOne(new QueryWrapper<SchBasePoint>().eq("code", device_code));
if (code!=null && !code.getIs_used()){
return new ResponseEntity<>(ApiError.error(String.format("输送线%s模式不正确不允许下发运动",device_code)),HttpStatus.OK);
throw new BadRequestException(String.format("输送线%s模式不正确不允许下发运动",device_code));
}
wmsToAcsService.toCommand(device_code,form.getString("cmd"));
wmsToAcsService.toCommand(device_code,form.getMode());
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}

View File

@@ -0,0 +1,19 @@
package org.nl.wms.pda_manage.devicemanage.dto;
import lombok.Data;
@Data
public class ComTp {
/**
* 扫码点位
*/
private String device_code;
/**
* 操作命令
*/
private String mode ;
/**
* 载具编码
*/
private String vehicle_code ;
}

View File

@@ -2,10 +2,22 @@ package org.nl.wms.pda_manage.group;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
import org.nl.wms.base_manage.material.service.dto.MaterialQuery;
import org.nl.wms.early_manage.service.early_inv.dao.AlmEarlyInv;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import org.nl.wms.pda_manage.group.dto.GroupItemData;
import org.nl.wms.pda_manage.group.dto.MaterGroupDto;
import org.nl.wms.pda_manage.group.dto.MaterItem;
import org.nl.wms.pda_manage.group.dto.PdaMaterQuery;
import org.nl.wms.pda_manage.palletio.service.PalletIostorinvService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -15,28 +27,89 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 出入库单主表 前端控制器
* </p>
* 物料组盘入库
*
* @author generator
* @since 2024-03-28
*/
@RestController
@RequestMapping("api/group")
@RequestMapping("api/groupMater")
public class GroupController {
@Autowired
private IMdGruopDickService iMdGruopDickService;
@Autowired
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
@PostMapping("in")
@PostMapping("storCode")
@SaIgnore
@Log("手持组盘操作")
public ResponseEntity<Object> inStorage(@RequestBody JSONObject form) {
iMdGruopDickService.groupDick(form);
@Log("仓库信息")
public ResponseEntity<TableDataInfo> getStorCode(@RequestBody MaterGroupDto form) {
Assert.noNullElements(new Object[]{form,form.getItem(),form.getStor_code()},"请求参数不能为空");
for (MaterItem item : form.getItem()) {
GroupItemData itemData = new GroupItemData();
itemData.setSingle_weight(item.getSingle_weight());
item.setForm_data(itemData);
item.setUnit_id("16");
}
iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(form));
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
/**
* 物料列表
* @param query
* @return
*/
@PostMapping("maters")
@SaIgnore
@Log("物料列表")
public ResponseEntity<TableDataInfo<MdMeMaterialbase>> inStorage(@RequestBody PdaMaterQuery query) {
PageQuery pageQuery = new PageQuery();
pageQuery.setPage(query.getPage()-1);
pageQuery.setSize(query.getSize());
MaterialQuery materialQuery = new MaterialQuery();
if (!StringUtils.isEmpty(query.getSearch())){
materialQuery.setSearch(query.getSearch());
}
Page mapPage = iMdMeMaterialbaseService.pageMaps(pageQuery.build(), materialQuery.build());
List<Map<String, Object>> records = mapPage.getRecords();
ArrayList<MaterItem> items = new ArrayList<>();
for (Map record : records) {
JSONObject jsonM = new JSONObject(record);
MaterItem item = jsonM.toJavaObject(MaterItem.class);
item.setUnit_id("个/只");
items.add(item);
}
mapPage.setRecords(items);
return new ResponseEntity<>(TableDataInfo.build(mapPage),HttpStatus.OK);
}
/**
* 手持物料组盘操作
* @param form
* @return
*/
@PostMapping("in")
@SaIgnore
@Log("手持物料组盘操作")
public ResponseEntity<TableDataInfo> inStorage(@RequestBody JSONObject jform) {
MaterGroupDto form = jform.toJavaObject(MaterGroupDto.class);
Assert.noNullElements(new Object[]{form,form.getItem(),form.getStor_code()},"请求参数不能为空");
for (MaterItem item : form.getItem()) {
GroupItemData itemData = new GroupItemData();
itemData.setSingle_weight(item.getSingle_weight());
item.setForm_data(itemData);
item.setUnit_id("16");
}
iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(form));
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
}

View File

@@ -0,0 +1,70 @@
package org.nl.wms.pda_manage.group;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.base_manage.material.service.IMdMeMaterialbaseService;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
import org.nl.wms.base_manage.material.service.dto.MaterialQuery;
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
import org.nl.wms.pda_manage.group.dto.GroupItemData;
import org.nl.wms.pda_manage.group.dto.MaterGroupDto;
import org.nl.wms.pda_manage.group.dto.MaterItem;
import org.nl.wms.pda_manage.group.dto.PdaMaterQuery;
import org.springframework.beans.factory.annotation.Autowired;
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;
/**
* 单据组盘入库
*
* @author generator
* @since 2024-03-28
*/
@RestController
@RequestMapping("api/group")
public class GroupOrderController {
@Autowired
private IMdGruopDickService iMdGruopDickService;
@Autowired
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
@PostMapping("maters")
@SaIgnore
@Log("物料列表")
public ResponseEntity<TableDataInfo<MdMeMaterialbase>> inStorage(@RequestBody PdaMaterQuery query) {
PageQuery pageQuery = new PageQuery();
pageQuery.setPage(query.getPage());
pageQuery.setSize(query.getSize());
MaterialQuery materialQuery = new MaterialQuery();
materialQuery.setSearch(query.getSearch());
Page<MdMeMaterialbase> page = iMdMeMaterialbaseService.page(pageQuery.build(), materialQuery.build());
return new ResponseEntity<>(TableDataInfo.build(page),HttpStatus.OK);
}
@PostMapping("in")
@SaIgnore
@Log("手持物料组盘操作")
public ResponseEntity<Object> inStorage(@RequestBody MaterGroupDto form) {
Assert.noNullElements(new Object[]{form,form.getItem(),form.getStor_code()},"请求参数不能为空");
for (MaterItem item : form.getItem()) {
GroupItemData itemData = new GroupItemData();
itemData.setSingle_weight(item.getSingle_weight());
item.setForm_data(itemData);
}
iMdGruopDickService.groupDick((JSONObject) JSONObject.toJSON(form));
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
}

View File

@@ -0,0 +1,23 @@
package org.nl.wms.pda_manage.group.dto;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 描述单据及单重
*/
@Data
public class GroupItemData {
/**
* 描述单据
*/
@JsonProperty("FMoBillNo")
@JSONField(name = "FMoBillNo")
private String FMoBillNo;
/**
* 输入的物料单重
*/
private String single_weight;
}

View File

@@ -0,0 +1,34 @@
package org.nl.wms.pda_manage.group.dto;
import lombok.Data;
import java.util.List;
/**
* 组盘入库数据
*/
@Data
public class MaterGroupDto {
/**
* 仓库编码
*/
private String stor_code;
/**
* 主数据原单id
*/
private String source_form_id;
/**
* 主数据原单类型
*/
private String source_form_type;
/**
* 备注
*/
private String remark;
/**
* 组盘物料明细数据
*/
private List<MaterItem> item;
}

View File

@@ -0,0 +1,63 @@
package org.nl.wms.pda_manage.group.dto;
import lombok.Data;
/**
* 组盘入库物料明细数据
*/
@Data
public class MaterItem {
/**
* 物料编码
*/
private String material_code;
/**
* 物料id
*/
private String material_id;
/**
* 物料名称
*/
private String material_name;
/**
* 物料规格
*/
private String material_spec;
/**
* 单位
*/
private String unit_id;
/**
* 物料单重
*/
private String single_weight;
/**
* 物料批次
*/
private String pcsn;
/**
* 物料数量
*/
private Integer qty;
/**
* 载具编码
*/
private String vehicle_code;
/**
* 仓库编码
*/
private String stor_code;
/**
* 原单id
*/
private String source_form_id;
/**
* 原单类型
*/
private String source_form_type;
/**
* 描述单据及单重
*/
private GroupItemData form_data;
}

View File

@@ -0,0 +1,27 @@
package org.nl.wms.pda_manage.group.dto;
import lombok.Data;
import org.nl.common.domain.entity.BaseQuery;
import org.nl.wms.base_manage.material.service.dao.MdMeMaterialbase;
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
/**
* 组盘入库物料查询
*/
@Data
public class PdaMaterQuery {
/**
* 物料名称
*/
private String search;
/**
* 页码
*/
private Integer page;
/**
* 页数据
*/
private Integer size;
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pm_manage.form_data.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
@@ -38,6 +39,7 @@ public class PmFormDataController {
@DeleteMapping
@Transactional
@Log("删除单据")
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
if (ids.length > 0) {
iPmFormDataService.removeByIds(Arrays.asList(ids));
@@ -55,6 +57,7 @@ public class PmFormDataController {
@GetMapping("/sync/{type}")
@Log("单据同步")
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl) {
//参数判读,参数解析,调用参数入库
iPmFormDataService.syncFormData("type", formDtl);

View File

@@ -43,11 +43,13 @@ public class CheckController {
@GetMapping()
@Log("盘点单查询")
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
@Log("盘点单明细查询")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());

View File

@@ -44,17 +44,20 @@ public class StIvtIostorinvController {
return new ResponseEntity<>(TableDataInfo.build(result), HttpStatus.OK);
}
@PostMapping("delete")
@Log("删除入库单")
public ResponseEntity<Object> delete(@RequestBody List<String> ids) {
iStIvtIostorinvService.removeByIds(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping
@Log("创建入库单")
public ResponseEntity<Object> save(@RequestBody JSONObject form) {
iStIvtIostorinvService.save(form);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/update")
@Log("更新入库单")
public ResponseEntity<Object> update(@RequestBody JSONObject form) {
iStIvtIostorinvService.update(form);
return new ResponseEntity<>(HttpStatus.OK);

View File

@@ -256,7 +256,13 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvOutMapp
List<StIvtIostorinvdtlVo> dtlVo = iStIvtIostorinvDtlService.getDtlVo(iostorinv.getId());
List<String> vechiles = dtlVo.stream().map(StIvtIostorinvdtlVo::getVehicle_code).collect(Collectors.toList());
//扔一个物料信息进去
BussEventMulticaster.Publish(new FlowStartEvent("st_ivt_iostorinv_" + (iostorinv.getIn_storage() ? "in" : "out")
String BaseModeKey;
if (dtlVo.get(0).getVehicle_code().contains("T")){
BaseModeKey="st_ivt_iostorinv_tp_";
}else {
BaseModeKey= "st_ivt_iostorinv_";
}
BussEventMulticaster.Publish(new FlowStartEvent(BaseModeKey + (iostorinv.getIn_storage() ? "in" : "out")
, (proc_inst_id, innerVehicle) -> iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
.set("proc_inst_id", proc_inst_id)
.eq("is_delete",false)

View File

@@ -35,11 +35,13 @@ public class MovingController {
@GetMapping()
@Log("查看移库单")
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query,page)), HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
@Log("查看移库单明细")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id){
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
@@ -59,6 +61,7 @@ public class MovingController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/updateStatus")
@Log("更新移库状态")
public ResponseEntity<Object> updateStatus(@RequestBody JSONObject param) {
//TODO:明细校验
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
@@ -67,12 +70,14 @@ public class MovingController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/taskOpen")
@Log("移动库作业下发")
public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) {
movingService.taskOpen(param);
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping()
@Log("删除移库单")
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
movingService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);

View File

@@ -35,17 +35,20 @@ public class PickingController {
@GetMapping()
@Log("拣选单查看")
public ResponseEntity<Object> queryAll(FormDataQuery query, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iPmFormDataService.queryTree(query, page)), HttpStatus.OK);
}
@PostMapping("/updateDtl")
@Log("更新拣选明细")
public ResponseEntity<Object> updateDtl(@RequestBody JSONArray params) {
pickingService.update(params);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/getSonFormData/{id}")
@Log("查询子单据")
public ResponseEntity<Object> getSonDtlFormData(@PathVariable String id) {
//参数判读,参数解析,调用参数入库
//Page<BmFormStruc> page = iBmFormStrucService.page(pageQuery.build(), query.build());
@@ -54,6 +57,7 @@ public class PickingController {
@GetMapping("/sync/{type}")
@Log("单据同步")
public ResponseEntity<Object> sync(@RequestParam String type, String formDtl) {
//参数判读,参数解析,调用参数入库
iPmFormDataService.syncFormData("type", formDtl);
@@ -68,6 +72,7 @@ public class PickingController {
}
@PostMapping("/updateStatus")
@Log("修改单据状态")
public ResponseEntity<Object> updateStatus(@RequestBody JSONObject param) {
//TODO:明细校验
iPmFormDataService.update(new UpdateWrapper<PmFormData>()

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
@@ -35,11 +36,13 @@ public class StIvtStructattrController {
private IStIvtStructattrService structattrService;
@GetMapping
@Log("仓位查询")
public ResponseEntity<Object> query(StructattrQuery query, PageQuery page) {
return new ResponseEntity<>(structattrService.pageQuery(query,page), HttpStatus.OK);
}
@PostMapping
@Log("仓位新增")
public ResponseEntity<Object> create(@Validated @RequestBody StIvtStructattr dto) {
dto.setId(IdUtil.getStringId());
dto.setCreate_id(SecurityUtils.getCurrentUserId());
@@ -50,6 +53,7 @@ public class StIvtStructattrController {
}
@PutMapping
@Log("仓位修改")
public ResponseEntity<Object> update(@Validated @RequestBody StIvtStructattr dto) {
String vehicle_code = dto.getVehicle_code();
if (StringUtils.isEmpty(vehicle_code)){
@@ -60,12 +64,14 @@ public class StIvtStructattrController {
}
@DeleteMapping
@Log("仓位删除")
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
structattrService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PutMapping("/changeActive")
@Log("仓位状态改变")
public ResponseEntity<Object> changeActive(@RequestBody StIvtStructattr dto) {
structattrService.changeActive(dto);
return new ResponseEntity<>(HttpStatus.OK);
@@ -78,6 +84,7 @@ public class StIvtStructattrController {
* @return
*/
@GetMapping("/getStructIvt")
@Log("查询库存")
public ResponseEntity<Object> getStructIvt(StructattrQuery query, PageQuery page) {
return new ResponseEntity<>(structattrService.getStructIvt(query,page), HttpStatus.OK);
}

View File

@@ -81,6 +81,7 @@
</if>
<if test="is_lock != null and is_lock != ''">
and md_pb_vehicleMater.is_lock = false
and md_pb_vehicleMater.frozen_qty = 0
</if>
<if test="order_by != null and order_by != ''">
order by ${order_by}

View File

@@ -18,7 +18,7 @@ import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
@Order(100)
@ConditionalOnProperty(name = "spring.profiles.active", havingValue = "prod")
@ConditionalOnProperty(name = "jobrun", havingValue = "true")
public class JobRunner implements ApplicationRunner {
private static final Logger log = LoggerFactory.getLogger(JobRunner.class);
private final ISysQuartzJobService quartzJobService;

View File

@@ -32,37 +32,37 @@ public class SysQuartzLog implements Serializable {
/**
* bean名
*/
private String beanName;
private String bean_name;
/**
* 创建时间
*/
private String createTime;
private String create_time;
/**
* corn表达式
*/
private String cronExpression;
private String cron_expression;
/**
* 异常信息
*/
private String exceptionDetail;
private String exception_detail;
/**
* 是否成功
*/
private Boolean isSuccess;
private Boolean is_success;
/**
* 任务名称
*/
private String jobName;
private String job_name;
/**
* 方法名称
*/
private String methodName;
private String method_name;
/**
* 参数

View File

@@ -59,11 +59,11 @@ public class SysQuartzJobServiceImpl extends ServiceImpl<SysQuartzJobMapper, Sys
@Override
public IPage<SysQuartzLog> queryAllLog(JobQuery criteria, PageQuery page) {
LambdaQueryWrapper<SysQuartzLog> lam = new LambdaQueryWrapper<>();
lam.like(ObjectUtil.isNotEmpty(criteria.getJob_name()), SysQuartzLog::getJobName, criteria.getJob_name())
.eq(ObjectUtil.isNotEmpty(criteria.getIsSuccess()), SysQuartzLog::getIsSuccess, criteria.getIsSuccess())
lam.like(ObjectUtil.isNotEmpty(criteria.getJob_name()), SysQuartzLog::getJob_name, criteria.getJob_name())
.eq(ObjectUtil.isNotEmpty(criteria.getIsSuccess()), SysQuartzLog::getIs_success, criteria.getIsSuccess())
.nested(ObjectUtil.isNotEmpty(criteria.getCreate_time()), i -> {
i.ge(SysQuartzLog::getCreateTime, criteria.getCreate_time().get(0))
.le(SysQuartzLog::getCreateTime, criteria.getCreate_time().get(1));
i.ge(SysQuartzLog::getCreate_time, criteria.getCreate_time().get(0))
.le(SysQuartzLog::getCreate_time, criteria.getCreate_time().get(1));
});
IPage<SysQuartzLog> pages = new Page<>(page.getPage() + 1, page.getSize());
quartzLogMapper.selectPage(pages, lam);

View File

@@ -1,26 +0,0 @@
package org.nl.wms.system_manage.service.quartz.task;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @Author: lyd
* @Description: 测试例子
* @Date: 2022/12/19
*/
@Slf4j
@Component
public class TestTask {
public void run(){
log.info("run 执行成功");
}
public void run1(String str){
log.info("run1 执行成功,参数为: {}" + str);
}
public void run2(){
log.info("run2 执行成功");
}
}

View File

@@ -53,12 +53,12 @@ public class ExecutionJob extends QuartzJobBean {
SysQuartzLog logDto = new SysQuartzLog();
logDto.setLogId(IdUtil.getSnowflake(1,1).nextIdStr());
logDto.setJobName(quartzJob.getJob_name());
logDto.setBeanName(quartzJob.getBean_name());
logDto.setMethodName(quartzJob.getMethod_name());
logDto.setJob_name(quartzJob.getJob_name());
logDto.setBean_name(quartzJob.getBean_name());
logDto.setMethod_name(quartzJob.getMethod_name());
logDto.setParams(quartzJob.getParams());
long startTime = System.currentTimeMillis();
logDto.setCronExpression(quartzJob.getCron_expression());
logDto.setCron_expression(quartzJob.getCron_expression());
try {
// 执行任务
QuartzRunnable task = new QuartzRunnable(quartzJob.getBean_name(), quartzJob.getMethod_name(),
@@ -71,7 +71,7 @@ public class ExecutionJob extends QuartzJobBean {
redisUtils.set(uuid, true);
}
// 任务状态
logDto.setIsSuccess(true);
logDto.setIs_success(true);
// 判断是否存在子任务
if (StrUtil.isNotEmpty(quartzJob.getSub_task())) {
String[] tasks = quartzJob.getSub_task().split("[,]");
@@ -85,8 +85,8 @@ public class ExecutionJob extends QuartzJobBean {
long times = System.currentTimeMillis() - startTime;
logDto.setTime(times);
// 任务状态 0成功 1失败
logDto.setIsSuccess(false);
logDto.setExceptionDetail(e.getMessage());
logDto.setIs_success(false);
logDto.setException_detail(e.getMessage());
// 任务如果失败了则暂停
if (quartzJob.getPause_after_failure() != null && quartzJob.getPause_after_failure()) {
quartzJob.setIs_pause(false);