feat 到货单

This commit is contained in:
Amjacks 2025-04-10 18:45:06 +08:00
parent b25d9de042
commit ebb5579b3a
15 changed files with 177 additions and 35 deletions

View File

@ -1,11 +1,12 @@
package com.cim.idm.constants;
package com.cim.idm.constants.delivery;
import lombok.Getter;
@Getter
public enum DeliveryStateEnums {
CREATE("01", "新建"),
FINISH("02", "结束");
DOING("02", "进行中"),
FINISH("03", "结束");
private final String code;
private final String info;

View File

@ -1,4 +1,4 @@
package com.cim.idm.constants;
package com.cim.idm.constants.delivery;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.cim.idm.constants;
package com.cim.idm.constants.delivery;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.cim.idm.constants;
package com.cim.idm.constants.receive;
import lombok.Getter;

View File

@ -1,4 +1,4 @@
package com.cim.idm.constants;
package com.cim.idm.constants.receive;
import lombok.Getter;

View File

@ -1,6 +1,9 @@
package com.cim.idm.controller;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.delivery.DeliveryStateEnums;
import com.cim.idm.exception.GlobalException;
import com.cim.idm.model.dto.delivery.DeliveryDelDto;
import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.MaterialReceiveRequest;
@ -35,7 +38,10 @@ public class DeliveryController {
*/
@PostMapping(value = "/create")
public AjaxResult createDelivery(@RequestBody DeliveryDto dto) {
return AjaxResult.me().setSuccess(true).setMessage(deliveryService.createDelivery(dto));
if (deliveryService.createDelivery(dto) > 0) {
return AjaxResult.me().setSuccess(true).setMessage("创建成功");
}
return AjaxResult.me().setErrorCode(-1).setMessage("创建失败");
}
/**
@ -76,7 +82,7 @@ public class DeliveryController {
}
// 异常
if (nameList.isEmpty()) {
return AjaxResult.me().setSuccess(false).setMessage("不存在该单据");
throw new GlobalException("不存在该单据");
}
// 获取采购单明细及批次
return AjaxResult.me().setSuccess(true).setResultObj(
@ -89,7 +95,36 @@ public class DeliveryController {
@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));
}
/**
* 获取到货单
*/
@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("删除失败");
}
}

View File

@ -2,7 +2,6 @@ package com.cim.idm.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.ReceiveTypeEnums;
import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.po.MaterialReceiveRequest;
@ -31,7 +30,6 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.*;
import java.util.stream.Collectors;
import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl;
@ -179,14 +177,14 @@ public class MaterialReceiveActController {
// 单据
String receiveRequestName = boxs.getReceiveRequestName();
// 判断是否是倒库单据
MaterialReceiveRequest byKey = deliveryService.getByKey(boxs.getSiteName(), boxs.getReceiveRequestName());
/*MaterialReceiveRequest byKey = deliveryService.getByKey(boxs.getSiteName(), boxs.getReceiveRequestName());
if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) {
// 检索该到库订单下该物料的采购订单的 name
List<MaterialReceiveRequest> collect = deliveryService.getReceiveByDelivery(boxs.getSiteName(), boxs.getReceiveRequestName())
.stream().filter(item -> item.getMaterialSpecName().equals(materialSpecName)).collect(Collectors.toList());
// 检查剩余数量
// @TODO
}
}*/
String remark = box.getRemark();
String sdkid = box.getSdkid() == null ? "" : box.getSdkid();
String shipRequestDetailName = box.getShipRequestDetailName();
@ -545,14 +543,14 @@ public class MaterialReceiveActController {
String site = trackOutBoDto.getSiteName();
// 采购单
List<MaterialReceiveRequest> requests = new ArrayList<>();
// 判定单据类型
MaterialReceiveRequest byKey = deliveryService.getByKey(site, name);
// @TODO 判定单据类型
/*MaterialReceiveRequest byKey = deliveryService.getByKey(site, name);
if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) {
// 到货单
requests = deliveryService.getReceiveByDelivery(site, name);
} else {
requests.add(byKey);
}
}*/
// 采购单处理
for (MaterialReceiveRequest request : requests) {
String receiveRequestName = request.getReceiveRequestName();

View File

@ -1,8 +1,6 @@
package com.cim.idm.dao;
import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.DeliveryRelationDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.dto.delivery.*;
import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest;
@ -74,4 +72,25 @@ public interface DeliveryDao {
* @return 采购单名称列表
*/
List<DeliveryReceiveDetailVo> getReceiveDetail(@Param("nameList") List<String> nameList);
/**
* 获取到货单
* @param dto 请求
* @return 采购订单
*/
List<MaterialDelivery> getDeliveryList(@Param("dto") DeliveryListDto dto);
/**
* 删除到货单
* @param deliveryDelDto 请求
* @return 结果
*/
int delDelivery(@Param("dto") DeliveryDelDto deliveryDelDto);
/**
* 删除到货单关系
* @param deliveryDelDto 请求
* @return 结果
*/
int delDeliveryRel(@Param("dto") DeliveryDelDto deliveryDelDto);
}

View File

@ -5,7 +5,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice("com.zxy.idm.controller")
@ControllerAdvice(basePackages = {"com.zxy.idm.controller", "com.cim.idm.controller"})
public class AllExceptionHandler {
@ResponseBody

View File

@ -0,0 +1,12 @@
package com.cim.idm.model.dto.delivery;
import lombok.Data;
@Data
public class DeliveryDelDto {
// siteName
private String siteName;
// 到货单名称
private String deliveryName;
}

View File

@ -1,6 +1,5 @@
package com.cim.idm.model.dto.delivery;
import com.cim.idm.wmspackage.invoice.management.data.MaterialReceiveRequestKey;
import lombok.Data;
import java.util.List;

View File

@ -0,0 +1,19 @@
package com.cim.idm.model.dto.delivery;
import lombok.Data;
@Data
public class DeliveryListDto {
// 工厂
private String siteName;
// 到货单名称
private String deliveryName;
// 到货单类型
private String deliveryType;
// 到货单状态
private String deliveryState;
}

View File

@ -1,5 +1,6 @@
package com.cim.idm.service;
import com.cim.idm.model.dto.delivery.DeliveryDelDto;
import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.delivery.MaterialDelivery;
@ -19,7 +20,7 @@ public interface IDeliveryService {
* @param dto 请求
* @return 到货单
*/
String createDelivery(DeliveryDto dto);
int createDelivery(DeliveryDto dto);
/**
* 获取采购订单
@ -64,4 +65,18 @@ public interface IDeliveryService {
* @return 采购单名称列表
*/
List<DeliveryReceiveDetailVo> getReceiveDetail(List<String> nameList);
/**
* 获取到货单
* @param dto 请求
* @return 采购订单
*/
PageInfo<MaterialDelivery> getDeliveryList(PageDto dto);
/**
* 删除到货单
* @param deliveryDelDto 请求
* @return 结果
*/
int delDelivery(DeliveryDelDto deliveryDelDto);
}

View File

@ -1,14 +1,13 @@
package com.cim.idm.service.Impl;
import com.alibaba.fastjson.JSON;
import com.cim.idm.constants.DeliveryStateEnums;
import com.cim.idm.constants.ReceiveTypeEnums;
import com.cim.idm.constants.delivery.DeliveryStateEnums;
import com.cim.idm.constants.receive.ReceiveTypeEnums;
import com.cim.idm.dao.DeliveryDao;
import com.cim.idm.exception.GlobalException;
import com.cim.idm.model.dto.PageDto;
import com.cim.idm.model.dto.PurchaseDto;
import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.DeliveryRelationDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.dto.delivery.*;
import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest;
@ -32,11 +31,7 @@ public class DeliveryServiceImpl implements IDeliveryService {
@Override
@Transactional
public String createDelivery(DeliveryDto dto) {
// 添加到库单
if (deliveryDao.createDelivery(dto, DeliveryStateEnums.CREATE.getCode()) <= 0) {
return "添加到库单失败";
}
public int createDelivery(DeliveryDto dto) {
// 添加到库单关系
List<DeliveryRelationDto> res = new ArrayList<>();
for (DeliveryRelationDto item : dto.getReceiveList()) {
@ -47,10 +42,14 @@ public class DeliveryServiceImpl implements IDeliveryService {
res.add(item);
}
}
if (deliveryDao.createRelation(res) <= 0) {
return "添加到库单关系失败";
if (res.isEmpty()) {
throw new GlobalException("无可用的物料");
}
return "更新成功";
if (deliveryDao.createRelation(res) <= 0) {
throw new GlobalException("添加到库单关系失败");
}
// 添加到库单
return deliveryDao.createDelivery(dto, DeliveryStateEnums.CREATE.getCode());
}
@Override
@ -91,4 +90,22 @@ public class DeliveryServiceImpl implements IDeliveryService {
public List<DeliveryReceiveDetailVo> getReceiveDetail(List<String> nameList) {
return deliveryDao.getReceiveDetail(nameList);
}
@Override
public PageInfo<MaterialDelivery> getDeliveryList(PageDto dto) {
PageMethod.startPage(dto.getPageNum(), dto.getPageSize());
DeliveryListDto deliveryListDto = JSON.toJavaObject(dto.getParams(), DeliveryListDto.class);
return new PageInfo<>(deliveryDao.getDeliveryList(deliveryListDto));
}
@Override
@Transactional
public int delDelivery(DeliveryDelDto deliveryDelDto) {
// 移除到货单关系
if (deliveryDao.delDeliveryRel(deliveryDelDto) <= 0) {
throw new GlobalException("删除到货单关系失败");
}
// 移除到货单
return deliveryDao.delDelivery(deliveryDelDto);
}
}

View File

@ -225,4 +225,31 @@
</foreach>
order by RECEIVEREQUESTNAME
</select>
<select id="getDeliveryList" resultType="com.cim.idm.model.po.delivery.MaterialDelivery">
SELECT SITENAME, DELIVERYNAME, DELIVERYTYPE, DELIVERYSTATE
FROM MATERIALDELIVERY
WHERE SITENAME = #{dto.siteName}
<if test="dto.deliveryName != null and dto.deliveryName != ''">
AND DELIVERYNAME LIKE '%'||#{dto.deliveryName}||'%'
</if>
<if test="dto.deliveryType != null and dto.deliveryType != ''">
AND DELIVERYTYPE = #{dto.deliveryType}
</if>
<if test="dto.deliveryState != null and dto.deliveryState != ''">
AND DELIVERYSTATE = #{dto.deliveryState}
</if>
order by DELIVERYNAME
</select>
<delete id="delDelivery">
delete from MATERIALDELIVERY
where SITENAME = #{dto.siteName}
and DELIVERYNAME = #{dto.deliveryName}
</delete>
<delete id="delDeliveryRel">
delete from MATERIALDELIVERYRECEIVE
where DELIVERYNAME = #{dto.deliveryName}
</delete>
</mapper>