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; import lombok.Getter;
@Getter @Getter
public enum DeliveryStateEnums { public enum DeliveryStateEnums {
CREATE("01", "新建"), CREATE("01", "新建"),
FINISH("02", "结束"); DOING("02", "进行中"),
FINISH("03", "结束");
private final String code; private final String code;
private final String info; private final String info;

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,9 @@
package com.cim.idm.controller; package com.cim.idm.controller;
import com.alibaba.fastjson.JSONObject; 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.DeliveryDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto; import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.model.po.MaterialReceiveRequest;
@ -35,7 +38,10 @@ public class DeliveryController {
*/ */
@PostMapping(value = "/create") @PostMapping(value = "/create")
public AjaxResult createDelivery(@RequestBody DeliveryDto dto) { 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()) { if (nameList.isEmpty()) {
return AjaxResult.me().setSuccess(false).setMessage("不存在该单据"); throw new GlobalException("不存在该单据");
} }
// 获取采购单明细及批次 // 获取采购单明细及批次
return AjaxResult.me().setSuccess(true).setResultObj( return AjaxResult.me().setSuccess(true).setResultObj(
@ -89,7 +95,36 @@ public class DeliveryController {
@PostMapping(value = "/getReceiveDetail") @PostMapping(value = "/getReceiveDetail")
public AjaxResult getReceiveDetail(@RequestBody JSONObject in) { public AjaxResult getReceiveDetail(@RequestBody JSONObject in) {
List<String> nameList = (List<String>) in.get("nameList"); List<String> nameList = (List<String>) in.get("nameList");
// 获取采购订单详情
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getReceiveDetail(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.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.ReceiveTypeEnums;
import com.cim.idm.framework.IDMFrameServiceProxy; import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo; import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.model.po.MaterialReceiveRequest;
@ -31,7 +30,6 @@ import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl; import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl;
@ -179,14 +177,14 @@ public class MaterialReceiveActController {
// 单据 // 单据
String receiveRequestName = boxs.getReceiveRequestName(); 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())) { if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) {
// 检索该到库订单下该物料的采购订单的 name // 检索该到库订单下该物料的采购订单的 name
List<MaterialReceiveRequest> collect = deliveryService.getReceiveByDelivery(boxs.getSiteName(), boxs.getReceiveRequestName()) List<MaterialReceiveRequest> collect = deliveryService.getReceiveByDelivery(boxs.getSiteName(), boxs.getReceiveRequestName())
.stream().filter(item -> item.getMaterialSpecName().equals(materialSpecName)).collect(Collectors.toList()); .stream().filter(item -> item.getMaterialSpecName().equals(materialSpecName)).collect(Collectors.toList());
// 检查剩余数量 // 检查剩余数量
// @TODO // @TODO
} }*/
String remark = box.getRemark(); String remark = box.getRemark();
String sdkid = box.getSdkid() == null ? "" : box.getSdkid(); String sdkid = box.getSdkid() == null ? "" : box.getSdkid();
String shipRequestDetailName = box.getShipRequestDetailName(); String shipRequestDetailName = box.getShipRequestDetailName();
@ -545,14 +543,14 @@ public class MaterialReceiveActController {
String site = trackOutBoDto.getSiteName(); String site = trackOutBoDto.getSiteName();
// 采购单 // 采购单
List<MaterialReceiveRequest> requests = new ArrayList<>(); List<MaterialReceiveRequest> requests = new ArrayList<>();
// 判定单据类型 // @TODO 判定单据类型
MaterialReceiveRequest byKey = deliveryService.getByKey(site, name); /*MaterialReceiveRequest byKey = deliveryService.getByKey(site, name);
if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) { if (byKey.getReceiveRequestType().equals(ReceiveTypeEnums.DK.getCode())) {
// 到货单 // 到货单
requests = deliveryService.getReceiveByDelivery(site, name); requests = deliveryService.getReceiveByDelivery(site, name);
} else { } else {
requests.add(byKey); requests.add(byKey);
} }*/
// 采购单处理 // 采购单处理
for (MaterialReceiveRequest request : requests) { for (MaterialReceiveRequest request : requests) {
String receiveRequestName = request.getReceiveRequestName(); String receiveRequestName = request.getReceiveRequestName();

View File

@ -1,8 +1,6 @@
package com.cim.idm.dao; package com.cim.idm.dao;
import com.cim.idm.model.dto.delivery.DeliveryDto; import com.cim.idm.model.dto.delivery.*;
import com.cim.idm.model.dto.delivery.DeliveryRelationDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.delivery.MaterialDelivery; import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive; import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.model.po.MaterialReceiveRequest;
@ -74,4 +72,25 @@ public interface DeliveryDao {
* @return 采购单名称列表 * @return 采购单名称列表
*/ */
List<DeliveryReceiveDetailVo> getReceiveDetail(@Param("nameList") List<String> nameList); 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.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody; 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 { public class AllExceptionHandler {
@ResponseBody @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; package com.cim.idm.model.dto.delivery;
import com.cim.idm.wmspackage.invoice.management.data.MaterialReceiveRequestKey;
import lombok.Data; import lombok.Data;
import java.util.List; 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; 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.DeliveryDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto; import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.delivery.MaterialDelivery; import com.cim.idm.model.po.delivery.MaterialDelivery;
@ -19,7 +20,7 @@ public interface IDeliveryService {
* @param dto 请求 * @param dto 请求
* @return 到货单 * @return 到货单
*/ */
String createDelivery(DeliveryDto dto); int createDelivery(DeliveryDto dto);
/** /**
* 获取采购订单 * 获取采购订单
@ -64,4 +65,18 @@ public interface IDeliveryService {
* @return 采购单名称列表 * @return 采购单名称列表
*/ */
List<DeliveryReceiveDetailVo> getReceiveDetail(List<String> nameList); 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; package com.cim.idm.service.Impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.cim.idm.constants.DeliveryStateEnums; import com.cim.idm.constants.delivery.DeliveryStateEnums;
import com.cim.idm.constants.ReceiveTypeEnums; import com.cim.idm.constants.receive.ReceiveTypeEnums;
import com.cim.idm.dao.DeliveryDao; 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.PageDto;
import com.cim.idm.model.dto.PurchaseDto; import com.cim.idm.model.dto.PurchaseDto;
import com.cim.idm.model.dto.delivery.DeliveryDto; import com.cim.idm.model.dto.delivery.*;
import com.cim.idm.model.dto.delivery.DeliveryRelationDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.delivery.MaterialDelivery; import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive; import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest; import com.cim.idm.model.po.MaterialReceiveRequest;
@ -32,11 +31,7 @@ public class DeliveryServiceImpl implements IDeliveryService {
@Override @Override
@Transactional @Transactional
public String createDelivery(DeliveryDto dto) { public int createDelivery(DeliveryDto dto) {
// 添加到库单
if (deliveryDao.createDelivery(dto, DeliveryStateEnums.CREATE.getCode()) <= 0) {
return "添加到库单失败";
}
// 添加到库单关系 // 添加到库单关系
List<DeliveryRelationDto> res = new ArrayList<>(); List<DeliveryRelationDto> res = new ArrayList<>();
for (DeliveryRelationDto item : dto.getReceiveList()) { for (DeliveryRelationDto item : dto.getReceiveList()) {
@ -47,10 +42,14 @@ public class DeliveryServiceImpl implements IDeliveryService {
res.add(item); res.add(item);
} }
} }
if (deliveryDao.createRelation(res) <= 0) { if (res.isEmpty()) {
return "添加到库单关系失败"; throw new GlobalException("无可用的物料");
} }
return "更新成功"; if (deliveryDao.createRelation(res) <= 0) {
throw new GlobalException("添加到库单关系失败");
}
// 添加到库单
return deliveryDao.createDelivery(dto, DeliveryStateEnums.CREATE.getCode());
} }
@Override @Override
@ -91,4 +90,22 @@ public class DeliveryServiceImpl implements IDeliveryService {
public List<DeliveryReceiveDetailVo> getReceiveDetail(List<String> nameList) { public List<DeliveryReceiveDetailVo> getReceiveDetail(List<String> nameList) {
return deliveryDao.getReceiveDetail(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> </foreach>
order by RECEIVEREQUESTNAME order by RECEIVEREQUESTNAME
</select> </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> </mapper>