rev:变动库存支持单据跟任务

This commit is contained in:
zhangzq
2024-07-03 15:03:53 +08:00
parent 0a006bb546
commit d6bd4a360b
45 changed files with 307 additions and 213 deletions

View File

@@ -74,6 +74,7 @@ public class SpelUtil {
// String value = expression.getValue(context, String.class); // String value = expression.getValue(context, String.class);
// System.out.println(value); // System.out.println(value);
} }
//如果表达式为null,空则返回''
public static Map<String,String> parse(JSONObject sourceData,Map<String,String> fieldSkip){ public static Map<String,String> parse(JSONObject sourceData,Map<String,String> fieldSkip){
StandardEvaluationContext context = new StandardEvaluationContext(); StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("M",sourceData); context.setVariable("M",sourceData);

View File

@@ -78,7 +78,7 @@ public class StIvtBsrealstorattrController {
@PutMapping("/changeActive") @PutMapping("/changeActive")
public ResponseEntity<Object> changeActive(@Validated @RequestBody StIvtBsrealstorattr dao) { public ResponseEntity<Object> changeActive(@Validated @RequestBody StIvtBsrealstorattr dao) {
iStIvtBsrealstorattrService.changeActive(dao); iStIvtBsrealstorattrService.changeActive(dao);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/batchSaveAttr") @PostMapping("/batchSaveAttr")
@@ -117,7 +117,7 @@ public class StIvtBsrealstorattrController {
} }
} }
iStIvtStructattrService.saveBatch(list); iStIvtStructattrService.saveBatch(list);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
} }

View File

@@ -51,7 +51,7 @@ public class BmClassStandardController {
@PutMapping @PutMapping
public ResponseEntity<Object> update(@Validated @RequestBody JSONObject form) { public ResponseEntity<Object> update(@Validated @RequestBody JSONObject form) {
classStandardService.updateForm(form); classStandardService.updateForm(form);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@DeleteMapping @DeleteMapping

View File

@@ -56,7 +56,7 @@ public class BmCustomerController {
@Log("修改客户基础表") @Log("修改客户基础表")
public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) { public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) {
customerService.update(dto); customerService.update(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除客户基础表") @Log("删除客户基础表")

View File

@@ -62,7 +62,7 @@ public class StIvtSectattrController {
@PutMapping("/changeActive") @PutMapping("/changeActive")
public ResponseEntity<Object> changeActive(@Validated @RequestBody StIvtSectattr dao) { public ResponseEntity<Object> changeActive(@Validated @RequestBody StIvtSectattr dao) {
iStIvtSectattrService.changeActive(dao); iStIvtSectattrService.changeActive(dao);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@GetMapping("/getSect") @GetMapping("/getSect")

View File

@@ -51,7 +51,7 @@ public class BmVehicleInfoController {
@Log("修改载具") @Log("修改载具")
public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) { public ResponseEntity<Object> update(@Validated @RequestBody JSONObject dto) {
vehicleInfoService.update(dto); vehicleInfoService.update(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除载具") @Log("删除载具")
@@ -65,7 +65,7 @@ public class BmVehicleInfoController {
@Log("修改点位启用状态") @Log("修改点位启用状态")
public ResponseEntity<Object> changeActive(@RequestBody JSONObject json) { public ResponseEntity<Object> changeActive(@RequestBody JSONObject json) {
vehicleInfoService.changeActive(json); vehicleInfoService.changeActive(json);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@GetMapping("/getVehicle/{code}") @GetMapping("/getVehicle/{code}")

View File

@@ -76,7 +76,7 @@ public class StStrategyConfigController {
@Log("修改启用状态") @Log("修改启用状态")
public ResponseEntity<Object> changeActive(@Validated @RequestBody StStrategyConfig dao) { public ResponseEntity<Object> changeActive(@Validated @RequestBody StStrategyConfig dao) {
iStStrategyConfigService.changeActive(dao); iStStrategyConfigService.changeActive(dao);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
} }

View File

@@ -68,7 +68,7 @@ public class StartDecisionChainer extends DecisionerChain<List> {
} }
boolean in_storage = StatusEnum.STRATEGY_TYPE.code("入库").equals(strategy_type); boolean in_storage = StatusEnum.STRATEGY_TYPE.code("入库").equals(strategy_type);
if (in_storage){ if (in_storage){
return MapOf.of("struct_code",processResult.get(0)); return MapOf.of("form_data",MapOf.of("end_struct_code",processResult.get(0)));
}else { }else {
return MapOf.of("vehicle_code",processResult.stream().collect(Collectors.joining(","))); return MapOf.of("vehicle_code",processResult.stream().collect(Collectors.joining(",")));
} }

View File

@@ -53,7 +53,7 @@ public class SchBasePointController {
entity.setUpdate_name(SecurityUtils.getCurrentNickName()); entity.setUpdate_name(SecurityUtils.getCurrentNickName());
entity.setUpdate_time(DateUtil.now()); entity.setUpdate_time(DateUtil.now());
pointService.updateById(entity); pointService.updateById(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }

View File

@@ -51,7 +51,7 @@ public class SchBaseRegionController {
entity.setUpdate_name(SecurityUtils.getCurrentNickName()); entity.setUpdate_name(SecurityUtils.getCurrentNickName());
entity.setUpdate_time(DateUtil.now()); entity.setUpdate_time(DateUtil.now());
regionService.updateById(entity); regionService.updateById(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }

View File

@@ -4,6 +4,8 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.nl.common.publish.event.PublishEvent; import org.nl.common.publish.event.PublishEvent;
import java.math.BigDecimal;
/* /*
* @author ZZQ * @author ZZQ
* @Date 2024/5/23 13:15 * @Date 2024/5/23 13:15
@@ -12,16 +14,16 @@ import org.nl.common.publish.event.PublishEvent;
@Builder @Builder
public class StructEvent extends PublishEvent { public class StructEvent extends PublishEvent {
/** /**
* 任务类型 * 变动任务类型
*/ */
private String task_type; private String task_type;
/** /**
* 载具编码 * 载具编码
*/ */
private String vehicle_code; private String vehicle_code;
//变动起点 //变动货位
private String point_code1; private String struct_code;
//变动终点 //变动数量
private String point_code2; private BigDecimal change_qty;
} }

View File

@@ -95,20 +95,11 @@ public class ConveyorOutStorageTask extends AbstractTask {
@Override @Override
public void updateStatus(JSONObject data) { public void updateStatus(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
} }
@Override @Override
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
} }
@Override @Override

View File

@@ -11,6 +11,7 @@ import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster; import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.MapOf; import org.nl.common.utils.MapOf;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask; import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService; import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService;
@@ -25,6 +26,7 @@ import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo; import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -45,12 +47,16 @@ import java.util.List;
@Service("groupInStorage") @Service("groupInStorage")
public class GroupDickInStorageTask extends AbstractTask { public class GroupDickInStorageTask extends AbstractTask {
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
@Autowired @Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService; private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired @Autowired
private IMdGruopDickService iMdGruopDickService; private IMdGruopDickService iMdGruopDickService;
@Autowired @Autowired
private IActRuExecutionService iActRuExecutionService; private IActRuExecutionService iActRuExecutionService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@Override @Override
public JSONObject createTask(JSONObject data) { public JSONObject createTask(JSONObject data) {
@@ -103,6 +109,10 @@ public class GroupDickInStorageTask extends AbstractTask {
@Override @Override
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
//跟新库存
iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.TRUE);
} }

View File

@@ -5,28 +5,25 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException; import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask; import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/* /*
@@ -38,21 +35,23 @@ import java.util.stream.Collectors;
public class InStorageTask extends AbstractTask { public class InStorageTask extends AbstractTask {
@Autowired @Autowired
ISchBaseTaskService taskService; private ISchBaseTaskService iSchBaseTaskService;
@Autowired @Autowired
IMdPbVehicleMaterService iMdPbVehicleMaterService; private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@Override @Override
public JSONObject createTask(JSONObject from) { public JSONObject createTask(JSONObject from) {
String vehicle_code = from.getString("vehicle_code"); String vehicle_code = from.getString("vehicle_code");
String struct_code = from.getString("struct_code"); String struct_code = from.getJSONObject("form_data").getString("end_struct_code");
String start_point = from.getString("start_point"); String start_point = from.getString("start_point");
String task_type = from.getString("task_type"); String task_type = from.getString("task_type");
if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(start_point)||StringUtils.isEmpty(struct_code)){ if (StringUtils.isEmpty(vehicle_code) ||StringUtils.isEmpty(start_point)||StringUtils.isEmpty(struct_code)){
throw new BadRequestException("创建任务失败:方法请求参数不能为空"); throw new BadRequestException("创建任务失败:方法请求参数不能为空");
} }
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code) List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>().eq("vehicle_code", vehicle_code)
.ne("status", StatusEnum.FORM_STATUS.code("完成"))); .ne("status", StatusEnum.FORM_STATUS.code("完成")));
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(","))); throw new BadRequestException("当前载具存在任务:"+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
@@ -70,7 +69,7 @@ public class InStorageTask extends AbstractTask {
task.setVehicle_code(vehicle_code); task.setVehicle_code(vehicle_code);
task.setPoint_code1(start_point); task.setPoint_code1(start_point);
task.setPoint_code2(struct_code); task.setPoint_code2(struct_code);
taskService.create(task); iSchBaseTaskService.create(task);
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>() iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
.set(MdPbVehicleMater::getTask_code,task.getTask_code()) .set(MdPbVehicleMater::getTask_code,task.getTask_code())
.eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()));
@@ -82,14 +81,10 @@ public class InStorageTask extends AbstractTask {
@Transactional @Transactional
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code"))); SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
//跟新库存 //跟新库存
BussEventMulticaster.Publish(StructEvent.builder() iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code2(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.TRUE);
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
} }
@Override @Override

View File

@@ -102,25 +102,13 @@ public class OutStorageTask extends AbstractTask {
@Transactional @Transactional
public void updateStatus(JSONObject data) { public void updateStatus(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
} }
@Override @Override
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code"))); SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder() iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.FALSE);
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
} }
@Override @Override

View File

@@ -23,6 +23,7 @@ import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo; import org.nl.wms.md_manage.vehicleMater.service.dto.MdPbVehicleMaterVo;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -43,6 +44,8 @@ import java.util.List;
@Service("palletInStorageTask") @Service("palletInStorageTask")
public class PalletInStorageTask extends AbstractTask { public class PalletInStorageTask extends AbstractTask {
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@Autowired @Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService; private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@Autowired @Autowired
@@ -79,11 +82,15 @@ public class PalletInStorageTask extends AbstractTask {
@Override @Override
public void updateStatus(JSONObject data) { public void updateStatus(JSONObject data) {
this.updateTask(data);
} }
@Override @Override
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
//跟新库存
iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code2(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.TRUE);
} }

View File

@@ -17,7 +17,6 @@ import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater; import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.system_manage.service.param.ISysParamService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -36,7 +35,9 @@ import java.util.stream.Collectors;
public class PickStorageTask extends AbstractTask { public class PickStorageTask extends AbstractTask {
@Autowired @Autowired
private ISchBaseTaskService taskService; private ISchBaseTaskService iSchBaseTaskService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService;
@Autowired @Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService; private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@@ -51,7 +52,7 @@ public class PickStorageTask extends AbstractTask {
throw new BadRequestException("创建任务失败:方法请求参数不能为空"); throw new BadRequestException("创建任务失败:方法请求参数不能为空");
} }
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>() List<SchBaseTask> list = iSchBaseTaskService.list(new QueryWrapper<SchBaseTask>()
.eq("task_type", from.getString("task_type")) .eq("task_type", from.getString("task_type"))
.ne("status", StatusEnum.FORM_STATUS.code("完成"))); .ne("status", StatusEnum.FORM_STATUS.code("完成")));
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)){
@@ -69,7 +70,7 @@ public class PickStorageTask extends AbstractTask {
task.setVehicle_code(vehicle_code); task.setVehicle_code(vehicle_code);
task.setPoint_code1(struct_code); task.setPoint_code1(struct_code);
task.setPoint_code2(target_point); task.setPoint_code2(target_point);
taskService.save(task); iSchBaseTaskService.save(task);
iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>() iMdPbVehicleMaterService.update(new LambdaUpdateWrapper<MdPbVehicleMater>()
.set(MdPbVehicleMater::getTask_code,task.getTask_code()) .set(MdPbVehicleMater::getTask_code,task.getTask_code())
.eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code())); .eq(MdPbVehicleMater::getVehicle_code,task.getVehicle_code()));
@@ -83,11 +84,15 @@ public class PickStorageTask extends AbstractTask {
@Override @Override
public void updateStatus(JSONObject data) { public void updateStatus(JSONObject data) {
this.updateTask(data);
} }
@Override @Override
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data);
SchBaseTask schBaseTask = iSchBaseTaskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
//跟新库存
iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code2(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.TRUE);
} }

View File

@@ -97,25 +97,15 @@ public class moveStorageTask extends AbstractTask {
@Transactional @Transactional
public void updateStatus(JSONObject data) { public void updateStatus(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder()
.task_type(schBaseTask.getTask_type())
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
} }
@Override @Override
public void finish(JSONObject data) { public void finish(JSONObject data) {
this.updateTask(data); this.updateTask(data);
SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code"))); SchBaseTask schBaseTask = taskService.getOne(new QueryWrapper<SchBaseTask>().eq("task_code", data.getString("task_code")));
BussEventMulticaster.Publish(StructEvent.builder() iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code1(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.FALSE);
.task_type(schBaseTask.getTask_type()) iStIvtStructattrService.changeStruct(schBaseTask.getPoint_code2(),schBaseTask.getVehicle_code(),schBaseTask.getTask_type(), null,Boolean.TRUE);
.vehicle_code(schBaseTask.getVehicle_code())
.point_code1(schBaseTask.getPoint_code1())
.point_code2(schBaseTask.getPoint_code2())
.build());
} }
@Override @Override

View File

@@ -96,8 +96,8 @@ public class SubProcessActivityBehavior extends FlowNodeActivityBehavior<JSONObj
subList.stream().map((Function<Object, CompletableFuture>) o -> CompletableFuture.runAsync(() -> { subList.stream().map((Function<Object, CompletableFuture>) o -> CompletableFuture.runAsync(() -> {
ExecutionEntity subEntity = new ExecutionEntity(); ExecutionEntity subEntity = new ExecutionEntity();
subEntity.setParent_id(entity.getProc_inst_id()); subEntity.setParent_id(entity.getProc_inst_id());
subEntity.setForm_id(entity.getForm_id()); subEntity.setForm_id(((JSONObject) o).getString("form_id"));
subEntity.setForm_type(entity.getForm_type()); subEntity.setForm_type(((JSONObject) o).getString("form_type"));
subEntity.setDeploymentId(entity.getDeploymentId()); subEntity.setDeploymentId(entity.getDeploymentId());
JSONObject subAuxParam = new JSONObject(); JSONObject subAuxParam = new JSONObject();
subAuxParam.putAll(entity.getAuxParam()); subAuxParam.putAll(entity.getAuxParam());

View File

@@ -50,11 +50,11 @@ public class ExecutionEntity<T> implements Cloneable{
*/ */
protected String deploymentId; protected String deploymentId;
/** /**
* 单类型 * 单类型
*/ */
protected String form_type; protected String form_type;
/** /**
* 单id * 单id
*/ */
protected String form_id; protected String form_id;

View File

@@ -33,7 +33,9 @@ public class ClassHandler extends TypeHandler<JSONObject,ExecutionEntity<JSONOb
if (process==null){ if (process==null){
throw new BadRequestException("当前serverTask配置的类信息不存在"); throw new BadRequestException("当前serverTask配置的类信息不存在");
} }
String form_type = flowNode.getForm_type();
JSONObject auxParam = new JSONObject(); JSONObject auxParam = new JSONObject();
auxParam.put("form_type",form_type);
auxParam.putAll(flowNode.getAuxParam()); auxParam.putAll(flowNode.getAuxParam());
if (!CollectionUtils.isEmpty(entity.getAuxParam())){ if (!CollectionUtils.isEmpty(entity.getAuxParam())){
auxParam.putAll(entity.getAuxParam()); auxParam.putAll(entity.getAuxParam());
@@ -45,14 +47,14 @@ public class ClassHandler extends TypeHandler<JSONObject,ExecutionEntity<JSONOb
//后续:涉及框架的参数提到框架中处理 //后续:涉及框架的参数提到框架中处理
String source_form_type = dto.getForm_type(); String source_form_type = dto.getForm_type();
String source_form_id = dto.getForm_id(); String source_form_id = dto.getForm_id();
if (dto.getForm_type().equals(flowNode.getForm_type())){ if (dto.getForm_type().equals(form_type)){
source_form_type = dto.getSource_form_type(); source_form_type = dto.getSource_form_type();
source_form_id = dto.getSource_form_id(); source_form_id = dto.getSource_form_id();
} }
result.put("source_form_id",source_form_id); result.put("source_form_id",source_form_id);
result.put("source_form_type",source_form_type); result.put("source_form_type",source_form_type);
result.put("form_id",form.getString("id")); result.put("form_id",form.getString("id"));
result.put("form_type",flowNode.getForm_type()); result.put("form_type", form_type);
return result; return result;
} }

View File

@@ -1,60 +1,93 @@
package org.nl.wms.flow_manage.flow.service.classprocessimpl; package org.nl.wms.flow_manage.flow.service.classprocessimpl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.SneakyThrows;
import org.apache.commons.lang3.ClassUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.exception.BadRequestException; import org.nl.common.domain.exception.BadRequestException;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.BussEventMulticaster; import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.ListOf;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SpelUtil;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.dispatch_manage.task.handler.AbstractTask;
import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess; import org.nl.wms.flow_manage.flow.framework.process.nodeType.excess.impl.process.classprocess.ClassProcess;
import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService;
import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService; import org.nl.wms.stor_manage.struct.service.dao.StIvtStructattr;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/* /*
* @author ZZQ * @author ZZQ
* @Date 2024/5/6 14:34 * @Date 2024/5/6 14:34
* 有任务的根据任务变动;没任务的直接变动库存
* 单据统一
* start_struct_code起始仓位end_struct_code目标仓位
* 如果有change_qty库存变动必须有变动数量则指定change_qty
* 如果没change_qty则取载具当前qtystart:为负end为正
*/ */
@Service @Service
public class StorageChangesProcessHandler implements ClassProcess { public class StorageChangesProcessHandler implements ClassProcess {
private static List<String> Base_Fields = ListOf.of("start_struct_code","end_struct_code","change_qty");
@Autowired @Autowired
private ISchBaseTaskService schBaseTaskService; private IStIvtStructattrService iStIvtStructattrService;
@Override @Override
@SneakyThrows
public JSONObject process(JSONObject from, JSONObject param) { public JSONObject process(JSONObject from, JSONObject param) {
//暂时出入入库的问题:库存变动中任务变动由任务变动接口处理 //基于任务变动
from.put("status",param.getString("status"));
from.put("update_time",DateUtil.now());
from.put("update_name",SecurityUtils.getCurrentNickName());
String vehicle_code = from.getString("vehicle_code"); String vehicle_code = from.getString("vehicle_code");
String form_type = param.getString("form_type");
if (StringUtils.isEmpty(vehicle_code)){ if (StringUtils.isEmpty(vehicle_code)){
throw new BadRequestException("库存变动失败:请求参数载具编码不能为空"); throw new BadRequestException("库存变动失败:请求参数载具编码不能为空");
} }
SchBaseTask schBaseTask = from.toJavaObject(SchBaseTask.class); if (form_type.equals("sch_base_task")){
schBaseTaskService.updateById(schBaseTask); String handleClass = from.getString("handle_class");
AbstractTask bean = (AbstractTask)SpringContextHolder.getBean(Class.forName(handleClass));
StatusEnum.FORM_STATUS.code("生成"); bean.finish(from);
StatusEnum.FORM_STATUS.code("执行中"); }else {
StatusEnum.FORM_STATUS.code("完成"); if (StringUtils.isEmpty(param.getString("task_type"))){
StatusEnum.FORM_STATUS.code("取消"); throw new BadRequestException("库存变动失败单据变动库存时需要配置task_type");
//TODO:后续在流程节点中配置监听时间触发 }
BussEventMulticaster.Publish(StructEvent.builder() //基于单据变动
.task_type(schBaseTask.getTask_type()) Map<String, String> spelMap = new HashMap<>();
.vehicle_code(schBaseTask.getVehicle_code()) Map<String, String> valueMap = new HashMap<>();
.point_code1(schBaseTask.getPoint_code1()) for (String base_field : Base_Fields) {
.point_code2(schBaseTask.getPoint_code2()) String skip = param.getString("base_field");
.build()); if (skip.contains("#M")){
spelMap.put(base_field,skip);
}else {
valueMap.put(base_field,skip);
}
}
if (!CollectionUtils.isEmpty(spelMap)){
Map<String, String> parse = SpelUtil.parse(from, spelMap);
valueMap.putAll(parse);
}
String start_struct_code = valueMap.get("start_struct_code");
String end_struct_code = valueMap.get("end_struct_code");
String change_qty = StringUtils.isEmpty(valueMap.get("change_qty"))?null:valueMap.get("change_qty");
if (StringUtils.isNotEmpty(start_struct_code)){
iStIvtStructattrService.changeStruct(start_struct_code,vehicle_code,param.getString("task_type"), new BigDecimal(change_qty),Boolean.FALSE);
}
if (StringUtils.isNotEmpty(end_struct_code)){
iStIvtStructattrService.changeStruct(end_struct_code,vehicle_code,param.getString("task_type"), new BigDecimal(change_qty),Boolean.TRUE);
}
}
return from; return from;
} }
} }

View File

@@ -2,11 +2,14 @@ package org.nl.wms.stor_manage.checkStorage.controller;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.TableDataInfo; import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log; import org.nl.common.anno.Log;
import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.entity.PageQuery;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.wms.md_manage.vehicleMater.service.IMdPbVehicleMaterService;
import org.nl.wms.md_manage.vehicleMater.service.dao.MdPbVehicleMater;
import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService;
import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery; import org.nl.wms.pm_manage.form_data.service.dto.FormDataQuery;
@@ -35,6 +38,8 @@ public class CheckController {
private IPmFormDataService iPmFormDataService; private IPmFormDataService iPmFormDataService;
@Autowired @Autowired
private CheckStorageService checkStorageService; private CheckStorageService checkStorageService;
@Autowired
private IMdPbVehicleMaterService iMdPbVehicleMaterService;
@GetMapping() @GetMapping()
@@ -68,17 +73,6 @@ public class CheckController {
} }
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/saveCheckTask")
@Log("盘点确认")
public ResponseEntity<Object> saveCheckTask(@RequestBody JSONObject param) {
//TODO:明细校验
param.getJSONObject("form_data");
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status", StatusEnum.FORM_STATUS.code("已分配"))
.set("form_data",param.getJSONObject("form_data").toJSONString())
.eq("id",param.getString("id")));
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/taskOpen") @PostMapping("/taskOpen")
@Log("盘点单下发") @Log("盘点单下发")
public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) { public ResponseEntity<Object> taskOpen(@RequestBody JSONObject param) {
@@ -86,6 +80,30 @@ public class CheckController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/saveCheckTask")
@Log("盘点确认")
public ResponseEntity<Object> saveCheckTask(@RequestBody JSONObject param) {
//TODO:明细校验
PmFormData pmFormData = param.toJavaObject(PmFormData.class);
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status", StatusEnum.FORM_STATUS.code("已分配"))
.set("form_data",param.getJSONObject("form_data").toJSONString())
.eq("id",param.getString("id")));
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/checkFinish")
@Log("盘点完成")
public ResponseEntity<Object> checkFinish(@RequestBody JSONObject param) {
//TODO:明细校验
PmFormData pmFormData = param.toJavaObject(PmFormData.class);
iPmFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status", StatusEnum.FORM_STATUS.code("已分配"))
.set("form_data",param.getJSONObject("form_data").toJSONString())
.eq("id",param.getString("id")));
return new ResponseEntity<>(HttpStatus.OK);
}
@DeleteMapping() @DeleteMapping()
public ResponseEntity<Object> delete(@RequestBody String[] ids) { public ResponseEntity<Object> delete(@RequestBody String[] ids) {
checkStorageService.delete(ids); checkStorageService.delete(ids);

View File

@@ -1,14 +1,11 @@
package org.nl.wms.stor_manage.monitor.listener; package org.nl.wms.stor_manage.monitor.listener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.publish.AbstraceListener; import org.nl.common.publish.AbstraceListener;
import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.dispatch_manage.task.handler.StructEvent;
import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService; import org.nl.wms.stor_manage.io.service.iostor_dtl.IStIvtIostorinvdtlService;
import org.nl.wms.stor_manage.io.service.iostor_dtl.dao.StIvtIostorinvdtl;
import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService; import org.nl.wms.stor_manage.struct.service.IStIvtStructattrService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -30,17 +27,7 @@ public class StructEventListener extends AbstraceListener<StructEvent> {
protected String doEvent(StructEvent event) { protected String doEvent(StructEvent event) {
//根据不同的task_type获取对应出入库类型 //根据不同的task_type获取对应出入库类型
String task_type = event.getTask_type(); String task_type = event.getTask_type();
if (StatusEnum.IOBILL_TYPE_IN.check(task_type)){ // structattrService.changeStruct(event.getStruct_code(),event.getVehicle_code(),task_type, event.getChange_qty());
structattrService.changeStruct(event.getPoint_code2(),event.getVehicle_code(),task_type,true);
}
if (StatusEnum.IOBILL_TYPE_OUT.check(task_type)){
structattrService.changeStruct(event.getPoint_code1(),null,task_type,false);
}
if (StatusEnum.IOBILL_TYPE_MOVE.check(task_type)){
structattrService.changeStruct(event.getPoint_code1(),null,task_type,false);
structattrService.changeStruct(event.getPoint_code2(),event.getVehicle_code(),task_type,true);
}
return null; return null;
} }
} }

View File

@@ -13,6 +13,7 @@ import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.utils.CodeUtil; import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.SpringContextHolder;
import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService; import org.nl.wms.base_manage.vehicle.service.IBmVehicleInfoService;
import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo; import org.nl.wms.base_manage.vehicle.service.dao.BmVehicleInfo;
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
@@ -27,6 +28,7 @@ import org.nl.wms.pm_manage.form_data.service.dao.PmFormData;
import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv; import org.nl.wms.stor_manage.io.service.iostor.dao.StIvtIostorinv;
import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo; import org.nl.wms.stor_manage.io.service.iostor_dtl.dto.StIvtIostorinvdtlVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -59,8 +61,6 @@ public class PickingService {
*/ */
@Transactional @Transactional
public void savePickTask(JSONArray params){ public void savePickTask(JSONArray params){
String now = DateUtil.now();
String user = SecurityUtils.getCurrentNickName();
PmFormData dtl = iFormDataService.getById((String)((Map) params.get(0)).get("parent_id")); PmFormData dtl = iFormDataService.getById((String)((Map) params.get(0)).get("parent_id"));
MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>() MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
.eq("vehicle_code", dtl.getVehicle_code()).eq("material_id", dtl.getMaterial_id())); .eq("vehicle_code", dtl.getVehicle_code()).eq("material_id", dtl.getMaterial_id()));
@@ -77,6 +77,8 @@ public class PickingService {
if (mCode>0){ if (mCode>0){
throw new BadRequestException("当前载具以存在载具物料信息"); throw new BadRequestException("当前载具以存在载具物料信息");
} }
String now = DateUtil.now();
String user = SecurityUtils.getCurrentNickName();
for (Object param : params) { for (Object param : params) {
JSONObject task = new JSONObject((Map) param); JSONObject task = new JSONObject((Map) param);
PmFormData data = task.toJavaObject(PmFormData.class); PmFormData data = task.toJavaObject(PmFormData.class);
@@ -91,46 +93,23 @@ public class PickingService {
data.setCreate_name(user); data.setCreate_name(user);
data.setId(IdUtil.getStringId()); data.setId(IdUtil.getStringId());
iFormDataService.save(data); iFormDataService.save(data);
String vehicle_code = data.getVehicle_code(); }
if (dtl.getVehicle_code().equals(vehicle_code)){ 单据状态变动:{
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>() iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("frozen_qty",0).set("update_time",now) .set("status", StatusEnum.FORM_STATUS.code("已分配")).eq("id", dtl.getId()));
.set("update_name", user) int count = iFormDataService.count(new QueryWrapper<PmFormData>()
.set("qty",data.getQty()) .eq("parent_id", dtl.getParent_id())
.eq("vehicle_code",vehicle_code)); .eq("status", StatusEnum.FORM_STATUS.code("生成")));
}else { if (count == 0) {
MdGruopDick dick = new MdGruopDick(); iFormDataService.update(new UpdateWrapper<PmFormData>()
dick.setVehicle_code(vehicle_code); .set("status", StatusEnum.FORM_STATUS.code("已分配"))
dick.setSource_form_type("Picking_Task"); .eq("id", dtl.getParent_id()));
dick.setSource_form_id(data.getId()); } else {
dick.setCreate_name(user); iFormDataService.update(new UpdateWrapper<PmFormData>()
dick.setCreate_time(now); .set("status", StatusEnum.FORM_STATUS.code("生成"))
dick.setStatus(StatusEnum.FORM_STATUS.code("完成")); .eq("id", dtl.getParent_id()));
dick.setCode(CodeUtil.getNewCode("md_group_dick"));
dick.setId(IdUtil.getStringId());
MdPbVehicleMater mater = new MdPbVehicleMater();
mater.setMaterial_id(one.getMaterial_id());
mater.setPcsn(one.getPcsn());
mater.setQty(data.getQty());
mater.setUnit_id(data.getUnit_id());
mater.setVehicle_code(vehicle_code);
//设置目标仓库
mater.setStor_code(data.getForm_data().getString("stor_code"));
mater.setHas_child(false);
mater.setId(IdUtil.getStringId());
mater.setGroup_id(dick.getId());
mater.setCreate_name(user);
mater.setCreate_time(now);
mater.setSource_form_type("Picking_Task");
mater.setSource_form_id(data.getId());
mater.setForm_data(one.getForm_data());
mater.setStor_code(one.getStor_code());
iMdPbVehicleMaterService.save(mater);
iMdGruopDickService.save(dick);
} }
} }
iFormDataService.update(new UpdateWrapper<PmFormData>()
.set("status",StatusEnum.FORM_STATUS.code("已分配")));
} }
@@ -139,6 +118,8 @@ public class PickingService {
if (StringUtils.isEmpty(mst.getProc_inst_id())){ if (StringUtils.isEmpty(mst.getProc_inst_id())){
throw new BadRequestException("当前单据不存在流程实例id"); throw new BadRequestException("当前单据不存在流程实例id");
} }
PickingService pickingService = SpringContextHolder.getBean(this.getClass());
pickingService.disGroup(mst);
JSONObject mstJ = (JSONObject) JSON.toJSON(mst); JSONObject mstJ = (JSONObject) JSON.toJSON(mst);
ExecutionDto dto = new ExecutionDto(); ExecutionDto dto = new ExecutionDto();
dto.setForm_id(mst.getId()); dto.setForm_id(mst.getId());
@@ -158,6 +139,60 @@ public class PickingService {
BussEventMulticaster.Publish(continueEvent); BussEventMulticaster.Publish(continueEvent);
} }
@Transactional
public void disGroup(PmFormData mst) {
List<PmFormData> dtls = iFormDataService.getByParentId(mst.getId());
for (PmFormData dtl : dtls) {
//载具物料信息
MdPbVehicleMater one = iMdPbVehicleMaterService.getOne(new QueryWrapper<MdPbVehicleMater>()
.eq("vehicle_code", dtl.getVehicle_code()).eq("material_id", dtl.getMaterial_id()));
List<PmFormData> dis = iFormDataService.getByParentId(dtl.getId());
for (PmFormData data : dis) {
String vehicle_code = data.getVehicle_code();
if (dtl.getVehicle_code().equals(vehicle_code)){
iMdPbVehicleMaterService.update(new UpdateWrapper<MdPbVehicleMater>()
.set("frozen_qty",0)
.set("update_time",DateUtil.now())
.set("update_name", SecurityUtils.getCurrentNickName())
.set("qty",data.getQty())
.eq("vehicle_code",vehicle_code));
}else {
组盘:{
MdGruopDick dick = new MdGruopDick();
dick.setVehicle_code(vehicle_code);
dick.setSource_form_type("Picking_Task");
dick.setSource_form_id(data.getId());
dick.setCreate_name(SecurityUtils.getCurrentNickName());
dick.setCreate_time(DateUtil.now());
dick.setStatus(StatusEnum.FORM_STATUS.code("完成"));
dick.setCode(CodeUtil.getNewCode("md_group_dick"));
dick.setId(IdUtil.getStringId());
MdPbVehicleMater mater = new MdPbVehicleMater();
mater.setMaterial_id(one.getMaterial_id());
mater.setPcsn(one.getPcsn());
mater.setQty(data.getQty());
mater.setUnit_id(data.getUnit_id());
mater.setVehicle_code(vehicle_code);
//设置目标仓库
mater.setStor_code(data.getForm_data().getString("stor_code"));
mater.setHas_child(false);
mater.setId(IdUtil.getStringId());
mater.setGroup_id(dick.getId());
mater.setCreate_name(SecurityUtils.getCurrentNickName());
mater.setCreate_time(DateUtil.now());
mater.setSource_form_type("Picking_Task");
mater.setSource_form_id(data.getId());
mater.setForm_data(one.getForm_data());
mater.setStor_code(one.getStor_code());
iMdPbVehicleMaterService.save(mater);
iMdGruopDickService.save(dick);
}
}
}
}
}
private List<ExecutionDto> packageT(JSONObject current,String itemField){ private List<ExecutionDto> packageT(JSONObject current,String itemField){
String id = current.getString(itemField); String id = current.getString(itemField);
List<PmFormData> items = iFormDataService.getByParentId(id); List<PmFormData> items = iFormDataService.getByParentId(id);

View File

@@ -60,6 +60,10 @@ public class StIvtStructivtflow implements Serializable {
* 总库存 * 总库存
*/ */
private BigDecimal qty; private BigDecimal qty;
/**
* 变动库存
*/
private BigDecimal change_qty;
/** /**
* 冻结库存 * 冻结库存

View File

@@ -2,6 +2,8 @@ package org.nl.wms.stor_manage.struct.controller;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.entity.PageQuery; import org.nl.common.domain.entity.PageQuery;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
@@ -49,8 +51,12 @@ public class StIvtStructattrController {
@PutMapping @PutMapping
public ResponseEntity<Object> update(@Validated @RequestBody StIvtStructattr dto) { public ResponseEntity<Object> update(@Validated @RequestBody StIvtStructattr dto) {
String vehicle_code = dto.getVehicle_code();
if (StringUtils.isEmpty(vehicle_code)){
dto.setVehicle_code(null);
}
structattrService.updateById(dto); structattrService.updateById(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@DeleteMapping @DeleteMapping
@@ -62,7 +68,7 @@ public class StIvtStructattrController {
@PutMapping("/changeActive") @PutMapping("/changeActive")
public ResponseEntity<Object> changeActive(@RequestBody StIvtStructattr dto) { public ResponseEntity<Object> changeActive(@RequestBody StIvtStructattr dto) {
structattrService.changeActive(dto); structattrService.changeActive(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@GetMapping("/getStructIvt") @GetMapping("/getStructIvt")

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery; import org.nl.wms.stor_manage.struct.service.dto.StructattrQuery;
import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto; import org.nl.wms.stor_manage.struct.service.dto.StructattrVechielDto;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -27,7 +28,7 @@ public interface IStIvtStructattrService extends IService<StIvtStructattr> {
*/ */
List<Map<String, Object>> getByQuery(StructattrQuery query); List<Map<String, Object>> getByQuery(StructattrQuery query);
void changeStruct(String struct_code,String vehicle_code,String task_type,Boolean in_storage); void changeStruct(String struct_code, String vehicle_code, String task_type, BigDecimal change_qty,Boolean growth);
void deleteAll(Long[] ids); void deleteAll(Long[] ids);
Object pageQuery(StructattrQuery query, PageQuery page); Object pageQuery(StructattrQuery query, PageQuery page);

View File

@@ -2,6 +2,7 @@ package org.nl.wms.stor_manage.struct.service.dao;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
@@ -160,6 +161,7 @@ public class StIvtStructattr implements Serializable {
/** /**
* 存储载具号 * 存储载具号
*/ */
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String vehicle_code; private String vehicle_code;
/** /**

View File

@@ -32,6 +32,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -64,25 +65,23 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
System.out.println(in); System.out.println(in);
} }
@Override @Override
public void changeStruct(String struct_code, String vehicle_code, String task_type,Boolean in_storage) { public void changeStruct(String struct_code, String vehicle_code, String task_type, BigDecimal change_qty,Boolean growth) {
String now = DateUtil.now();
this.update(new UpdateWrapper<StIvtStructattr>() this.update(new UpdateWrapper<StIvtStructattr>()
.set("vehicle_code",vehicle_code) .set("update_time",DateUtil.now())
.set("update_time",now) .set("lock_type", StatusEnum.LOCK.code("无锁"))
.set("lock_type", StatusEnum.LOCK.code("无锁")) .eq("struct_code",struct_code));
.eq("struct_code",struct_code));
//变动结存记录"如果没有载具物料信息则不考虑结存TODO:多级载具处理
List<MdPbVehicleMater> vehicleMaters = vehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", vehicle_code)); List<MdPbVehicleMater> vehicleMaters = vehicleMaterService.list(new QueryWrapper<MdPbVehicleMater>().eq("vehicle_code", vehicle_code));
List<StIvtStructivtflow> records = new ArrayList<>(); List<StIvtStructivtflow> records = new ArrayList<>();
StIvtStructattr attr = this.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_code", struct_code).select("stor_code")); StIvtStructattr attr = this.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_code", struct_code).select("stor_code"));
for (MdPbVehicleMater vehicleMater : vehicleMaters) { for (MdPbVehicleMater vehicleMater : vehicleMaters) {
StIvtStructivtflow record = new StIvtStructivtflow(); StIvtStructivtflow record = new StIvtStructivtflow();
record.setId(IdUtil.getStringId()); record.setId(IdUtil.getStringId());
record.setUpdate_time(now); record.setUpdate_time(DateUtil.now());
record.setVehicle_code(vehicleMater.getVehicle_code()); record.setVehicle_code(vehicleMater.getVehicle_code());
record.setMaterial_id(vehicleMater.getMaterial_id()); record.setMaterial_id(vehicleMater.getMaterial_id());
record.setPcsn(vehicleMater.getPcsn()); record.setPcsn(vehicleMater.getPcsn());
record.setQty(vehicleMater.getQty()); record.setQty(vehicleMater.getQty());
record.setChange_qty(change_qty==null?vehicleMater.getQty():change_qty);
record.setTask_type(task_type); record.setTask_type(task_type);
record.setFrozen_qty(vehicleMater.getFrozen_qty()); record.setFrozen_qty(vehicleMater.getFrozen_qty());
record.setSource_form_type(vehicleMater.getSource_form_type()); record.setSource_form_type(vehicleMater.getSource_form_type());
@@ -91,7 +90,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
record.setStruct_code(struct_code); record.setStruct_code(struct_code);
record.setStor_code(attr.getStor_code()); record.setStor_code(attr.getStor_code());
record.setVehicle_form_data(vehicleMater.getForm_data()); record.setVehicle_form_data(vehicleMater.getForm_data());
record.setGrowth(in_storage); record.setGrowth(growth);
records.add(record); records.add(record);
} }
if (!CollectionUtils.isEmpty(records)){ if (!CollectionUtils.isEmpty(records)){

View File

@@ -65,7 +65,7 @@ public class SysCodeRuleController {
// //SaCheckPermission("genCode:edit") // //SaCheckPermission("genCode:edit")
public ResponseEntity<Object> update(@RequestBody SysCodeRule codeRule) { public ResponseEntity<Object> update(@RequestBody SysCodeRule codeRule) {
codeRuleService.updateCodeRule(codeRule); codeRuleService.updateCodeRule(codeRule);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
//("导出任务数据") //("导出任务数据")

View File

@@ -60,7 +60,7 @@ public class SysCodeRuleDetailController {
// //SaCheckPermission("genCode:edit") // //SaCheckPermission("genCode:edit")
public ResponseEntity<Object> update(@RequestBody SysCodeRuleDetail json){ public ResponseEntity<Object> update(@RequestBody SysCodeRuleDetail json){
codeDetailService.update(json); codeDetailService.update(json);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
} }

View File

@@ -101,7 +101,7 @@ public class DeptController {
throw new BadRequestException("上级不能为自己"); throw new BadRequestException("上级不能为自己");
} }
deptService.updateDept(dept); deptService.updateDept(dept);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
// //
@Log("删除部门") @Log("删除部门")

View File

@@ -64,7 +64,7 @@ public class SysDictController {
@Log("修改字典") @Log("修改字典")
public ResponseEntity<Object> updateDict(@Validated @RequestBody Dict dto){ public ResponseEntity<Object> updateDict(@Validated @RequestBody Dict dto){
dictService.updateDict(dto); dictService.updateDict(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除字典") @Log("删除字典")

View File

@@ -108,7 +108,7 @@ public class SysMenuController {
//SaCheckPermission("menu:edit") //SaCheckPermission("menu:edit")
public ResponseEntity<Object> update( @RequestBody SysMenu form) { public ResponseEntity<Object> update( @RequestBody SysMenu form) {
iSysMenuService.update(form); iSysMenuService.update(form);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除菜单") @Log("删除菜单")

View File

@@ -59,7 +59,7 @@ class SysParamController {
////SaCheckPermission("param:edit") ////SaCheckPermission("param:edit")
public ResponseEntity<Object> update(@Validated @RequestBody Param param) { public ResponseEntity<Object> update(@Validated @RequestBody Param param) {
paramService.update(param); paramService.update(param);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除系统参数") @Log("删除系统参数")

View File

@@ -59,7 +59,7 @@ public class SysDataPermissionController {
////SaCheckPermission("@el.check('dataPermission:edit')") ////SaCheckPermission("@el.check('dataPermission:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody SysDataPermission permission) { public ResponseEntity<Object> update(@Validated @RequestBody SysDataPermission permission) {
dataPermissionService.update(permission); dataPermissionService.update(permission);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除数据权限") @Log("删除数据权限")

View File

@@ -68,7 +68,7 @@ public class SysQuartzJobController {
//SaCheckPermission("timing:edit") //SaCheckPermission("timing:edit")
public ResponseEntity<Object> update(@Validated @RequestBody SysQuartzJob resources) { public ResponseEntity<Object> update(@Validated @RequestBody SysQuartzJob resources) {
quartzJobService.updateJob(resources); quartzJobService.updateJob(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("更改定时任务状态") @Log("更改定时任务状态")
@@ -76,7 +76,7 @@ public class SysQuartzJobController {
//SaCheckPermission("timing:edit") //SaCheckPermission("timing:edit")
public ResponseEntity<Object> update(@PathVariable String id) { public ResponseEntity<Object> update(@PathVariable String id) {
quartzJobService.updateIsPause(quartzJobService.getById(id)); quartzJobService.updateIsPause(quartzJobService.getById(id));
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("执行定时任务") @Log("执行定时任务")
@@ -84,7 +84,7 @@ public class SysQuartzJobController {
//SaCheckPermission("timing:edit") //SaCheckPermission("timing:edit")
public ResponseEntity<Object> execution(@PathVariable String id) { public ResponseEntity<Object> execution(@PathVariable String id) {
quartzJobService.execution(quartzJobService.getById(id)); quartzJobService.execution(quartzJobService.getById(id));
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除定时任务") @Log("删除定时任务")

View File

@@ -59,7 +59,7 @@ public class SysRoleController {
//SaCheckPermission("roles:edit") //SaCheckPermission("roles:edit")
public ResponseEntity<Object> update(@RequestBody JSONObject param) { public ResponseEntity<Object> update(@RequestBody JSONObject param) {
roleService.update(param); roleService.update(param);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除角色") @Log("删除角色")
@@ -77,7 +77,7 @@ public class SysRoleController {
//SaCheckPermission("roles:edit") //SaCheckPermission("roles:edit")
public ResponseEntity<Object> updateMenu(@RequestBody JSONObject form) { public ResponseEntity<Object> updateMenu(@RequestBody JSONObject form) {
roleService.updateMenu(form); roleService.updateMenu(form);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
} }

View File

@@ -70,7 +70,7 @@ public class UserController {
@PutMapping @PutMapping
public ResponseEntity<Object> update( @RequestBody JSONObject resources) throws Exception { public ResponseEntity<Object> update( @RequestBody JSONObject resources) throws Exception {
userService.update(resources); userService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("修改用户:个人中心") @Log("修改用户:个人中心")
@@ -81,7 +81,7 @@ public class UserController {
throw new BadRequestException("不能修改他人资料"); throw new BadRequestException("不能修改他人资料");
} }
userService.update(JSON.parseObject(JSON.toJSONString(resources))); userService.update(JSON.parseObject(JSON.toJSONString(resources)));
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除用户") @Log("删除用户")

View File

@@ -51,7 +51,7 @@ public class ${className}Controller {
//@PreAuthorize("@el.check('${changeClassName}:edit')") //@PreAuthorize("@el.check('${changeClassName}:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody ${className}Dto dto){ public ResponseEntity<Object> update(@Validated @RequestBody ${className}Dto dto){
${changeClassName}Service.update(dto); ${changeClassName}Service.update(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.OK);
} }
@Log("删除${apiAlias}") @Log("删除${apiAlias}")

View File

@@ -205,6 +205,9 @@ export default {
}) })
formstruc.getHeader('st_ivt_checkdtl').then(res => { formstruc.getHeader('st_ivt_checkdtl').then(res => {
this.dtlCols = res this.dtlCols = res
res.forEach(a => {
this.dtlCols.form_data[a.value,'']
})
}) })
}, },
close() { close() {

View File

@@ -47,5 +47,12 @@ export function taskopen(data) {
data data
}) })
} }
export function checkFinish(data) {
return request({
url: '/api/check/checkFinish',
method: 'post',
data
})
}
export default {add, edit, del, updateStatus, taskopen, saveCheckTask} export default {add, edit, del, updateStatus, taskopen, saveCheckTask, checkFinish}

View File

@@ -39,6 +39,17 @@
</div> </div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'--> <!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission"> <crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="warning"
icon="el-icon-position"
size="mini"
:disabled="task_flag"
@click="taskOpen"
>
作业下发
</el-button>
<el-button <el-button
slot="right" slot="right"
class="filter-item" class="filter-item"
@@ -53,13 +64,13 @@
<el-button <el-button
slot="right" slot="right"
class="filter-item" class="filter-item"
type="success" type="primary"
icon="el-icon-position" icon="el-icon-position"
size="mini" size="mini"
:disabled="task_flag" :disabled="finish_flag"
@click="taskOpen" @click="checkFinish"
> >
作业下发 盘点完成
</el-button> </el-button>
</crudOperation> </crudOperation>
@@ -197,6 +208,7 @@ export default {
currentRow: null, currentRow: null,
uploadShow: false, uploadShow: false,
dis_flag: true, dis_flag: true,
finish_flag: true,
fromTypes: [], fromTypes: [],
permission: {}, permission: {},
rules: {}, rules: {},
@@ -253,11 +265,17 @@ export default {
}else { }else {
this.task_flag = true this.task_flag = true
} }
if (row.status == '13'){
this.finish_flag = false
}else {
this.finish_flag = false
}
this.dis_flag = false this.dis_flag = false
this.currentRow = row this.currentRow = row
} else { } else {
this.task_flag = true this.task_flag = true
this.dis_flag = true this.dis_flag = true
this.finish_flag = true
this.currentRow = null this.currentRow = null
} }
}, },

View File

@@ -15,7 +15,7 @@
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<span> <span>
<el-button icon="el-icon-check" size="mini" type="primary" @click="savePickMst">保存</el-button> <el-button icon="el-icon-check" size="mini" type="primary" @click="savePickTask">保存</el-button>
<el-button icon="el-icon-close" size="mini" type="info" @click="closeDialog">关闭</el-button> <el-button icon="el-icon-close" size="mini" type="info" @click="closeDialog">关闭</el-button>
</span> </span>
</el-col> </el-col>
@@ -148,16 +148,6 @@
> >
新增一行 新增一行
</el-button> </el-button>
<el-button
slot="left"
class="filter-item"
type="primary"
icon="el-icon-plus"
size="mini"
@click="savePickTask()"
>
保存
</el-button>
</span> </span>
</div> </div>
<el-card class="box-card" shadow="never" :body-style="{padding:'0'}"> <el-card class="box-card" shadow="never" :body-style="{padding:'0'}">