feat 变更采购单
This commit is contained in:
parent
faaa549fbd
commit
645e8ea629
@ -2,6 +2,7 @@ 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.DeliveryDto;
|
||||
import com.cim.idm.model.PageDto;
|
||||
import com.cim.idm.service.IDeliveryService;
|
||||
@ -13,6 +14,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/delivery")
|
||||
@ -38,4 +42,29 @@ public class DeliveryController {
|
||||
public AjaxResult getPurchase(@RequestBody PageDto in) {
|
||||
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getPurchase(in));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取入库详情
|
||||
* 到货单/销售采购单,根据物料清单,创建批次,进行入库
|
||||
*/
|
||||
@PostMapping(value = "/getStoreDetail")
|
||||
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");
|
||||
// 单据名称集合
|
||||
List<String> nameList = new ArrayList<>();
|
||||
// 判定是否是到库单
|
||||
String typeByKey = deliveryService.getTypeByKey(siteName, receiveRequestName);
|
||||
if (typeByKey.equals(ReceiveTypeEnums.DK.getCode())) {
|
||||
// 到库单(找出该单据下的所有的采购单)
|
||||
nameList = deliveryService.getReceiveByDelivery(siteName, receiveRequestName);
|
||||
} else {
|
||||
// 采购单
|
||||
nameList.add(receiveRequestName);
|
||||
}
|
||||
// 获取采购单明细及批次
|
||||
return AjaxResult.me().setSuccess(true).setResultObj(deliveryService.getStoreDetail(siteName, nameList));
|
||||
}
|
||||
}
|
||||
|
@ -2,11 +2,13 @@ package com.cim.idm.dao;
|
||||
|
||||
import com.cim.idm.model.MaterialReceiveRequest;
|
||||
import com.cim.idm.model.PurchaseDto;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Mapper
|
||||
@ -28,9 +30,33 @@ public interface DeliveryDao {
|
||||
|
||||
/**
|
||||
* 获取采购订单
|
||||
* @param dto 请求
|
||||
* @return 采购订单
|
||||
*/
|
||||
List<MaterialReceiveRequest> getPurchase(@Param("dto") PurchaseDto dto,
|
||||
@Param("typeList") List<String> typeList);
|
||||
|
||||
/**
|
||||
* 获取入库详情
|
||||
*/
|
||||
@MapKey("storeDetail")
|
||||
List<Map<String, Object>> getStoreDetail(@Param("siteName") String siteName,
|
||||
@Param("nameList") List<String> nameList);
|
||||
|
||||
/**
|
||||
* 获取入库批次
|
||||
*/
|
||||
@MapKey("storeCharge")
|
||||
List<Map<String, Object>> getStoreCharge(@Param("siteName") String siteName,
|
||||
@Param("nameList") List<String> nameList);
|
||||
|
||||
/**
|
||||
* 根据 key 获取值
|
||||
*/
|
||||
String getTypeByKey(@Param("siteName") String siteName,
|
||||
@Param("receiveRequestName") String receiveRequestName);
|
||||
|
||||
/**
|
||||
* 根据到库单获取采购单名称
|
||||
*/
|
||||
List<String> getReceiveByDelivery(@Param("siteName") String siteName,
|
||||
@Param("receiveRequestName") String receiveRequestName);
|
||||
}
|
||||
|
@ -5,6 +5,9 @@ import com.cim.idm.model.MaterialReceiveRequest;
|
||||
import com.cim.idm.model.PageDto;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IDeliveryService {
|
||||
/**
|
||||
* 新增到货单
|
||||
@ -19,4 +22,27 @@ public interface IDeliveryService {
|
||||
* @return 采购订单
|
||||
*/
|
||||
PageInfo<MaterialReceiveRequest> getPurchase(PageDto dto);
|
||||
|
||||
/**
|
||||
* 获取采购单明细及批次
|
||||
* @param siteName 组织
|
||||
* @param nameList 名称
|
||||
* @return 采购订单
|
||||
*/
|
||||
Map<String, Object> getStoreDetail(String siteName, List<String> nameList);
|
||||
|
||||
/**
|
||||
* 根据 key 获取值
|
||||
* @param siteName 组织
|
||||
* @param receiveRequestName 单据名称
|
||||
* @return 类型
|
||||
*/
|
||||
String getTypeByKey(String siteName, String receiveRequestName);
|
||||
|
||||
/**
|
||||
* 根据到库单获取采购单名称
|
||||
* @param receiveRequestName 到库单
|
||||
* @return 采购单名称列表
|
||||
*/
|
||||
List<String> getReceiveByDelivery(String siteName, String receiveRequestName);
|
||||
}
|
||||
|
@ -15,7 +15,9 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@ -45,4 +47,26 @@ public class DeliveryServiceImpl implements IDeliveryService {
|
||||
PurchaseDto purchaseDto = JSON.toJavaObject(dto.getParams(), PurchaseDto.class);
|
||||
return new PageInfo<>(deliveryDao.getPurchase(purchaseDto, ReceiveTypeEnums.getPurchase()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getStoreDetail(String siteName, List<String> nameList) {
|
||||
Map<String, Object> res = new HashMap<>();
|
||||
// 采购单明细
|
||||
List<Map<String, Object>> storeDetail = deliveryDao.getStoreDetail(siteName, nameList);
|
||||
// 批次
|
||||
List<Map<String, Object>> storeCharge = deliveryDao.getStoreCharge(siteName, nameList);
|
||||
res.put("storeDetail", storeDetail);
|
||||
res.put("storeCharge", storeCharge);
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTypeByKey(String siteName, String receiveRequestName) {
|
||||
return deliveryDao.getTypeByKey(siteName, receiveRequestName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getReceiveByDelivery(String siteName, String receiveRequestName) {
|
||||
return deliveryDao.getReceiveByDelivery(siteName, receiveRequestName);
|
||||
}
|
||||
}
|
||||
|
@ -27,4 +27,107 @@
|
||||
AND RECEIVEREQUESTNAME LIKE '%'||#{dto.receiveRequestName}||'%'
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- GetInvoiceDetailInformationRow Z10006_SAP -->
|
||||
<select id="getStoreDetail" resultType="map">
|
||||
WITH AA AS (
|
||||
SELECT m5.RECEIVEREQUESTNAME, m5.MATERIALSPECNAME, m5.SDK_ID, m5.phase, SUM( m5.MATERIALQUANTITY ) QTY
|
||||
FROM MATERIALPACKING m5
|
||||
WHERE m5.STOCKSTATE IN ( 'Stocked', 'StockOut' )
|
||||
AND m5.RECEIVEREQUESTNAME in
|
||||
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
GROUP BY m5.MATERIALSPECNAME, m5.RECEIVEREQUESTNAME, m5.SDK_ID, m5.phase
|
||||
),
|
||||
BB AS (
|
||||
SELECT m5.RECEIVEREQUESTNAME, m5.MATERIALSPECNAME, m5.SDK_ID, m5.phase, SUM( m5.MATERIALQUANTITY ) QTY
|
||||
FROM MATERIALPACKING m5
|
||||
WHERE m5.STOCKSTATE = 'Created'
|
||||
AND m5.RECEIVEREQUESTNAME in
|
||||
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
GROUP BY m5.MATERIALSPECNAME, m5.RECEIVEREQUESTNAME, m5.SDK_ID, m5.phase
|
||||
)
|
||||
SELECT m3.WIDTH AS DESCRIPTION, be.DESCRIPTION AS ERPLOCATION2, m.ERPLOCATION, o.ORGNAME AS ERPFACTORY2,
|
||||
m2.STOCKORGNO AS ERPFACTORY, sss.DESCRIPTION AS LOCATIONNAME2, m.LOCATIONNAME, m2.SUPPLIERNO,
|
||||
'1' RECEIVEREQUESTDETAILNAME, SUM( m.REQUESTQUANTITY ) REQUESTQUANTITY, SUM( m.RECEIVEDQUANTITY ) RECEIVEDQUANTITY,
|
||||
SUM( m.REQUESTQUANTITY - m.RECEIVEDQUANTITY ) AS RECEIVEDQUANTITY2,
|
||||
SUM( m.REQUESTQUANTITY - m.RECEIVEDQUANTITY ) AS MINUSQTY, NVL( MAX( BB.QTY ), 0 ) CREATEQTY,
|
||||
NVL( MAX( AA.QTY ), 0 ) STOCKINQTY, m3.DESC_CN, m.MATERIALUNIT, M3.MATERIALUNITDESC,
|
||||
CASE WHEN m3.EXPIRATION_RULES = '0' THEN '入厂保质期'
|
||||
WHEN m3.EXPIRATION_RULES = '1' THEN '出厂保质期' ELSE '未定义'
|
||||
END AS REPLACED_VALUE,
|
||||
m.SDK_ID, m3.WIDTH SPECNAME, m3.PHASE, m.MATERIALSPECNAME, m.SITENAME, m.RECEIVEREQUESTNAME,
|
||||
DECODE( m3.IS_BATCH, 'Y', '是' , '否' ) IS_BATCH, '是' IS_BATCH, DECODE( m4.IQCFLAG, 'Y', '是' , '否' ) IQCFLAG,
|
||||
max( m.REMARK ) REMARK, max( m.SALESMAN ) SALESPERSON, max( m.SALESASSISTANT ) CAREER_ASSISTANCE,
|
||||
max( m.BUSINESSDIVISION ) BUSINESS_UNIT, TO_CHAR( SYSDATE, 'YYYY-MM-DD' ) RECEIVETIME,
|
||||
TO_CHAR( SYSDATE, 'YYYY-MM-DD' ) MAKEDATE
|
||||
FROM MATERIALRECEIVEREQUESTDETAIL m
|
||||
LEFT JOIN MATERIALRECEIVEREQUEST m2 ON m.RECEIVEREQUESTNAME = m2.RECEIVEREQUESTNAME
|
||||
LEFT JOIN MATERIALSPEC m3 ON m.MATERIALSPECNAME = m3.MATERIALSPECNAME
|
||||
LEFT JOIN BS_MATERIALFACTORY m4 ON m.MATERIALSPECNAME = m4.MATERIALSPECNAME AND m.ERPFACTORY = m4.ERPFACTORY
|
||||
LEFT JOIN SUPPLIER S ON m2.SUPPLIERNO = S.SUPPLIERNO
|
||||
LEFT JOIN BS_ERPLOCATION be ON m.ERPLOCATION = be.ERPLOCATIONNAME
|
||||
LEFT JOIN ORG o ON o.ORGNO = m2.STOCKORGNO
|
||||
LEFT JOIN STORAGESPEC sss ON m.LOCATIONNAME = sss.STORAGENAME
|
||||
LEFT JOIN AA ON AA.RECEIVEREQUESTNAME = m.RECEIVEREQUESTNAME
|
||||
AND AA.MATERIALSPECNAME = m.MATERIALSPECNAME
|
||||
AND AA.SDK_ID = m.SDK_ID AND AA.PHASE = m3.PHASE
|
||||
LEFT JOIN BB ON BB.RECEIVEREQUESTNAME = m.RECEIVEREQUESTNAME
|
||||
AND BB.MATERIALSPECNAME = m.MATERIALSPECNAME
|
||||
AND BB.SDK_ID = m.SDK_ID
|
||||
AND BB.PHASE = m3.PHASE
|
||||
WHERE ( m2.RETURNFLAG IS NULL OR m2.RETURNFLAG != 'Y' )
|
||||
AND m.RECEIVEREQUESTNAME in
|
||||
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
AND m.SITENAME = #{siteName}
|
||||
AND m2.RECEIVEREQUESTTYPE IN ( 'ZK4A', '45', '4C', 'Z001', 'Z002', 'Z003', 'Z004' )
|
||||
GROUP BY m3.DESCRIPTION, be.DESCRIPTION, m.ERPLOCATION, o.ORGNAME, m2.STOCKORGNO, sss.DESCRIPTION,
|
||||
m.LOCATIONNAME, m2.SUPPLIERNO, m3.DESC_CN, m.MATERIALUNIT, M3.MATERIALUNITDESC,
|
||||
m3.EXPIRATION_RULES, m.SDK_ID, m3.WIDTH, m3.PHASE, m.MATERIALSPECNAME, m.SITENAME,
|
||||
m.RECEIVEREQUESTNAME, m3.IS_BATCH, m4.IQCFLAG
|
||||
</select>
|
||||
|
||||
<!-- GetPackingRow xh002 -->
|
||||
<select id="getStoreCharge" resultType="map">
|
||||
SELECT ROWNUM SEQ, TTT.*
|
||||
FROM (
|
||||
SELECT A.RECEIVEREQUESTNAME, A.SITENAME, A.MATERIALPACKINGNAME, A.MATERIALSPECNAME, A.ERPLOCATION, A.ERPFACTORY,
|
||||
A.LOCATIONNAME, A.CHARGE, A.REMARK, B.DESC_CN, B.DESCRIPTION, A.SDK_ID, SS.SPECNAME, A.PHASE,
|
||||
A.MATERIALQUANTITY, M.FNAME UNIT, BE.DESCRIPTION ERPLOCATIONDESC, S.DESCRIPTION LOCATIONNAMEDESC,
|
||||
A.ERPFACTORY ERPFACTROY, o.ORGNAME ERPFACTROYDESC, A.SUPPLIERNAME SUPPLIERNO
|
||||
FROM MATERIALPACKING A
|
||||
LEFT JOIN MATERIALSPEC B ON A.MATERIALSPECNAME = B.MATERIALSPECNAME
|
||||
LEFT JOIN SDK_SPEC SS ON A.SDK_ID = SS.SDK_ID
|
||||
LEFT JOIN BS_ERPLOCATION BE ON BE.ERPLOCATIONNAME = A.ERPLOCATION
|
||||
LEFT JOIN STORAGESPEC S ON S.STORAGENAME = A.LOCATIONNAME
|
||||
LEFT JOIN ORG o ON o.ORGNO = A.ERPFACTORY
|
||||
LEFT JOIN MATERIALUNIT M ON M.FNUMBER = A.UNIT
|
||||
WHERE A.SITENAME = #{siteName}
|
||||
AND A.RECEIVEREQUESTNAME in
|
||||
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
AND A.STOCKSTATE = 'Created'
|
||||
ORDER BY A.MATERIALSPECNAME, A.SDK_ID, A.PHASE
|
||||
) TTT
|
||||
</select>
|
||||
|
||||
<select id="getTypeByKey" resultType="String">
|
||||
SELECT RECEIVEREQUESTTYPE
|
||||
FROM MATERIALRECEIVEREQUEST
|
||||
WHERE SITENAME = #{siteName}
|
||||
AND RECEIVEREQUESTNAME = #{receiveRequestName}
|
||||
</select>
|
||||
|
||||
<select id="getReceiveByDelivery" resultType="String">
|
||||
SELECT RECEIVEREQUESTNAME
|
||||
FROM MATERIALRECEIVEREQUEST
|
||||
WHERE SITENAME = #{siteName}
|
||||
AND DELIVERYNAME = #{receiveRequestName}
|
||||
</select>
|
||||
</mapper>
|
Loading…
x
Reference in New Issue
Block a user