2025-03-26 09:06:23 +08:00
|
|
|
|
package com.cim.idm.controller;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
2025-04-10 18:45:06 +08:00
|
|
|
|
import com.cim.idm.constants.delivery.DeliveryStateEnums;
|
|
|
|
|
import com.cim.idm.exception.GlobalException;
|
|
|
|
|
import com.cim.idm.model.dto.delivery.DeliveryDelDto;
|
2025-04-10 15:31:53 +08:00
|
|
|
|
import com.cim.idm.model.dto.delivery.DeliveryDto;
|
|
|
|
|
import com.cim.idm.model.dto.delivery.StoreDetailDto;
|
2025-03-31 15:02:54 +08:00
|
|
|
|
import com.cim.idm.model.po.MaterialReceiveRequest;
|
|
|
|
|
import com.cim.idm.model.dto.PageDto;
|
2025-04-10 15:31:53 +08:00
|
|
|
|
import com.cim.idm.model.po.delivery.MaterialDelivery;
|
|
|
|
|
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
|
2025-03-26 09:06:23 +08:00
|
|
|
|
import com.cim.idm.service.IDeliveryService;
|
|
|
|
|
import com.cim.idm.utils.AjaxResult;
|
|
|
|
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
2025-03-26 17:40:01 +08:00
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
2025-04-07 16:54:04 +08:00
|
|
|
|
import java.util.Objects;
|
2025-03-27 16:41:05 +08:00
|
|
|
|
import java.util.stream.Collectors;
|
2025-03-26 09:06:23 +08:00
|
|
|
|
|
|
|
|
|
@RestController
|
2025-03-28 10:57:43 +08:00
|
|
|
|
@RequestMapping("/api/delivery")
|
2025-03-26 09:06:23 +08:00
|
|
|
|
@EnableAutoConfiguration
|
|
|
|
|
public class DeliveryController {
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private IDeliveryService deliveryService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 创建入库单
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(value = "/create")
|
2025-04-10 15:31:53 +08:00
|
|
|
|
public AjaxResult createDelivery(@RequestBody DeliveryDto dto) {
|
2025-04-10 18:45:06 +08:00
|
|
|
|
if (deliveryService.createDelivery(dto) > 0) {
|
|
|
|
|
return AjaxResult.me().setSuccess(true).setMessage("创建成功");
|
|
|
|
|
}
|
|
|
|
|
return AjaxResult.me().setErrorCode(-1).setMessage("创建失败");
|
2025-03-26 09:06:23 +08:00
|
|
|
|
}
|
2025-03-26 10:32:09 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取采购单
|
|
|
|
|
*/
|
2025-04-10 15:31:53 +08:00
|
|
|
|
@PostMapping(value = "/getReceiveList")
|
|
|
|
|
public AjaxResult getReceiveList(@RequestBody PageDto in) {
|
|
|
|
|
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getReceiveList(in));
|
2025-03-26 10:32:09 +08:00
|
|
|
|
}
|
2025-03-26 17:40:01 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取入库详情
|
|
|
|
|
* 到货单/销售采购单,根据物料清单,创建批次,进行入库
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(value = "/getStoreDetail")
|
|
|
|
|
public AjaxResult getStoreDetail(@RequestBody JSONObject in) {
|
|
|
|
|
Map<String, String> params = (Map<String, String>) in.get("params");
|
|
|
|
|
// siteName
|
2025-04-10 15:31:53 +08:00
|
|
|
|
StoreDetailDto storeDetailDto = new StoreDetailDto();
|
|
|
|
|
storeDetailDto.setSiteName(params.get("SITENAME"));
|
|
|
|
|
storeDetailDto.setDocumentName(params.get("RECEIVEREQUESTNAME"));
|
2025-03-26 17:40:01 +08:00
|
|
|
|
// 单据名称集合
|
|
|
|
|
List<String> nameList = new ArrayList<>();
|
2025-04-01 15:41:26 +08:00
|
|
|
|
String deliveryName = null;
|
2025-04-10 15:31:53 +08:00
|
|
|
|
MaterialDelivery byKey = deliveryService.getByKey(storeDetailDto);
|
|
|
|
|
// 到货单
|
|
|
|
|
if (Objects.nonNull(byKey)) {
|
|
|
|
|
deliveryName = byKey.getDeliveryName();
|
2025-03-26 17:40:01 +08:00
|
|
|
|
// 到库单(找出该单据下的所有的采购单)
|
2025-04-11 11:13:08 +08:00
|
|
|
|
nameList = deliveryService.getRelByDelivery(storeDetailDto)
|
2025-04-10 15:31:53 +08:00
|
|
|
|
.stream().map(MaterialDeliveryReceive::getReceiveRequestName).collect(Collectors.toList());
|
2025-03-26 17:40:01 +08:00
|
|
|
|
} else {
|
|
|
|
|
// 采购单
|
2025-04-10 15:31:53 +08:00
|
|
|
|
MaterialReceiveRequest receiveByKey = deliveryService.getReceiveByKey(storeDetailDto);
|
|
|
|
|
if (Objects.nonNull(receiveByKey)) {
|
|
|
|
|
nameList.add(storeDetailDto.getDocumentName());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 异常
|
|
|
|
|
if (nameList.isEmpty()) {
|
2025-04-10 18:45:06 +08:00
|
|
|
|
throw new GlobalException("不存在该单据");
|
2025-03-26 17:40:01 +08:00
|
|
|
|
}
|
|
|
|
|
// 获取采购单明细及批次
|
2025-04-01 15:41:26 +08:00
|
|
|
|
return AjaxResult.me().setSuccess(true).setResultObj(
|
2025-04-10 20:09:44 +08:00
|
|
|
|
deliveryService.getStoreDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
|
2025-03-26 17:40:01 +08:00
|
|
|
|
}
|
2025-03-31 14:31:16 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取采购订单详情
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(value = "/getReceiveDetail")
|
|
|
|
|
public AjaxResult getReceiveDetail(@RequestBody JSONObject in) {
|
|
|
|
|
List<String> nameList = (List<String>) in.get("nameList");
|
|
|
|
|
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getReceiveDetail(nameList));
|
|
|
|
|
}
|
2025-04-10 18:45:06 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取到货单
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(value = "/getDeliveryList")
|
|
|
|
|
public AjaxResult getDeliveryList(@RequestBody PageDto in) {
|
|
|
|
|
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getDeliveryList(in));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除到货单
|
|
|
|
|
*/
|
|
|
|
|
@PostMapping(value = "/delDelivery")
|
|
|
|
|
public AjaxResult delDelivery(@RequestBody DeliveryDelDto deliveryDelDto) {
|
|
|
|
|
StoreDetailDto storeDetailDto = new StoreDetailDto();
|
|
|
|
|
storeDetailDto.setDocumentName(deliveryDelDto.getDeliveryName());
|
|
|
|
|
storeDetailDto.setSiteName(deliveryDelDto.getSiteName());
|
|
|
|
|
// 校验
|
|
|
|
|
MaterialDelivery byKey = deliveryService.getByKey(storeDetailDto);
|
|
|
|
|
if (Objects.isNull(byKey)) {
|
|
|
|
|
throw new GlobalException("不存在到货单");
|
|
|
|
|
}
|
|
|
|
|
if (!byKey.getDeliveryState().equals(DeliveryStateEnums.CREATE.getCode())) {
|
|
|
|
|
throw new GlobalException("到货单进行中或已结束,不允许删除");
|
|
|
|
|
}
|
|
|
|
|
if (deliveryService.delDelivery(deliveryDelDto) > 0) {
|
|
|
|
|
return AjaxResult.me().setSuccess(true).setResultObj("删除成功");
|
|
|
|
|
}
|
|
|
|
|
return AjaxResult.me().setErrorCode(-1).setMessage("删除失败");
|
|
|
|
|
}
|
2025-03-26 09:06:23 +08:00
|
|
|
|
}
|