出库单添加是否AGV出库业务类型,目标点位
parent
774009ed54
commit
12803c1095
|
|
@ -16,6 +16,7 @@
|
||||||
package com.youchain.businessdata.domain;
|
package com.youchain.businessdata.domain;
|
||||||
|
|
||||||
import com.youchain.base.BaseEntity;
|
import com.youchain.base.BaseEntity;
|
||||||
|
import com.youchain.basicdata.domain.BillType;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
|
@ -46,13 +47,14 @@ public class Pick extends BaseEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "仓库ID")
|
@ApiModelProperty(value = "仓库ID")
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
@Column(name = "`bill_type_id`")
|
@OneToOne
|
||||||
|
@JoinColumn(name = "bill_type_id")
|
||||||
@ApiModelProperty(value = "单据类型ID")
|
@ApiModelProperty(value = "单据类型ID")
|
||||||
private String billTypeId;
|
private BillType billType;
|
||||||
|
|
||||||
@Column(name = "`order_origin`")
|
@Column(name = "`order_origin`")
|
||||||
@ApiModelProperty(value = "订单来源")
|
@ApiModelProperty(value = "订单来源")
|
||||||
private Long orderOrigin;
|
private String orderOrigin;
|
||||||
|
|
||||||
@Column(name = "`priority`")
|
@Column(name = "`priority`")
|
||||||
@ApiModelProperty(value = "优先级")
|
@ApiModelProperty(value = "优先级")
|
||||||
|
|
@ -84,11 +86,11 @@ public class Pick extends BaseEntity implements Serializable {
|
||||||
|
|
||||||
@Column(name = "`dispatch_date`")
|
@Column(name = "`dispatch_date`")
|
||||||
@ApiModelProperty(value = "发货时间")
|
@ApiModelProperty(value = "发货时间")
|
||||||
private Long dispatchDate;
|
private Timestamp dispatchDate;
|
||||||
|
|
||||||
@Column(name = "`er_time`")
|
@Column(name = "`er_time`")
|
||||||
@ApiModelProperty(value = "操作时间")
|
@ApiModelProperty(value = "操作时间")
|
||||||
private Long erTime;
|
private Timestamp erTime;
|
||||||
|
|
||||||
@Column(name = "`create_by`")
|
@Column(name = "`create_by`")
|
||||||
@ApiModelProperty(value = "创建人")
|
@ApiModelProperty(value = "创建人")
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,10 @@ public class PickDetail extends BaseEntity implements Serializable {
|
||||||
@ApiModelProperty(value = "ID")
|
@ApiModelProperty(value = "ID")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Column(name = "`pick_id`")
|
@OneToOne
|
||||||
|
@JoinColumn(name = "`pick_id`")
|
||||||
@ApiModelProperty(value = "订单序号")
|
@ApiModelProperty(value = "订单序号")
|
||||||
private Long pickId;
|
private Pick pick;
|
||||||
|
|
||||||
@OneToOne
|
@OneToOne
|
||||||
@JoinColumn(name = "`item_id`",nullable = false)
|
@JoinColumn(name = "`item_id`",nullable = false)
|
||||||
|
|
@ -96,23 +97,23 @@ public class PickDetail extends BaseEntity implements Serializable {
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
@Column(name = "`prop_c1`")
|
@Column(name = "`prop_c1`")
|
||||||
@ApiModelProperty(value = "批次号")
|
@ApiModelProperty(value = "中标批次名称")
|
||||||
private String propC1;
|
private String propC1;
|
||||||
|
|
||||||
@Column(name = "`prop_c2`")
|
@Column(name = "`prop_c2`")
|
||||||
@ApiModelProperty(value = "序列号")
|
@ApiModelProperty(value = "成品物料编码")
|
||||||
private String propC2;
|
private String propC2;
|
||||||
|
|
||||||
@Column(name = "`prop_c3`")
|
@Column(name = "`prop_c3`")
|
||||||
@ApiModelProperty(value = "属性3")
|
@ApiModelProperty(value = "序列号")
|
||||||
private String propC3;
|
private String propC3;
|
||||||
|
|
||||||
@Column(name = "`prop_c4`")
|
@Column(name = "`prop_c4`")
|
||||||
@ApiModelProperty(value = "属性4")
|
@ApiModelProperty(value = "出库方式")
|
||||||
private String propC4;
|
private String propC4;
|
||||||
|
|
||||||
@Column(name = "`prop_c5`")
|
@Column(name = "`prop_c5`")
|
||||||
@ApiModelProperty(value = "属性5")
|
@ApiModelProperty(value = "目标点位")
|
||||||
private String propC5;
|
private String propC5;
|
||||||
|
|
||||||
@Column(name = "`prop_c6`")
|
@Column(name = "`prop_c6`")
|
||||||
|
|
|
||||||
|
|
@ -52,4 +52,8 @@ public interface PickDetailRepository extends JpaRepository<PickDetail, Long>, J
|
||||||
" UNION select a.* from data_pick_detail a INNER JOIN base_item b on a.item_id = b.id " +
|
" UNION select a.* from data_pick_detail a INNER JOIN base_item b on a.item_id = b.id " +
|
||||||
"WHERE b.name = '前桶' and a.create_time > :time ", nativeQuery = true)
|
"WHERE b.name = '前桶' and a.create_time > :time ", nativeQuery = true)
|
||||||
List<PickDetail> queryOutQHAllData(String time);
|
List<PickDetail> queryOutQHAllData(String time);
|
||||||
|
@Query(value = "select pd from PickDetail pd where pd.pick.id=?1 and pd.lineNo=?2", nativeQuery = false)
|
||||||
|
PickDetail findByPickAndLineNo(Long id, Long lineNo);
|
||||||
|
@Query(value = "select pd from PickDetail pd where pd.pick.id=?1", nativeQuery = false)
|
||||||
|
List<PickDetail> findByPick(Long id);
|
||||||
}
|
}
|
||||||
|
|
@ -16,8 +16,12 @@
|
||||||
package com.youchain.businessdata.repository;
|
package com.youchain.businessdata.repository;
|
||||||
|
|
||||||
import com.youchain.businessdata.domain.Pick;
|
import com.youchain.businessdata.domain.Pick;
|
||||||
|
import com.youchain.businessdata.domain.PickDetail;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @website https://eladmin.vip
|
* @website https://eladmin.vip
|
||||||
|
|
@ -25,4 +29,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
* @date 2024-03-11
|
* @date 2024-03-11
|
||||||
**/
|
**/
|
||||||
public interface PickRepository extends JpaRepository<Pick, Long>, JpaSpecificationExecutor<Pick> {
|
public interface PickRepository extends JpaRepository<Pick, Long>, JpaSpecificationExecutor<Pick> {
|
||||||
|
@Query(value = "select p from Pick p where p.relatedBill2=?1")
|
||||||
|
Pick findByCode(String relatedBill2);
|
||||||
}
|
}
|
||||||
|
|
@ -127,20 +127,12 @@ public class PickDetailController {
|
||||||
@AnonymousAccess
|
@AnonymousAccess
|
||||||
public synchronized ResponseEntity<Object> allocate(@RequestBody Long[] ids) throws Exception {
|
public synchronized ResponseEntity<Object> allocate(@RequestBody Long[] ids) throws Exception {
|
||||||
List<Long> pickDetailIds = Arrays.asList(ids);
|
List<Long> pickDetailIds = Arrays.asList(ids);
|
||||||
if (pickDetailIds.size() > 0) {
|
ApiResult apiResult=pickDetailService.allocate(ids);
|
||||||
try {
|
/*for (Long id : pickDetailIds) {
|
||||||
for (Long id : pickDetailIds) {
|
PickDetailDto pickDetailDto = pickDetailService.findById(id);
|
||||||
PickDetailDto pickDetailDto = pickDetailService.findById(id);
|
pickDetailService.allocate(id, pickDetailDto.getOrderQty());
|
||||||
pickDetailService.allocate(id, pickDetailDto.getOrderQty());
|
}*/
|
||||||
}
|
return new ResponseEntity<>(apiResult, HttpStatus.valueOf(apiResult.getStatus()));
|
||||||
} catch (Exception e) {
|
|
||||||
return new ResponseEntity(ApiResult.fail(BAD_REQUEST.value(), e.getMessage(), ""), HttpStatus.BAD_REQUEST);
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return new ResponseEntity(ApiResult.fail(BAD_REQUEST.value(), "参数错误或者为null", ""), HttpStatus.BAD_REQUEST);
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/cancelAllocate")
|
@PostMapping("/cancelAllocate")
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ public interface PickDetailService {
|
||||||
/**
|
/**
|
||||||
* 分配
|
* 分配
|
||||||
*/
|
*/
|
||||||
void allocate(long id,double quantity) throws Exception;
|
ApiResult allocate(Long[] ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 整出分配
|
* 整出分配
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ package com.youchain.businessdata.service.dto;
|
||||||
|
|
||||||
import com.youchain.basicdata.service.dto.ItemDto;
|
import com.youchain.basicdata.service.dto.ItemDto;
|
||||||
import com.youchain.basicdata.service.dto.ItemSmallDto;
|
import com.youchain.basicdata.service.dto.ItemSmallDto;
|
||||||
|
import com.youchain.businessdata.domain.Pick;
|
||||||
import com.youchain.modules.system.domain.Dept;
|
import com.youchain.modules.system.domain.Dept;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
|
@ -35,7 +36,7 @@ public class PickDetailDto implements Serializable {
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/** 订单序号 */
|
/** 订单序号 */
|
||||||
private Long pickId;
|
private Pick pick;
|
||||||
|
|
||||||
/** 物料序号 */
|
/** 物料序号 */
|
||||||
private ItemDto item;
|
private ItemDto item;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package com.youchain.businessdata.service.dto;
|
package com.youchain.businessdata.service.dto;
|
||||||
|
|
||||||
|
import com.youchain.basicdata.domain.BillType;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -35,10 +36,10 @@ public class PickDto implements Serializable {
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
/** 单据类型ID */
|
/** 单据类型ID */
|
||||||
private String billTypeId;
|
private BillType billType;
|
||||||
|
|
||||||
/** 订单来源 */
|
/** 订单来源 */
|
||||||
private Long orderOrigin;
|
private String orderOrigin;
|
||||||
|
|
||||||
/** 优先级 */
|
/** 优先级 */
|
||||||
private Long priority;
|
private Long priority;
|
||||||
|
|
@ -62,10 +63,10 @@ public class PickDto implements Serializable {
|
||||||
private String address;
|
private String address;
|
||||||
|
|
||||||
/** 发货时间 */
|
/** 发货时间 */
|
||||||
private Long dispatchDate;
|
private Timestamp dispatchDate;
|
||||||
|
|
||||||
/** 操作时间 */
|
/** 操作时间 */
|
||||||
private Long erTime;
|
private Timestamp erTime;
|
||||||
|
|
||||||
/** 创建人 */
|
/** 创建人 */
|
||||||
private String createBy;
|
private String createBy;
|
||||||
|
|
|
||||||
|
|
@ -17,27 +17,20 @@ package com.youchain.businessdata.service.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.youchain.basicdata.domain.Box;
|
import com.youchain.basicdata.domain.*;
|
||||||
import com.youchain.basicdata.domain.Item;
|
import com.youchain.basicdata.repository.BillTypeRepository;
|
||||||
import com.youchain.basicdata.domain.Point;
|
|
||||||
import com.youchain.basicdata.domain.Stock;
|
|
||||||
import com.youchain.basicdata.repository.BoxRepository;
|
import com.youchain.basicdata.repository.BoxRepository;
|
||||||
|
import com.youchain.basicdata.repository.ItemRepository;
|
||||||
import com.youchain.basicdata.repository.StockRepository;
|
import com.youchain.basicdata.repository.StockRepository;
|
||||||
import com.youchain.basicdata.service.ItemService;
|
import com.youchain.basicdata.service.ItemService;
|
||||||
import com.youchain.basicdata.service.PointService;
|
import com.youchain.basicdata.service.PointService;
|
||||||
import com.youchain.basicdata.service.dto.ItemDto;
|
import com.youchain.basicdata.service.dto.ItemDto;
|
||||||
import com.youchain.businessdata.domain.AgvTask;
|
import com.youchain.businessdata.domain.*;
|
||||||
import com.youchain.businessdata.domain.Inventory;
|
import com.youchain.businessdata.repository.*;
|
||||||
import com.youchain.businessdata.domain.PickDetail;
|
|
||||||
import com.youchain.businessdata.domain.Task;
|
|
||||||
import com.youchain.businessdata.repository.AgvTaskRepository;
|
|
||||||
import com.youchain.businessdata.repository.InventoryRepository;
|
|
||||||
import com.youchain.businessdata.repository.TaskRepository;
|
|
||||||
import com.youchain.exception.handler.ApiResult;
|
import com.youchain.exception.handler.ApiResult;
|
||||||
import com.youchain.modules.system.domain.Dept;
|
import com.youchain.modules.system.domain.Dept;
|
||||||
import com.youchain.utils.*;
|
import com.youchain.utils.*;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import com.youchain.businessdata.repository.PickDetailRepository;
|
|
||||||
import com.youchain.businessdata.service.PickDetailService;
|
import com.youchain.businessdata.service.PickDetailService;
|
||||||
import com.youchain.businessdata.service.dto.PickDetailDto;
|
import com.youchain.businessdata.service.dto.PickDetailDto;
|
||||||
import com.youchain.businessdata.service.dto.PickDetailQueryCriteria;
|
import com.youchain.businessdata.service.dto.PickDetailQueryCriteria;
|
||||||
|
|
@ -49,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -66,10 +60,13 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST;
|
||||||
**/
|
**/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@Transactional
|
||||||
public class PickDetailServiceImpl implements PickDetailService {
|
public class PickDetailServiceImpl implements PickDetailService {
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
|
||||||
private final PickDetailRepository pickDetailRepository;
|
private final PickDetailRepository pickDetailRepository;
|
||||||
|
private final PickRepository pickRepository;
|
||||||
private final PickDetailMapper pickDetailMapper;
|
private final PickDetailMapper pickDetailMapper;
|
||||||
|
private final BillTypeRepository billTypeRepository;
|
||||||
private final InventoryRepository inventoryRepository;
|
private final InventoryRepository inventoryRepository;
|
||||||
private final BoxRepository boxRepository;
|
private final BoxRepository boxRepository;
|
||||||
private final AgvTaskRepository agvTaskRepository;
|
private final AgvTaskRepository agvTaskRepository;
|
||||||
|
|
@ -77,6 +74,7 @@ public class PickDetailServiceImpl implements PickDetailService {
|
||||||
private final ItemService itemService;
|
private final ItemService itemService;
|
||||||
private final PointService pointService;
|
private final PointService pointService;
|
||||||
private final StockRepository stockRepository;
|
private final StockRepository stockRepository;
|
||||||
|
private final ItemRepository itemRepository;
|
||||||
private final EntityManager entityMapper;
|
private final EntityManager entityMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -144,70 +142,79 @@ public class PickDetailServiceImpl implements PickDetailService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public synchronized void allocate(long id, double quantity) throws Exception {
|
public ApiResult allocate(Long[] ids) {
|
||||||
PickDetailDto pickDetailDto = findById(id);
|
for (int i = 0; i < ids.length; i++) {
|
||||||
PickDetail pd = toEntity(pickDetailDto);//Dto转实体
|
Long id=ids[i];
|
||||||
ItemDto itemDto = pickDetailDto.getItem();
|
PickDetail pickDetail=pickDetailRepository.getById(id);
|
||||||
Item item = itemService.toEntity(itemDto);
|
if (pickDetail.getPropC4().equals(BizStatus.AGV_PT)){
|
||||||
Dept dept = item.getDept();//仓库
|
//AGV出库
|
||||||
Box box = boxRepository.getBoxByItem(item.getId());
|
|
||||||
Point endPoint = box.getPoint();//目标点位
|
|
||||||
if (pd.getOrderQty() > pd.getAllocatedQty()) {
|
|
||||||
List<Inventory> Inventorys = inventoryRepository.queryInventory(item.getId());
|
|
||||||
if (Inventorys.size() > 0) {
|
|
||||||
double allocateQty = 0;
|
|
||||||
double unQty = quantity;//未分配数量
|
|
||||||
for (Inventory inv : Inventorys) {
|
|
||||||
Stock stock = inv.getStock();//容器
|
|
||||||
Point startPoint = inv.getPoint();//起始点位
|
|
||||||
if (unQty == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
allocateQty = inv.getQuantity() - inv.getQueuedQty();//库存可用数量
|
|
||||||
if (allocateQty <= 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (unQty < allocateQty) {
|
|
||||||
allocateQty = unQty;
|
|
||||||
}
|
|
||||||
inv.setQueuedQty(inv.getQueuedQty() + allocateQty);
|
|
||||||
inventoryRepository.save(inv);
|
|
||||||
unQty -= allocateQty;
|
|
||||||
pd.setAllocatedQty(pd.getAllocatedQty() + allocateQty);
|
|
||||||
if (pd.getOrderQty().equals(pd.getAllocatedQty())) {
|
|
||||||
pd.setStatus(BizStatus.ALLOCATE);
|
|
||||||
}
|
|
||||||
pickDetailRepository.save(pd);
|
|
||||||
|
|
||||||
//生成搬运任务
|
|
||||||
AgvTask agvTask = new AgvTask(BizStatus.PICK, stock.getCode(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "01");
|
|
||||||
agvTaskRepository.save(agvTask);
|
|
||||||
//生成Task
|
|
||||||
Task task = new Task();
|
|
||||||
task.setItem(item);
|
|
||||||
task.setItemKey(inv.getItemKey());
|
|
||||||
task.setPickDetail(pd);
|
|
||||||
task.setBillCode(pd.getPo());
|
|
||||||
task.setSrcStock(inv.getStock());
|
|
||||||
task.setDstStock(inv.getStock());
|
|
||||||
task.setSrcPoint(startPoint);
|
|
||||||
task.setDstPoint(endPoint);
|
|
||||||
task.setSrcStockCode(inv.getStock().getCode());
|
|
||||||
task.setSrcPointCode(startPoint.getCode());
|
|
||||||
task.setDstPointCode(endPoint.getCode());
|
|
||||||
task.setInvStatus(inv.getStatus());
|
|
||||||
task.setTaskStatus(BizStatus.OPEN);
|
|
||||||
task.setPlanQty(allocateQty);
|
|
||||||
task.setDept(dept);
|
|
||||||
task.setAgvTask(agvTask);
|
|
||||||
taskRepository.save(task);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
Double quantity=pickDetail.getOrderQty();
|
||||||
throw new RuntimeException("已分配,请勿重复操作!");
|
PickDetail pd = pickDetailRepository.getById(id);//Dto转实体
|
||||||
}
|
Item item = pd.getItem();
|
||||||
|
Dept dept = item.getDept();//仓库
|
||||||
|
|
||||||
|
Box box = boxRepository.getBoxByItem(item.getId());
|
||||||
|
|
||||||
|
Point endPoint = box.getPoint();//目标点位
|
||||||
|
if (pd.getOrderQty() > pd.getAllocatedQty()) {
|
||||||
|
List<Inventory> Inventorys = inventoryRepository.queryInventory(item.getId());
|
||||||
|
if (Inventorys.size() > 0) {
|
||||||
|
double allocateQty = 0;
|
||||||
|
double unQty = quantity;//未分配数量
|
||||||
|
for (Inventory inv : Inventorys) {
|
||||||
|
Stock stock = inv.getStock();//容器
|
||||||
|
Point startPoint = inv.getPoint();//起始点位
|
||||||
|
if (unQty == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
allocateQty = inv.getQuantity() - inv.getQueuedQty();//库存可用数量
|
||||||
|
if (allocateQty <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (unQty < allocateQty) {
|
||||||
|
allocateQty = unQty;
|
||||||
|
}
|
||||||
|
inv.setQueuedQty(inv.getQueuedQty() + allocateQty);
|
||||||
|
inventoryRepository.save(inv);
|
||||||
|
unQty -= allocateQty;
|
||||||
|
pd.setAllocatedQty(pd.getAllocatedQty() + allocateQty);
|
||||||
|
if (pd.getOrderQty().equals(pd.getAllocatedQty())) {
|
||||||
|
pd.setStatus(BizStatus.ALLOCATE);
|
||||||
|
}
|
||||||
|
pickDetailRepository.save(pd);
|
||||||
|
|
||||||
|
//生成搬运任务
|
||||||
|
AgvTask agvTask = new AgvTask(BizStatus.PICK, stock.getCode(), startPoint.getCode(), endPoint.getCode(), BizStatus.OPEN, "01");
|
||||||
|
agvTaskRepository.save(agvTask);
|
||||||
|
//生成Task
|
||||||
|
Task task = new Task();
|
||||||
|
task.setItem(item);
|
||||||
|
task.setItemKey(inv.getItemKey());
|
||||||
|
task.setPickDetail(pd);
|
||||||
|
task.setBillCode(pd.getPo());
|
||||||
|
task.setSrcStock(inv.getStock());
|
||||||
|
task.setDstStock(inv.getStock());
|
||||||
|
task.setSrcPoint(startPoint);
|
||||||
|
task.setDstPoint(endPoint);
|
||||||
|
task.setSrcStockCode(inv.getStock().getCode());
|
||||||
|
task.setSrcPointCode(startPoint.getCode());
|
||||||
|
task.setDstPointCode(endPoint.getCode());
|
||||||
|
task.setInvStatus(inv.getStatus());
|
||||||
|
task.setTaskStatus(BizStatus.OPEN);
|
||||||
|
task.setPlanQty(allocateQty);
|
||||||
|
task.setDept(dept);
|
||||||
|
task.setAgvTask(agvTask);
|
||||||
|
taskRepository.save(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("已分配,请勿重复操作!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ApiResult.fail(200,"操作成功",null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -414,12 +421,72 @@ public class PickDetailServiceImpl implements PickDetailService {
|
||||||
public ApiResult importPtApi(JSONObject jsonObject) {
|
public ApiResult importPtApi(JSONObject jsonObject) {
|
||||||
JSONArray orders=jsonObject.getJSONArray("order");
|
JSONArray orders=jsonObject.getJSONArray("order");
|
||||||
for (int i = 0; i < orders.size(); i++) {
|
for (int i = 0; i < orders.size(); i++) {
|
||||||
PickDetail pickDetail = new PickDetail();
|
|
||||||
|
|
||||||
JSONObject order=orders.getJSONObject(i);
|
JSONObject order=orders.getJSONObject(i);
|
||||||
|
String orderId=order.getString("orderId");
|
||||||
|
String erTime=order.getString("orderDate");//操作时间
|
||||||
|
Timestamp er = Timestamp.valueOf(DateUtil.parseLocalDateTimeFormat(erTime, "yyyy-MM-dd HH:mm:ss"));
|
||||||
|
String owner=order.getString("owner");//货主
|
||||||
|
String orderType=order.getString("orderType");//订单类型
|
||||||
|
List<BillType> billTypeList=billTypeRepository.findBySourceName(orderType);
|
||||||
|
if (billTypeList.size()<1){
|
||||||
|
return ApiResult.result(500,"单据类型错误",null);
|
||||||
|
}
|
||||||
|
BillType billType=billTypeList.get(0);
|
||||||
|
String dispatchDate=order.getString("dispatchDate");//发货日期
|
||||||
|
Timestamp dc = Timestamp.valueOf(DateUtil.parseLocalDateTimeFormat(dispatchDate, "yyyy-MM-dd HH:mm:ss"));
|
||||||
|
Long priority=order.getLong("priority");//订单类型
|
||||||
|
String address=order.getString("consolidationLoc");//地址
|
||||||
|
Pick pick;
|
||||||
|
pick = pickRepository.findByCode(orderId);
|
||||||
|
if (pick==null){
|
||||||
|
pick=new Pick();
|
||||||
|
pick.setStatus(BizStatus.OPEN);
|
||||||
|
}
|
||||||
|
pick.setRelatedBill1(orderId);
|
||||||
|
pick.setRelatedBill2(orderId);
|
||||||
|
pick.setErTime(er);
|
||||||
|
pick.setBillType(billType);
|
||||||
|
pick.setDispatchDate(dc);
|
||||||
|
pick.setOwner(owner);
|
||||||
|
pick.setAddress(address);
|
||||||
|
pick.setPriority(priority);
|
||||||
|
pickRepository.save(pick);
|
||||||
|
JSONArray orderLineArray=order.getJSONArray("orderLine");
|
||||||
|
for (int j = 0; j < orderLineArray.size(); j++) {
|
||||||
|
JSONObject orderLine=orderLineArray.getJSONObject(i);
|
||||||
|
String lineNo=orderLine.getString("orderLineNumber");
|
||||||
|
String itemCode=orderLine.getString("productId");
|
||||||
|
String quantity=orderLine.getString("quantityOrdered");
|
||||||
|
JSONArray attributeValueList=orderLine.getJSONArray("attributeValue");
|
||||||
|
Map<String,Object> attributeValue=new HashMap<>();
|
||||||
|
for (int k = 0; k < attributeValueList.size(); k++) {
|
||||||
|
JSONObject at=attributeValueList.getJSONObject(k);
|
||||||
|
attributeValue.put(at.getString("name"),at.getString("value"));
|
||||||
|
}
|
||||||
|
String propC1=attributeValue.get("ztBidName")+"";//中标批次名称
|
||||||
|
String propC2=attributeValue.get("prodMtrlNo")+"";//成品物料编码
|
||||||
|
String propC3=attributeValue.get("loadUnitId")+"";//序列号
|
||||||
|
Item item=itemRepository.findByCode(itemCode);
|
||||||
|
if (item==null){
|
||||||
|
return ApiResult.result(500, itemCode+"物料不存在",null);
|
||||||
|
}
|
||||||
|
PickDetail pickDetail;
|
||||||
|
pickDetail=pickDetailRepository.findByPickAndLineNo(pick.getId(),Long.valueOf(lineNo));
|
||||||
|
if (pickDetail==null){
|
||||||
|
pickDetail=new PickDetail();
|
||||||
|
pickDetail.setStatus(BizStatus.OPEN);
|
||||||
|
}
|
||||||
|
pickDetail.setLineNo(Long.valueOf(lineNo));
|
||||||
|
pickDetail.setItem(item);
|
||||||
|
pickDetail.setOrderQty(Double.valueOf(quantity));
|
||||||
|
pickDetail.setPropC1(propC1);
|
||||||
|
pickDetail.setPropC2(propC2);
|
||||||
|
pickDetail.setPropC3(propC3);
|
||||||
|
pickDetail.setPick(pick);
|
||||||
|
pickDetailRepository.save(pickDetail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return ApiResult.result(200, "操作成功",null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,9 @@
|
||||||
package com.youchain.businessdata.service.impl;
|
package com.youchain.businessdata.service.impl;
|
||||||
|
|
||||||
import com.youchain.businessdata.domain.Pick;
|
import com.youchain.businessdata.domain.Pick;
|
||||||
import com.youchain.utils.FileUtil;
|
import com.youchain.businessdata.domain.PickDetail;
|
||||||
import com.youchain.utils.PageUtil;
|
import com.youchain.businessdata.repository.PickDetailRepository;
|
||||||
import com.youchain.utils.QueryHelp;
|
import com.youchain.utils.*;
|
||||||
import com.youchain.utils.ValidationUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import com.youchain.businessdata.repository.PickRepository;
|
import com.youchain.businessdata.repository.PickRepository;
|
||||||
import com.youchain.businessdata.service.PickService;
|
import com.youchain.businessdata.service.PickService;
|
||||||
|
|
@ -48,6 +47,7 @@ import java.util.LinkedHashMap;
|
||||||
public class PickServiceImpl implements PickService {
|
public class PickServiceImpl implements PickService {
|
||||||
|
|
||||||
private final PickRepository pickRepository;
|
private final PickRepository pickRepository;
|
||||||
|
private final PickDetailRepository pickDetailRepository;
|
||||||
private final PickMapper pickMapper;
|
private final PickMapper pickMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -87,6 +87,11 @@ public class PickServiceImpl implements PickService {
|
||||||
@Override
|
@Override
|
||||||
public void deleteAll(Long[] ids) {
|
public void deleteAll(Long[] ids) {
|
||||||
for (Long id : ids) {
|
for (Long id : ids) {
|
||||||
|
List<PickDetail> pickDetailList=pickDetailRepository.findByPick(id);
|
||||||
|
for (int i = 0; i < pickDetailList.size(); i++) {
|
||||||
|
PickDetail pickDetail=pickDetailList.get(i);
|
||||||
|
pickDetailRepository.deleteById(pickDetail.getId());
|
||||||
|
}
|
||||||
pickRepository.deleteById(id);
|
pickRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -96,8 +101,7 @@ public class PickServiceImpl implements PickService {
|
||||||
List<Map<String, Object>> list = new ArrayList<>();
|
List<Map<String, Object>> list = new ArrayList<>();
|
||||||
for (PickDto pick : all) {
|
for (PickDto pick : all) {
|
||||||
Map<String,Object> map = new LinkedHashMap<>();
|
Map<String,Object> map = new LinkedHashMap<>();
|
||||||
map.put("仓库ID", pick.getDeptId());
|
map.put("单据类型", pick.getBillType().getName());
|
||||||
map.put("单据类型ID", pick.getBillTypeId());
|
|
||||||
map.put("订单来源", pick.getOrderOrigin());
|
map.put("订单来源", pick.getOrderOrigin());
|
||||||
map.put("优先级", pick.getPriority());
|
map.put("优先级", pick.getPriority());
|
||||||
map.put("货主", pick.getOwner());
|
map.put("货主", pick.getOwner());
|
||||||
|
|
|
||||||
|
|
@ -216,4 +216,13 @@ public interface BizStatus {
|
||||||
String AGV_C="AGV_C";
|
String AGV_C="AGV_C";
|
||||||
/** 半成品入库*/
|
/** 半成品入库*/
|
||||||
String SMGS="SMGS";
|
String SMGS="SMGS";
|
||||||
|
|
||||||
|
/** AGV出库*/
|
||||||
|
String AGV_PT="AGV_PT";
|
||||||
|
/** 人工出库*/
|
||||||
|
String RG_PT="RG_PT";
|
||||||
|
/** AGV入库*/
|
||||||
|
String AGV_ASN="AGV_ASN";
|
||||||
|
/** 人工入库*/
|
||||||
|
String RG_ASN="RG_ASN";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue