This commit is contained in:
郭飞 2025-04-14 08:59:17 +08:00
commit da6844026e
15 changed files with 432 additions and 118 deletions

View File

@ -0,0 +1,17 @@
package com.cim.idm.constants.receive;
import lombok.Getter;
@Getter
public enum IsBatchEnums {
Y("Y", "是批次"),
N("N", "不是批次");
private final String code;
private final String info;
IsBatchEnums(String code, String info) {
this.code = code;
this.info = info;
}
}

View File

@ -2,6 +2,7 @@ package com.cim.idm.controller;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.delivery.DeliveryStateEnums;
import com.cim.idm.constants.delivery.DeliveryTypeEnums;
import com.cim.idm.exception.GlobalException;
import com.cim.idm.model.dto.delivery.DeliveryDelDto;
import com.cim.idm.model.dto.delivery.DeliveryDto;
@ -71,7 +72,7 @@ public class DeliveryController {
if (Objects.nonNull(byKey)) {
deliveryName = byKey.getDeliveryName();
// 到库单找出该单据下的所有的采购单
nameList = deliveryService.getReceiveByDelivery(storeDetailDto)
nameList = deliveryService.getRelByDelivery(storeDetailDto)
.stream().map(MaterialDeliveryReceive::getReceiveRequestName).collect(Collectors.toList());
} else {
// 采购单
@ -85,8 +86,16 @@ public class DeliveryController {
throw new GlobalException("不存在该单据");
}
// 获取采购单明细及批次
String deliveryType = params.get("deliveryType");
if (deliveryType.equals(DeliveryTypeEnums.BATCH.getCode())) {
// 批次
return AjaxResult.me().setSuccess(true).setResultObj(
deliveryService.getStoreDetail(storeDetailDto.getSiteName(), nameList, deliveryName));
deliveryService.getStoreDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
} else {
// 辅材
return AjaxResult.me().setSuccess(true).setResultObj(
deliveryService.getMaterialDetail(storeDetailDto.getDocumentName(), storeDetailDto.getSiteName(), nameList, deliveryName));
}
}
/**

View File

@ -2,13 +2,19 @@ package com.cim.idm.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cim.idm.constants.delivery.DeliveryStateEnums;
import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.dto.delivery.DeliveryEditDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
import com.cim.idm.model.po.MaterialReceiveRequest;
import com.cim.idm.model.MaterialreceiveActDto;
import com.cim.idm.model.dto.TrackOutBoDto;
import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
import com.cim.idm.service.IDeliveryService;
import com.cim.idm.service.IMaterialPackingService;
import com.cim.idm.service.impl.QMSServiceImpl;
import com.cim.idm.service.impl.ToSAPServiceImpl;
import com.cim.idm.utils.AjaxResult;
@ -17,7 +23,6 @@ import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPacking;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey;
import com.cim.idm.wmspackage.materialpacking.management.info.RemoveInfo;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -43,6 +48,9 @@ public class MaterialReceiveActController {
@Resource
private IDeliveryService deliveryService;
@Resource
private IMaterialPackingService mpService;
private static Log log = LogFactory.getLog(MaterialReceiveActController.class);
private EventInfo makeEventInfo;
@ -176,15 +184,6 @@ public class MaterialReceiveActController {
String receiveRequestDetailName = box.getReceiveRequestDetailName();
// 单据
String receiveRequestName = 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();
@ -307,46 +306,27 @@ public class MaterialReceiveActController {
@RequestMapping(value = "/DeleteTrackOutBox", method = RequestMethod.POST)
public AjaxResult DeleteTrackOutBox(@RequestBody JSONObject in ) throws Exception{
// 获取属性
TrackOutBoDto boxs = JSON.toJavaObject(in, TrackOutBoDto.class);
MaterialreceiveActDto box = boxs.getMaterialreceiveAct();
String user = boxs.getUser();
String materialSpecName = box.getMaterialSpecName();
String receiveRequestName = box.getReceiveRequestName();
String sdkid = box.getSdkid();
String phase = box.getPhase();
String siteName = box.getSiteName();
makeEventInfo = new EventInfoUtil().makeEventInfo("DeleteTrackOutBox", user, "DeleteTrackOutBox");
String sql = " SELECT * FROM MATERIALPACKING m WHERE RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME"
+ " AND MATERIALSPECNAME = :MATERIALSPECNAME AND (:PHASE IS NULL OR PHASE = :PHASE) AND (:SDK_ID IS NULL OR SDK_ID = :SDK_ID) AND STOCKSTATE = 'Created'";
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
hashMap.put("RECEIVEREQUESTNAME", receiveRequestName);
hashMap.put("PHASE", phase);
hashMap.put("SDK_ID", sdkid);
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap);
// 获取列表
MaterialPackingListDto dto = new MaterialPackingListDto();
dto.setMaterialSpecName(materialSpecName);
dto.setReceiveRequestName(receiveRequestName);
dto.setPhase(box.getPhase());
dto.setSdkId(box.getSdkid());
List<Map<String, Object>> queryForList = mpService.getMaterialPacking(dto);
for (Map<String, Object> map : queryForList) {
String materialPackingName = map.get("MATERIALPACKINGNAME").toString();
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName);
RemoveInfo removeInfo = new RemoveInfo();
MaterialPackingServiceProxy.getMaterialPackingService().remove(materialPackingKey,makeEventInfo,removeInfo);
// 找到条码明细表的数据先更新订单在删除条码明细
String selectSql = "SELECT * FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
hashMap.put("MATERIALPACKINGNAME", materialPackingName);
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap);
for (Map<String, Object> map2 : queryForList2) {
String qty = map2.get("QTY").toString();
String receiveRequestName2 = map2.get("RECEIVEREQUESTNAME").toString();
String receiveRequestDetailName2 = map2.get("RECEIVEREQUESTDETAILNAME").toString();
hashMap.put("RECEIVEREQUESTNAME", receiveRequestName2);
hashMap.put("RECEIVEREQUESTDETAILNAME", receiveRequestDetailName2);
hashMap.put("QTY", qty);
String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - :QTY "
+ "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME";
IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap);
String deleteSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME AND RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME";
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
}
Map<String, Object> hashMap = new HashMap<> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
String materialPackingName = map.get("MATERIALPACKINGNAME").toString();
mpService.delMaterialPacking(hashMap, materialPackingName, siteName, makeEventInfo);
}
//更新订单数量
return AjaxResult.me().setResultObj(null);
@ -355,36 +335,18 @@ public class MaterialReceiveActController {
@RequestMapping(value = "/DeleteTrackOutThisBox", method = RequestMethod.POST)
public AjaxResult DeleteTrackOutThisBox(@RequestBody JSONObject in ) throws Exception{
// 获取属性
TrackOutBoDto boxs = JSON.toJavaObject(in, TrackOutBoDto.class);
MaterialreceiveActDto box = boxs.getMaterialreceiveAct();
String user = boxs.getUser();
String materialSpecName = box.getMaterialSpecName();
String materialPackingName2 = box.getMaterialPackingName();
String siteName = "SDK";
String materialPackingName = box.getMaterialPackingName();
String siteName = box.getSiteName();
makeEventInfo = new EventInfoUtil().makeEventInfo("DeleteTrackOutBox", user, "DeleteTrackOutBox");
Map<String, Object> hashMap = new HashMap<String,Object> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName2);
RemoveInfo removeInfo = new RemoveInfo();
MaterialPackingServiceProxy.getMaterialPackingService().remove(materialPackingKey,makeEventInfo,removeInfo);
// 找到条码明细表的数据先更新订单在删除条码明细
String selectSql = "SELECT * FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
hashMap.put("MATERIALPACKINGNAME", materialPackingName2);
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap);
for (Map<String, Object> map2 : queryForList2) {
String qty = map2.get("QTY").toString();
String receiveRequestName2 = map2.get("RECEIVEREQUESTNAME").toString();
String receiveRequestDetailName2 = map2.get("RECEIVEREQUESTDETAILNAME").toString();
hashMap.put("RECEIVEREQUESTNAME", receiveRequestName2);
hashMap.put("RECEIVEREQUESTDETAILNAME", receiveRequestDetailName2);
hashMap.put("QTY", qty);
String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - :QTY "
+ "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME";
IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap);
String deleteSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
}
Map<String, Object> hashMap = new HashMap<> ();
hashMap.put("MATERIALSPECNAME", materialSpecName);
mpService.delMaterialPacking(hashMap, materialPackingName, siteName, makeEventInfo);
//更新订单数量
return AjaxResult.me().setResultObj(null);
}
@ -536,21 +498,22 @@ public class MaterialReceiveActController {
@RequestMapping(value = "/commitToERP", method = RequestMethod.POST)
public AjaxResult commitToERP(@RequestBody JSONObject in ) {
TrackOutBoDto trackOutBoDto = JSON.toJavaObject(in, TrackOutBoDto.class);
// 采购单
List<MaterialReceiveRequest> requests = new ArrayList<>();
// 判定单据类型
StoreDetailDto storeDetailDto = new StoreDetailDto();
storeDetailDto.setDocumentName(trackOutBoDto.getReceiveRequestName());
storeDetailDto.setSiteName(trackOutBoDto.getSiteName());
MaterialDelivery materialDelivery = deliveryService.getByKey(storeDetailDto);
if (Objects.nonNull(materialDelivery)) {
// 到货单据
requests = deliveryService.getReceiveByDelivery(storeDetailDto);
} else {
requests.add(deliveryService.getReceiveByKey(storeDetailDto));
}
String user = trackOutBoDto.getUser();
String opCode = trackOutBoDto.getOpCode();
String commitDate = trackOutBoDto.getCommitDate();
String name = trackOutBoDto.getReceiveRequestName();
String site = trackOutBoDto.getSiteName();
// 采购单
List<MaterialReceiveRequest> requests = new ArrayList<>();
// @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();
@ -560,25 +523,33 @@ public class MaterialReceiveActController {
// 调用 QMS
qMSServiceImpl.PreIQCInfoSend(receiveRequestName, "SDK",opCode, erpFactory);
} catch (CustomException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}
String undoid;
String undoId;
try {
undoid = SendERPStockIn(receiveRequestName, siteName, user, opCode,commitDate,opCode);
undoId = SendERPStockIn(receiveRequestName, siteName, user, opCode,commitDate,opCode);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return AjaxResult.me().setSuccess(false).setMessage(e.toString());
}//发送过账
makeEventInfo = new EventInfoUtil().makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK");
}
// 发送过账
EventInfoUtil util = new EventInfoUtil();
makeEventInfo = util.makeEventInfo("NormalStockInForSDK", user, "NormalStockInForSDK");
// 更新入库凭证
SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoid, makeEventInfo);
SDKMaterialPackingServiceImpl.updateUndoIdByReceive(receiveRequestName, undoId, makeEventInfo);
// 更新库存状态
SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoid,commitDate);
SDKMaterialPackingServiceImpl.updateStockState( makeEventInfo, undoid,opCode);
SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoId,commitDate);
SDKMaterialPackingServiceImpl.updateStockState( makeEventInfo, undoId,opCode);
}
// 到货单据更新状态
if (Objects.nonNull(materialDelivery)) {
DeliveryEditDto deliveryEditDto = new DeliveryEditDto();
deliveryEditDto.setDeliveryName(trackOutBoDto.getReceiveRequestName());
deliveryEditDto.setSiteName(trackOutBoDto.getSiteName());
// @TODO 完成状态下更新为 DeliveryStateEnums.FINISH
deliveryEditDto.setDeliveryState(DeliveryStateEnums.DOING.getCode());
deliveryService.editDelivery(deliveryEditDto);
}
return AjaxResult.me().setResultObj(null);
}

View File

@ -34,7 +34,8 @@ public interface DeliveryDao {
* 获取采购订单
*/
List<MaterialReceiveRequestVo> getReceiveList(@Param("dto") PurchaseDto dto,
@Param("typeList") List<String> typeList);
@Param("typeList") List<String> typeList,
@Param("isBatch") String isBatch);
/**
* 获取入库详情
@ -42,6 +43,16 @@ public interface DeliveryDao {
@MapKey("storeDetail")
List<Map<String, Object>> getStoreDetail(@Param("siteName") String siteName,
@Param("nameList") List<String> nameList,
@Param("typeList") List<String> typeList,
@Param("deliveryName") String deliveryName);
/**
* 获取入库详情
*/
@MapKey("materialDetail")
List<Map<String, Object>> getMaterialDetail(@Param("siteName") String siteName,
@Param("nameList") List<String> nameList,
@Param("typeList") List<String> typeList,
@Param("deliveryName") String deliveryName);
/**
@ -49,7 +60,7 @@ public interface DeliveryDao {
*/
@MapKey("storeCharge")
List<Map<String, Object>> getStoreCharge(@Param("siteName") String siteName,
@Param("nameList") List<String> nameList);
@Param("documentName") String documentName);
/**
* 根据 key 获取值
@ -62,9 +73,16 @@ public interface DeliveryDao {
MaterialReceiveRequest getReceiveByKey(@Param("dto") StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
* 根据到库单获取关系
*/
List<MaterialDeliveryReceive> getReceiveByDelivery(@Param("dto") StoreDetailDto storeDetailDto);
List<MaterialDeliveryReceive> getRelByDelivery(@Param("dto") StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
* @param storeDetailDto 到库单
* @return 采购单名称列表
*/
List<MaterialReceiveRequest> getReceiveByDelivery(@Param("dto") StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
@ -93,4 +111,11 @@ public interface DeliveryDao {
* @return 结果
*/
int delDeliveryRel(@Param("dto") DeliveryDelDto deliveryDelDto);
/**
* 更新到货单
* @param deliveryEditDto 请求
* @return 结果
*/
int editDelivery(@Param("dto") DeliveryEditDto deliveryEditDto);
}

View File

@ -0,0 +1,23 @@
package com.cim.idm.dao;
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
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
public interface MaterialPackingDao {
/**
* 散列盘点存储过程调用
* @param dto dto
* @return 物料信息
*/
@MapKey("dto")
List<Map<String, Object>> getMaterialPacking(@Param("dto") MaterialPackingListDto dto);
}

View File

@ -27,4 +27,7 @@ public class PurchaseDto {
// 结束时间
private String toDate;
// 到货单类型
private String deliveryType;
}

View File

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

View File

@ -0,0 +1,18 @@
package com.cim.idm.model.dto.packing;
import lombok.Data;
@Data
public class MaterialPackingListDto {
// 物料号
private String materialSpecName;
// 到货单名称
private String receiveRequestName;
// 阶段
private String phase;
// sdk id
private String sdkId;
}

View File

@ -30,11 +30,9 @@ public class MaterialReceiveRequestVo {
// 组织(CN)
private String orgName;
// 料号
private String materialSpecName;
// private String materialSpecName;
// 品名
private String descCn;
// 创建日期
private String createTime;
// private String descCn;
// 订单状态
private String receiveRequestState;

View File

@ -2,6 +2,7 @@ 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.DeliveryEditDto;
import com.cim.idm.model.dto.delivery.StoreDetailDto;
import com.cim.idm.model.po.delivery.MaterialDelivery;
import com.cim.idm.model.po.delivery.MaterialDeliveryReceive;
@ -13,6 +14,7 @@ import com.cim.idm.model.vo.ReceiveDetailVo;
import com.github.pagehelper.PageInfo;
import java.util.List;
import java.util.Map;
public interface IDeliveryService {
/**
@ -31,12 +33,23 @@ public interface IDeliveryService {
/**
* 获取采购单明细及批次
* @param documentName 单据名称
* @param siteName 组织
* @param nameList 名称
* @param deliveryName 到库单号
* @return 采购订单
*/
ReceiveDetailVo getStoreDetail(String siteName, List<String> nameList, String deliveryName);
ReceiveDetailVo getStoreDetail(String documentName, String siteName, List<String> nameList, String deliveryName);
/**
* 获取辅材明细及批次
* @param documentName 单据名称
* @param siteName 组织
* @param nameList 名称
* @param deliveryName 到库单号
* @return 采购订单
*/
List<Map<String, Object>> getMaterialDetail(String documentName, String siteName, List<String> nameList, String deliveryName);
/**
* 根据 key 获取值
@ -52,12 +65,19 @@ public interface IDeliveryService {
*/
MaterialReceiveRequest getReceiveByKey(StoreDetailDto storeDetailDto);
/**
* 根据到库单获取关系
* @param storeDetailDto 到库单
* @return 采购单名称列表
*/
List<MaterialDeliveryReceive> getRelByDelivery(StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
* @param storeDetailDto 到库单
* @return 采购单名称列表
*/
List<MaterialDeliveryReceive> getReceiveByDelivery(StoreDetailDto storeDetailDto);
List<MaterialReceiveRequest> getReceiveByDelivery(StoreDetailDto storeDetailDto);
/**
* 根据到库单获取采购单名称
@ -79,4 +99,11 @@ public interface IDeliveryService {
* @return 结果
*/
int delDelivery(DeliveryDelDto deliveryDelDto);
/**
* 更新到货单
* @param deliveryEditDto 请求
* @return 结果
*/
int editDelivery(DeliveryEditDto deliveryEditDto);
}

View File

@ -0,0 +1,31 @@
package com.cim.idm.service;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service("mpService")
public interface IMaterialPackingService {
/**
* 散列盘点存储过程调用
* @param dto dto
* @return 物料信息
*/
List<Map<String, Object>> getMaterialPacking(MaterialPackingListDto dto);
/**
* 删除物料批次
* @param hashMap 数据
* @param materialPackingName 包名
* @param siteName 工厂
* @param makeEventInfo 事件
*/
void delMaterialPacking(Map<String, Object> hashMap, String materialPackingName,
String siteName, EventInfo makeEventInfo);
}

View File

@ -2,6 +2,8 @@ package com.cim.idm.service.Impl;
import com.alibaba.fastjson.JSON;
import com.cim.idm.constants.delivery.DeliveryStateEnums;
import com.cim.idm.constants.delivery.DeliveryTypeEnums;
import com.cim.idm.constants.receive.IsBatchEnums;
import com.cim.idm.constants.receive.ReceiveTypeEnums;
import com.cim.idm.dao.DeliveryDao;
import com.cim.idm.exception.GlobalException;
@ -56,21 +58,31 @@ public class DeliveryServiceImpl implements IDeliveryService {
public PageInfo<MaterialReceiveRequestVo> getReceiveList(PageDto dto) {
PageMethod.startPage(dto.getPageNum(), dto.getPageSize());
PurchaseDto purchaseDto = JSON.toJavaObject(dto.getParams(), PurchaseDto.class);
return new PageInfo<>(deliveryDao.getReceiveList(purchaseDto, ReceiveTypeEnums.getPurchase()));
// 区分是辅材还是批次
String isBatch = IsBatchEnums.N.getCode();
if (purchaseDto.getDeliveryType().equals(DeliveryTypeEnums.BATCH.getCode())) {
isBatch = IsBatchEnums.Y.getCode();
}
return new PageInfo<>(deliveryDao.getReceiveList(purchaseDto, ReceiveTypeEnums.getPurchase(), isBatch));
}
@Override
public ReceiveDetailVo getStoreDetail(String siteName, List<String> nameList, String deliveryName) {
public ReceiveDetailVo getStoreDetail(String documentName, String siteName, List<String> nameList, String deliveryName) {
ReceiveDetailVo receiveDetailVo = new ReceiveDetailVo();
// 采购单明细
List<Map<String, Object>> storeDetail = deliveryDao.getStoreDetail(siteName, nameList, deliveryName);
List<Map<String, Object>> storeDetail = deliveryDao.getStoreDetail(siteName, nameList, ReceiveTypeEnums.getPurchase(), deliveryName);
receiveDetailVo.setStoreDetail(storeDetail);
// 批次
List<Map<String, Object>> storeCharge = deliveryDao.getStoreCharge(siteName, nameList);
List<Map<String, Object>> storeCharge = deliveryDao.getStoreCharge(siteName, documentName);
receiveDetailVo.setStoreCharge(storeCharge);
return receiveDetailVo;
}
@Override
public List<Map<String, Object>> getMaterialDetail(String documentName, String siteName, List<String> nameList, String deliveryName) {
return deliveryDao.getMaterialDetail(siteName, nameList, ReceiveTypeEnums.getPurchase(), deliveryName);
}
@Override
public MaterialDelivery getByKey(StoreDetailDto storeDetailDto) {
return deliveryDao.getByKey(storeDetailDto);
@ -82,7 +94,12 @@ public class DeliveryServiceImpl implements IDeliveryService {
}
@Override
public List<MaterialDeliveryReceive> getReceiveByDelivery(StoreDetailDto storeDetailDto) {
public List<MaterialDeliveryReceive> getRelByDelivery(StoreDetailDto storeDetailDto) {
return deliveryDao.getRelByDelivery(storeDetailDto);
}
@Override
public List<MaterialReceiveRequest> getReceiveByDelivery(StoreDetailDto storeDetailDto) {
return deliveryDao.getReceiveByDelivery(storeDetailDto);
}
@ -108,4 +125,9 @@ public class DeliveryServiceImpl implements IDeliveryService {
// 移除到货单
return deliveryDao.delDelivery(deliveryDelDto);
}
@Override
public int editDelivery(DeliveryEditDto deliveryEditDto) {
return deliveryDao.editDelivery(deliveryEditDto);
}
}

View File

@ -0,0 +1,51 @@
package com.cim.idm.service.Impl;
import com.cim.idm.dao.MaterialPackingDao;
import com.cim.idm.framework.IDMFrameServiceProxy;
import com.cim.idm.framework.data.EventInfo;
import com.cim.idm.model.dto.packing.MaterialPackingListDto;
import com.cim.idm.service.IMaterialPackingService;
import com.cim.idm.wmspackage.materialpacking.MaterialPackingServiceProxy;
import com.cim.idm.wmspackage.materialpacking.management.data.MaterialPackingKey;
import com.cim.idm.wmspackage.materialpacking.management.info.RemoveInfo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service
public class MaterialPackingServiceServiceImpl implements IMaterialPackingService {
@Resource
private MaterialPackingDao materialPackingDao;
@Override
public List<Map<String, Object>> getMaterialPacking(MaterialPackingListDto dto) {
return materialPackingDao.getMaterialPacking(dto);
}
@Override
public void delMaterialPacking(Map<String, Object> hashMap, String materialPackingName, String siteName, EventInfo makeEventInfo) {
MaterialPackingKey materialPackingKey = new MaterialPackingKey(siteName, materialPackingName);
RemoveInfo removeInfo = new RemoveInfo();
MaterialPackingServiceProxy.getMaterialPackingService().remove(materialPackingKey, makeEventInfo, removeInfo);
// 找到条码明细表的数据先更新订单在删除条码明细
String selectSql = "SELECT * FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
hashMap.put("MATERIALPACKINGNAME", materialPackingName);
List<Map<String, Object>> queryForList2 = IDMFrameServiceProxy.getSqlTemplate().queryForList(selectSql, hashMap);
for (Map<String, Object> item : queryForList2) {
hashMap.put("RECEIVEREQUESTNAME", item.get("RECEIVEREQUESTNAME").toString());
hashMap.put("RECEIVEREQUESTDETAILNAME", item.get("RECEIVEREQUESTDETAILNAME").toString());
hashMap.put("QTY", item.get("QTY").toString());
String updateSql = "UPDATE MATERIALRECEIVEREQUESTDETAIL T SET T.RECEIVEDQUANTITY = T.RECEIVEDQUANTITY - :QTY "
+ "WHERE T.RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME AND T.RECEIVEREQUESTDETAILNAME = :RECEIVEREQUESTDETAILNAME";
IDMFrameServiceProxy.getSqlTemplate().update(updateSql, hashMap);
String deleteSql = "DELETE FROM MATERIALPACKINGSUB m WHERE m.MATERIALPACKINGNAME = :MATERIALPACKINGNAME AND RECEIVEREQUESTNAME = :RECEIVEREQUESTNAME";
IDMFrameServiceProxy.getSqlTemplate().update(deleteSql, hashMap);
}
}
}

View File

@ -28,9 +28,8 @@
<result property="supplierName" column="SUPPLIERNAME" />
<result property="erpFactory" column="ERPFACTORY" />
<result property="orgName" column="ORGNAME" />
<result property="materialSpecName" column="MATERIALSPECNAME" />
<result property="descCn" column="DESC_CN" />
<result property="createTime" column="CREATETIME" />
<!-- <result property="materialSpecName" column="MATERIALSPECNAME" />-->
<!-- <result property="descCn" column="DESC_CN" />-->
<result property="receiveRequestState" column="RECEIVEREQUESTSTATE" />
<result property="oemSiteName" column="OEMSITENAME" />
<result property="oemSiteInCharge" column="OEMSITEINCHARGE" />
@ -42,7 +41,7 @@
<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,
STOCKORGNO ERPFACTORY, o.ORGNAME,
CASE WHEN m.RECEIVEREQUESTSTATE = 'Completed' THEN '完成' ELSE '未完成' END RECEIVEREQUESTSTATE,
m.OEMSITENAME, m.OEMSITEINCHARGE, m.LASTEVENTTIMEKEY, m.SYSTEMTYPE, m.PURCHASEORDERGROUP
FROM MATERIALRECEIVEREQUEST m
@ -51,6 +50,7 @@
LEFT JOIN MATERIALSPEC ms ON d.MATERIALSPECNAME = ms.MATERIALSPECNAME
LEFT JOIN ORG o ON STOCKORGNO = o.ORGNO
WHERE m.SITENAME = #{dto.siteName}
ANd ms.is_batch = #{isBatch}
AND m.RECEIVEREQUESTTYPE IN
<foreach item="type" index="index" collection="typeList" open="(" separator="," close=")">
#{type}
@ -164,7 +164,78 @@
#{name}
</foreach>
AND m.SITENAME = #{siteName}
AND m2.RECEIVEREQUESTTYPE IN ( 'ZK4A', '45', '4C', 'Z001', 'Z002', 'Z003', 'Z004' )
AND m2.RECEIVEREQUESTTYPE IN
<foreach item="type" index="index" collection="typeList" open="(" separator="," close=")">
#{type}
</foreach>
</select>
<!-- GetNoBatchPOStockIn 00001 -->
<select id="getMaterialDetail" resultType="map">
WITH MAIN AS (
SELECT m.MATERIALSPECNAME,
SUM( m.REQUESTQUANTITY ) REQUESTQUANTITY,
SUM( m.RECEIVEDQUANTITY ) RECEIVEDQUANTITY,
SUM( m.REQUESTQUANTITY - m.RECEIVEDQUANTITY) AS ThisAcceptNumber
FROM MATERIALRECEIVEREQUESTDETAIL m
WHERE m.RECEIVEREQUESTNAME in
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
#{name}
</foreach>
GROUP BY m.MATERIALSPECNAME
)
<if test="deliveryName != null">
,DELIVERY AS (
SELECT sum(md.DELIVERYNUM) DELIVERYNUM, md.MATERIALSPECNAME MATERIALSPECNAME
FROM MATERIALDELIVERYRECEIVE md
WHERE md.DELIVERYNAME = #{deliveryName}
and md.RECEIVEREQUESTNAME IN
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
#{name}
</foreach>
GROUP BY md.MATERIALSPECNAME
)
</if>
SELECT distinct MAIN.RECEIVEDQUANTITY, MAIN.ThisAcceptNumber,
<if test="deliveryName != null">
DELIVERY.DELIVERYNUM REQUESTQUANTITY,
</if>
<if test="deliveryName == null">
MAIN.REQUESTQUANTITY REQUESTQUANTITY,
</if>
m3.DESCRIPTION, be.DESCRIPTION AS ERPLOCATION2, m.ERPLOCATION, o.ORGNAME AS ERPFACTORY2,
m2.STOCKORGNO AS ERPFACTORY, sss.DESCRIPTION AS LOCATIONNAME2, m.LOCATIONNAME, m2.SUPPLIERNO,
ss.SPECNAME, m.PHASE, m3.DESC_CN, m.MATERIALSPECNAME,
m.MATERIALUNIT, MM.FNAME MATERIALUNITDESC, m.SDK_ID, m.PHASE, m.SITENAME,
DECODE(m3.IS_BATCH, 'Y', '是' , '否') IS_BATCH, DECODE(m3.IQCFLAG, 'Y', '是' ,'否') IQCFLAG,
CASE WHEN m3.EXPIRATION_RULES = '0' THEN '不遵守有效期管理'
WHEN m3.EXPIRATION_RULES = '1' THEN '遵守有效期管理'
ELSE '未定义'
END AS REPLACED_VALUE
FROM MAIN
LEFT JOIN MATERIALRECEIVEREQUESTDETAIL m ON MAIN.MATERIALSPECNAME = m.MATERIALSPECNAME
LEFT JOIN MATERIALRECEIVEREQUEST m2 ON m.RECEIVEREQUESTNAME = m2.RECEIVEREQUESTNAME
LEFT JOIN MATERIALSPEC m3 ON m.MATERIALSPECNAME = m3.MATERIALSPECNAME
LEFT JOIN SDK_SPEC ss ON m.SDK_ID = ss.SDK_ID
LEFT JOIN MATERIALUNIT MM ON MM.FNUMBER = m.MATERIALUNIT
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
<if test="deliveryName != null">
INNER JOIN DELIVERY ON DELIVERY.MATERIALSPECNAME = m.MATERIALSPECNAME
</if>
WHERE m.RECEIVEREQUESTNAME in
<foreach item="name" index="index" collection="nameList" open="(" separator="," close=")">
#{name}
</foreach>
AND m.SITENAME = #{siteName}
AND (m.REQUESTQUANTITY - m.RECEIVEDQUANTITY) > 0
AND m2.RECEIVEREQUESTTYPE IN
<foreach item="type" index="index" collection="typeList" open="(" separator="," close=")">
#{type}
</foreach>
AND (m2.RETURNFLAG IS NULL OR m2.RETURNFLAG != 'Y')
AND (m3.IS_BATCH IS NULL OR m3.IS_BATCH != 'Y')
</select>
<!-- GetPackingRow xh002 -->
@ -183,10 +254,7 @@
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.RECEIVEREQUESTNAME = #{documentName}
AND A.STOCKSTATE = 'Created'
ORDER BY A.MATERIALSPECNAME, A.SDK_ID, A.PHASE
) TTT
@ -210,12 +278,24 @@
AND RECEIVEREQUESTNAME = #{dto.documentName}
</select>
<select id="getReceiveByDelivery" resultType="com.cim.idm.model.po.delivery.MaterialDeliveryReceive">
<select id="getRelByDelivery" resultType="com.cim.idm.model.po.delivery.MaterialDeliveryReceive">
SELECT md.DELIVERYNAME, md.DELIVERYNUM, md.RECEIVEREQUESTNAME, md.MATERIALSPECNAME
FROM MATERIALDELIVERYRECEIVE md
WHERE md.DELIVERYNAME = #{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, MATERIALDELIVERYRECEIVE md
WHERE m.SITENAME = #{dto.siteName}
AND md.DELIVERYNAME = #{dto.documentName}
AND m.RECEIVEREQUESTNAME = md.RECEIVEREQUESTNAME
</select>
<select id="getReceiveDetail" resultType="com.cim.idm.model.vo.DeliveryReceiveDetailVo">
SELECT receiveRequestName, materialSpecName, requestQuantity, requestQuantity as deliveryNum
FROM MATERIALRECEIVEREQUESTDETAIL
@ -252,4 +332,9 @@
delete from MATERIALDELIVERYRECEIVE
where DELIVERYNAME = #{dto.deliveryName}
</delete>
<delete id="editDelivery">
UPDATE MATERIALDELIVERY SET DELIVERYSTATE = #{dto.deliveryState}
WHERE SITENAME = #{dto.siteName} AND DELIVERYNAME = #{dto.deliveryName}
</delete>
</mapper>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cim.idm.dao.MaterialPackingDao">
<select id="getMaterialPacking" resultType="map">
SELECT * FROM MATERIALPACKING m
WHERE MATERIALSPECNAME = #{dto.materialSpecName}
<if test="dto.phase != null and dto.phase != ''">
AND PHASE = #{dto.phase}
</if>
<if test="dto.receiveRequestName != null and dto.receiveRequestName != ''">
AND RECEIVEREQUESTNAME = #{dto.receiveRequestName}
</if>
<if test="dto.sdkId != null and dto.sdkId != ''">
AND SDK_ID = #{dto.sdkId}
</if>
AND STOCKSTATE = 'Created'
</select>
</mapper>