feat 更改到货单逻辑

This commit is contained in:
Amjacks 2025-04-10 15:31:53 +08:00
parent 106a7aa8bd
commit c8de025d22
14 changed files with 182 additions and 100 deletions

View File

@ -0,0 +1,17 @@
package com.cim.idm.constants;
import lombok.Getter;
@Getter
public enum DeliveryStateEnums {
CREATE("01", "新建"),
FINISH("02", "结束");
private final String code;
private final String info;
DeliveryStateEnums(String code, String info) {
this.code = code;
this.info = info;
}
}

View File

@ -0,0 +1,17 @@
package com.cim.idm.constants;
import lombok.Getter;
@Getter
public enum DeliveryTypeEnums {
BATCH("01", "批次到货单"),
AUXILIARY_MATERIALS("02", "辅材到货单");
private final String code;
private final String info;
DeliveryTypeEnums(String code, String info) {
this.code = code;
this.info = info;
}
}

View File

@ -0,0 +1,17 @@
package com.cim.idm.constants;
import lombok.Getter;
@Getter
public enum DocumentTypeEnums {
DELIVERY("01", "到货单"),
RECEIVE("02", "采购单");
private final String code;
private final String info;
DocumentTypeEnums(String code, String info) {
this.code = code;
this.info = info;
}
}

View File

@ -10,8 +10,7 @@ public enum ReceiveTypeEnums {
Z001("Z001", "生产物资采购订单"),
Z002("Z002", "研发采购订单"),
Z003("Z003", "非生产物资采购订单"),
Z004("Z004", "固定资产、在建工程采购订单"),
DK("DK", "到库单");
Z004("Z004", "固定资产、在建工程采购订单");
private final String code;
private final String info;

View File

@ -1,11 +1,12 @@
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.model.dto.DeliveryDto;
import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.model.dto.PageDto;
import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.service.IDeliveryService;
import com.cim.idm.utils.AjaxResult;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@ -33,17 +34,16 @@ public class DeliveryController {
* 创建入库单
*/
@PostMapping(value = "/create")
public AjaxResult createDelivery(@RequestBody JSONObject in) {
DeliveryDto dto = JSON.toJavaObject(in, DeliveryDto.class);
public AjaxResult createDelivery(@RequestBody DeliveryDto dto) {
return AjaxResult.me().setSuccess(true).setMessage(deliveryService.createDelivery(dto));
}
/**
* 获取采购单
*/
@PostMapping(value = "/getPurchase")
public AjaxResult getPurchase(@RequestBody PageDto in) {
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getPurchase(in));
@PostMapping(value = "/getReceiveList")
public AjaxResult getReceiveList(@RequestBody PageDto in) {
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getReceiveList(in));
}
/**
@ -54,30 +54,33 @@ public class DeliveryController {
public AjaxResult getStoreDetail(@RequestBody JSONObject in) {
Map<String, String> params = (Map<String, String>) in.get("params");
// siteName
String siteName = params.get("SITENAME");
String receiveRequestName = params.get("RECEIVEREQUESTNAME");
StoreDetailDto storeDetailDto = new StoreDetailDto();
storeDetailDto.setSiteName(params.get("SITENAME"));
storeDetailDto.setDocumentName(params.get("RECEIVEREQUESTNAME"));
// 单据名称集合
List<String> nameList = new ArrayList<>();
// 判定是否是到库单
MaterialReceiveRequest byKey = deliveryService.getByKey(siteName, receiveRequestName);
if (Objects.isNull(byKey)) {
return AjaxResult.me().setSuccess(false).setMessage("不存在该单据");
}
String typeByKey = byKey.getReceiveRequestType();
// 到货单
String deliveryName = null;
if (typeByKey.equals(ReceiveTypeEnums.DK.getCode())) {
MaterialDelivery byKey = deliveryService.getByKey(storeDetailDto);
// 到货单
if (Objects.nonNull(byKey)) {
deliveryName = byKey.getDeliveryName();
// 到库单找出该单据下的所有的采购单
nameList = deliveryService.getReceiveByDelivery(siteName, receiveRequestName)
.stream().map(MaterialReceiveRequest::getReceiveRequestName).collect(Collectors.toList());
deliveryName = receiveRequestName;
nameList = deliveryService.getReceiveByDelivery(storeDetailDto)
.stream().map(MaterialDeliveryReceive::getReceiveRequestName).collect(Collectors.toList());
} else {
// 采购单
nameList.add(receiveRequestName);
MaterialReceiveRequest receiveByKey = deliveryService.getReceiveByKey(storeDetailDto);
if (Objects.nonNull(receiveByKey)) {
nameList.add(storeDetailDto.getDocumentName());
}
}
// 异常
if (nameList.isEmpty()) {
return AjaxResult.me().setSuccess(false).setMessage("不存在该单据");
}
// 获取采购单明细及批次
return AjaxResult.me().setSuccess(true).setResultObj(
deliveryService.getStoreDetail(siteName, nameList, deliveryName));
deliveryService.getStoreDetail(storeDetailDto.getSiteName(), nameList, deliveryName));
}
/**

View File

@ -1,7 +1,10 @@
package com.cim.idm.dao;
import com.cim.idm.model.dto.DeliveryRelationDto;
import com.cim.idm.model.po.MaterialReceiveDelivery;
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.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.model.dto.PurchaseDto;
import com.cim.idm.model.vo.DeliveryReceiveDetailVo;
@ -21,9 +24,8 @@ public interface DeliveryDao {
/**
* 新增到货单
*/
int createDelivery(@Param("siteName") String siteName,
@Param("receiveRequestName") String receiveRequestName,
@Param("receiveRequestType") String receiveRequestType );
int createDelivery(@Param("dto") DeliveryDto dto,
@Param("state") String state);
/**
* 新增到货单关系
@ -33,7 +35,7 @@ public interface DeliveryDao {
/**
* 获取采购订单
*/
List<MaterialReceiveRequestVo> getPurchase(@Param("dto") PurchaseDto dto,
List<MaterialReceiveRequestVo> getReceiveList(@Param("dto") PurchaseDto dto,
@Param("typeList") List<String> typeList);
/**
@ -54,19 +56,17 @@ public interface DeliveryDao {
/**
* 根据 key 获取值
*/
MaterialReceiveRequest getByKey(@Param("siteName") String siteName,
@Param("receiveRequestName") String receiveRequestName);
MaterialDelivery getByKey(@Param("dto") StoreDetailDto storeDetailDto);
/**
* 根据 key 获取采购单
*/
MaterialReceiveRequest getReceiveByKey(@Param("dto") StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
*/
List<MaterialReceiveRequest> getReceiveByDelivery(@Param("siteName") String siteName,
@Param("receiveRequestName") String receiveRequestName);
/**
* 获取到库单关系
*/
List<MaterialReceiveDelivery> getRelation(@Param("deliveryName") String deliveryName);
List<MaterialDeliveryReceive> getReceiveByDelivery(@Param("dto") StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称

View File

@ -1,4 +1,4 @@
package com.cim.idm.model.dto;
package com.cim.idm.model.dto.delivery;
import com.cim.idm.wmspackage.invoice.management.data.MaterialReceiveRequestKey;
import lombok.Data;
@ -10,11 +10,11 @@ public class DeliveryDto {
// siteName
private String siteName;
// 名称
private String receiveRequestName;
// 到货单名称
private String deliveryName;
// 数据
private List<MaterialReceiveRequestKey> dataList;
// 类型
private String deliveryType;
// 数据
private List<DeliveryRelationDto> receiveList;

View File

@ -1,4 +1,4 @@
package com.cim.idm.model.dto;
package com.cim.idm.model.dto.delivery;
import lombok.Data;

View File

@ -0,0 +1,13 @@
package com.cim.idm.model.dto.delivery;
import lombok.Data;
@Data
public class StoreDetailDto {
// 工厂
private String siteName;
// 单据名称
private String documentName;
}

View File

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

View File

@ -1,15 +1,15 @@
package com.cim.idm.model.po;
package com.cim.idm.model.po.delivery;
import lombok.Data;
@Data
public class MaterialReceiveDelivery {
public class MaterialDeliveryReceive {
// 到库单
// 到库单
private String deliveryName;
// 到库数量
private String deliveryNum;
// 采购单
// 采购单
private String receiveRequestName;
// 料号
private String materialSpecName;

View File

@ -1,7 +1,9 @@
package com.cim.idm.service;
import com.cim.idm.model.dto.DeliveryDto;
import com.cim.idm.model.po.MaterialReceiveDelivery;
import com.cim.idm.model.dto.delivery.DeliveryDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.model.dto.PageDto;
import com.cim.idm.model.vo.DeliveryReceiveDetailVo;
@ -24,7 +26,7 @@ public interface IDeliveryService {
* @param dto 请求
* @return 采购订单
*/
PageInfo<MaterialReceiveRequestVo> getPurchase(PageDto dto);
PageInfo<MaterialReceiveRequestVo> getReceiveList(PageDto dto);
/**
* 获取采购单明细及批次
@ -37,23 +39,24 @@ public interface IDeliveryService {
/**
* 根据 key 获取值
* @param siteName 组织
* @param receiveRequestName 单据名称
* @param storeDetailDto 单据请求
* @return 类型
*/
MaterialReceiveRequest getByKey(String siteName, String receiveRequestName);
MaterialDelivery getByKey(StoreDetailDto storeDetailDto);
/**
* 根据 key 获取采购单
* @param storeDetailDto 单据请求
* @return 类型
*/
MaterialReceiveRequest getReceiveByKey(StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
* @param receiveRequestName 到库单
* @param storeDetailDto 到库单
* @return 采购单名称列表
*/
List<MaterialReceiveRequest> getReceiveByDelivery(String siteName, String receiveRequestName);
/**
* 获取到库单关系
*/
List<MaterialReceiveDelivery> getRelation(String deliveryName);
List<MaterialDeliveryReceive> getReceiveByDelivery(StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称

View File

@ -1,13 +1,16 @@
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.dao.DeliveryDao;
import com.cim.idm.model.dto.PageDto;
import com.cim.idm.model.dto.PurchaseDto;
import com.cim.idm.model.dto.DeliveryDto;
import com.cim.idm.model.dto.DeliveryRelationDto;
import com.cim.idm.model.po.MaterialReceiveDelivery;
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.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.model.vo.DeliveryReceiveDetailVo;
import com.cim.idm.model.vo.MaterialReceiveRequestVo;
@ -31,8 +34,7 @@ public class DeliveryServiceImpl implements IDeliveryService {
@Transactional
public String createDelivery(DeliveryDto dto) {
// 添加到库单
if (deliveryDao.createDelivery(dto.getSiteName(),
dto.getReceiveRequestName(), ReceiveTypeEnums.DK.getCode()) <= 0) {
if (deliveryDao.createDelivery(dto, DeliveryStateEnums.CREATE.getCode()) <= 0) {
return "添加到库单失败";
}
// 添加到库单关系
@ -41,7 +43,7 @@ public class DeliveryServiceImpl implements IDeliveryService {
// 数量大于 0
if (Objects.nonNull(item.getDeliveryNum()) && item.getDeliveryNum() > 0) {
// 到库单号
item.setDeliveryName(dto.getReceiveRequestName());
item.setDeliveryName(dto.getDeliveryName());
res.add(item);
}
}
@ -52,10 +54,10 @@ public class DeliveryServiceImpl implements IDeliveryService {
}
@Override
public PageInfo<MaterialReceiveRequestVo> getPurchase(PageDto dto) {
public PageInfo<MaterialReceiveRequestVo> getReceiveList(PageDto dto) {
PageMethod.startPage(dto.getPageNum(), dto.getPageSize());
PurchaseDto purchaseDto = JSON.toJavaObject(dto.getParams(), PurchaseDto.class);
return new PageInfo<>(deliveryDao.getPurchase(purchaseDto, ReceiveTypeEnums.getPurchase()));
return new PageInfo<>(deliveryDao.getReceiveList(purchaseDto, ReceiveTypeEnums.getPurchase()));
}
@Override
@ -71,18 +73,18 @@ public class DeliveryServiceImpl implements IDeliveryService {
}
@Override
public MaterialReceiveRequest getByKey(String siteName, String receiveRequestName) {
return deliveryDao.getByKey(siteName, receiveRequestName);
public MaterialDelivery getByKey(StoreDetailDto storeDetailDto) {
return deliveryDao.getByKey(storeDetailDto);
}
@Override
public List<MaterialReceiveRequest> getReceiveByDelivery(String siteName, String receiveRequestName) {
return deliveryDao.getReceiveByDelivery(siteName, receiveRequestName);
public MaterialReceiveRequest getReceiveByKey(StoreDetailDto storeDetailDto) {
return deliveryDao.getReceiveByKey(storeDetailDto);
}
@Override
public List<MaterialReceiveDelivery> getRelation(String deliveryName) {
return deliveryDao.getRelation(deliveryName);
public List<MaterialDeliveryReceive> getReceiveByDelivery(StoreDetailDto storeDetailDto) {
return deliveryDao.getReceiveByDelivery(storeDetailDto);
}
@Override

View File

@ -3,14 +3,14 @@
<mapper namespace="com.cim.idm.dao.DeliveryDao">
<insert id="createDelivery">
INSERT INTO MATERIALRECEIVEREQUEST(SITENAME, RECEIVEREQUESTNAME, RECEIVEREQUESTTYPE)
VALUES (#{siteName}, #{receiveRequestName}, #{receiveRequestType})
INSERT INTO MATERIALDELIVERY(SITENAME, DELIVERYNAME, DELIVERYTYPE, DELIVERYSTATE)
VALUES (#{dto.siteName}, #{dto.deliveryName}, #{dto.deliveryType}, #{state})
</insert>
<insert id="createRelation">
INSERT ALL
<foreach item="item" index="index" collection="receiveList">
INTO MATERIALRECEIVEDELIVERY (RECEIVEREQUESTNAME, DELIVERYNAME, DELIVERYNUM, MATERIALSPECNAME) VALUES (#{item.receiveRequestName}, #{item.deliveryName}, #{item.deliveryNum}, #{item.materialSpecName})
INTO MATERIALDELIVERYRECEIVE (RECEIVEREQUESTNAME, DELIVERYNAME, DELIVERYNUM, MATERIALSPECNAME) VALUES (#{item.receiveRequestName}, #{item.deliveryName}, #{item.deliveryNum}, #{item.materialSpecName})
</foreach>
SELECT * FROM dual
</insert>
@ -39,7 +39,7 @@
<result property="purchaseOrderGroup" column="PURCHASEORDERGROUP" />
</resultMap>
<select id="getPurchase" resultMap="MaterialReceiveRequestVo">
<select id="getReceiveList" resultMap="MaterialReceiveRequestVo">
SELECT DISTINCT m.SITENAME, m.RECEIVEREQUESTNAME, m.RECEIVEREQUESTTYPE, m.ORDERDATE, m.SUPPLIERNO,
m.LASTEVENTNAME, m.LASTEVENTTIME, m.LASTEVENTUSER, m.LASTEVENTCOMMENT, s.SUPPLIERNAME,
STOCKORGNO ERPFACTORY, o.ORGNAME, ms.MATERIALSPECNAME, ms.DESC_CN, d.CREATETIME,
@ -114,7 +114,7 @@
<if test="deliveryName != null">
,DELIVERY AS (
SELECT sum(md.DELIVERYNUM) DELIVERYNUM, md.MATERIALSPECNAME MATERIALSPECNAME
FROM MATERIALRECEIVEDELIVERY md
FROM MATERIALDELIVERYRECEIVE md
WHERE md.DELIVERYNAME = #{deliveryName}
and md.RECEIVEREQUESTNAME IN
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
@ -192,33 +192,28 @@
) TTT
</select>
<select id="getByKey" resultType="com.cim.idm.model.po.MaterialReceiveRequest">
<select id="getByKey" resultType="com.cim.idm.model.po.delivery.MaterialDelivery">
select SITENAME, DELIVERYNAME, DELIVERYTYPE, DELIVERYSTATE
from MATERIALDELIVERY
WHERE SITENAME = #{dto.siteName}
AND DELIVERYNAME = #{dto.documentName}
</select>
<select id="getReceiveByKey" resultType="com.cim.idm.model.po.MaterialReceiveRequest">
SELECT SITENAME, RECEIVEREQUESTNAME, RECEIVEREQUESTTYPE, PURCHASEORDERGROUP, RECEIVEREQUESTSTATE, SUPPLIERNO,
OEMSITENAME, OEMSITEINCHARGE, SYSTEMTYPE, LASTEVENTNAME, LASTEVENTTIMEKEY, LASTEVENTTIME, LASTEVENTUSER,
LASTEVENTCOMMENT, ERPPONAME, SAVEREASON, RESPPERSON, RESPDEPART, SOLVETIME, PASSSTATE, WORKER, SDK_ID,
ERPID, REMARK, PURCHASER, PURORGNO, ORDERDATE, CLOSERUSER, CLOSEDATE, STOCKORGNO, RETURNFLAG,
RECEIVEREQUESTDETAILTYPE, ERPLOCATION, PRODUCTDEPTNO, SOURCEBILLID, EFFECTIVESTARTTIME, EFFECTIVEENDTIME
FROM MATERIALRECEIVEREQUEST
WHERE SITENAME = #{siteName}
AND RECEIVEREQUESTNAME = #{receiveRequestName}
WHERE SITENAME = #{dto.siteName}
AND RECEIVEREQUESTNAME = #{dto.documentName}
</select>
<select id="getReceiveByDelivery" resultType="com.cim.idm.model.po.MaterialReceiveRequest">
SELECT m.SITENAME, m.RECEIVEREQUESTNAME, m.RECEIVEREQUESTTYPE, m.PURCHASEORDERGROUP, m.RECEIVEREQUESTSTATE, m.SUPPLIERNO,
m.OEMSITENAME, m.OEMSITEINCHARGE, m.SYSTEMTYPE, m.LASTEVENTNAME, m.LASTEVENTTIMEKEY, m.LASTEVENTTIME, m.LASTEVENTUSER,
m.LASTEVENTCOMMENT, m.ERPPONAME, m.SAVEREASON, m.RESPPERSON, m.RESPDEPART, m.SOLVETIME, m.PASSSTATE, m.WORKER, m.SDK_ID,
m.ERPID, m.REMARK, m.PURCHASER, m.PURORGNO, m.ORDERDATE, m.CLOSERUSER, m.CLOSEDATE, m.STOCKORGNO, m.RETURNFLAG,
m.RECEIVEREQUESTDETAILTYPE, m.ERPLOCATION, m.PRODUCTDEPTNO, m.SOURCEBILLID, m.EFFECTIVESTARTTIME, m.EFFECTIVEENDTIME
FROM MATERIALRECEIVEREQUEST m, MATERIALRECEIVEDELIVERY md
WHERE md.DELIVERYNAME = #{receiveRequestName}
AND m.SITENAME = #{siteName}
AND m.RECEIVEREQUESTNAME = md.RECEIVEREQUESTNAME
</select>
<select id="getRelation" resultType="com.cim.idm.model.po.MaterialReceiveDelivery">
<select id="getReceiveByDelivery" resultType="com.cim.idm.model.po.delivery.MaterialDeliveryReceive">
SELECT md.DELIVERYNAME, md.DELIVERYNUM, md.RECEIVEREQUESTNAME, md.MATERIALSPECNAME
FROM MATERIALRECEIVEDELIVERY md
WHERE md.DELIVERYNAME = #{deliveryName}
FROM MATERIALDELIVERYRECEIVE md
WHERE md.DELIVERYNAME = #{dto.documentName}
</select>
<select id="getReceiveDetail" resultType="com.cim.idm.model.vo.DeliveryReceiveDetailVo">