手持终端提交单据校验库存/物资字典对照问题

dev2.0
anthonywj 2 years ago
parent 490df6ea57
commit 84feefd4c8

@ -128,9 +128,9 @@ public class UdiContrastController {
@Log(title = "耗材字典", businessType = BusinessType.UPDATE) @Log(title = "耗材字典", businessType = BusinessType.UPDATE)
public BaseResponse changeVersion(@RequestBody UdiCombineRequest udiCombineRequest) { public BaseResponse changeVersion(@RequestBody UdiCombineRequest udiCombineRequest) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiCombineRequest.getRelId()); UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiCombineRequest.getRelId());
if (udiContrastService.isExit(udiCombineRequest.getKeys().get(0), udiRelevanceEntity.getMainId(), null)) { // if (udiContrastService.isExit(udiCombineRequest.getKeys().get(0), udiRelevanceEntity.getMainId(), null)) {
return ResultVOUtils.error(500, "已存在相同的对照关系,无法切换版本"); // return ResultVOUtils.error(500, "已存在相同的对照关系,无法切换版本");
} // }
List<UdiProductEntity> udiInfoEntities = udiDlHttpClient.getUdiByUuid(udiCombineRequest.getKeys().get(0)); List<UdiProductEntity> udiInfoEntities = udiDlHttpClient.getUdiByUuid(udiCombineRequest.getKeys().get(0));
udiProductService.deleteByUuid(udiRelevanceEntity.getUuid()); udiProductService.deleteByUuid(udiRelevanceEntity.getUuid());

@ -20,6 +20,8 @@ public interface UdiProductDao {
List<UdiProductEntity> findByUuids(@Param("uuid") String uuid); List<UdiProductEntity> findByUuids(@Param("uuid") String uuid);
List<UdiProductEntity> findByOriginUuid(@Param("originUuid") String originUuid);
UdiProductEntity findById(@Param("id") String id); UdiProductEntity findById(@Param("id") String id);
boolean insertUdiInfo(UdiProductEntity udiProductEntity); boolean insertUdiInfo(UdiProductEntity udiProductEntity);

@ -100,5 +100,7 @@ public class FilterUdiRelRequest extends ListPageRequest {
private String remark; private String remark;
private String key; private String key;
private String deviceRecordKey;
} }

@ -48,14 +48,21 @@ public class UdiContrastService {
public boolean isExit(String originUuid, String mainId, String thirdSys) { public boolean isExit(String originUuid, String mainId, String thirdSys) {
if (StrUtil.isNotEmpty(originUuid) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { String deviceRecordKey = null;
List<UdiRelevanceResponse> udiRelevanceEntities = findByUnion(originUuid, mainId); if (StrUtil.isNotEmpty(originUuid)) {
UdiProductEntity udiProductEntity = udiProductService.findOneByOriginUuid(originUuid);
if (udiProductEntity != null)
deviceRecordKey = udiProductEntity.getDeviceRecordKey();
}
if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) {
List<UdiRelevanceResponse> udiRelevanceEntities = findDrkByUnion(deviceRecordKey, mainId);
if (CollUtil.isNotEmpty(udiRelevanceEntities)) { if (CollUtil.isNotEmpty(udiRelevanceEntities)) {
return true; return true;
} else } else
return false; return false;
} else if (StrUtil.isNotEmpty(originUuid) && StrUtil.isEmpty(mainId)) { } else if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isEmpty(mainId)) {
List<UdiRelevanceResponse> udiRelevanceEntities = findByOriginUuid(originUuid); List<UdiRelevanceResponse> udiRelevanceEntities = findByDeviceRecordKey(deviceRecordKey);
if (CollUtil.isNotEmpty(udiRelevanceEntities)) { if (CollUtil.isNotEmpty(udiRelevanceEntities)) {
for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) {
if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) { if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) {
@ -74,8 +81,8 @@ public class UdiContrastService {
} }
} }
return false; return false;
} else if (StrUtil.isNotBlank(originUuid) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { } else if (StrUtil.isNotBlank(deviceRecordKey) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) {
List<UdiRelevanceResponse> udiRelevanceEntities = findByUnion2(originUuid, mainId, thirdSys); List<UdiRelevanceResponse> udiRelevanceEntities = findByUnion2(deviceRecordKey, mainId, thirdSys);
if (CollUtil.isNotEmpty(udiRelevanceEntities)) { if (CollUtil.isNotEmpty(udiRelevanceEntities)) {
return true; return true;
} else } else
@ -84,10 +91,10 @@ public class UdiContrastService {
return false; return false;
} }
private List<UdiRelevanceResponse> findByUnion2(String originUuid, String mainId, String thirdSys) { private List<UdiRelevanceResponse> findByUnion2(String deviceRecordKey, String mainId, String thirdSys) {
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setMainId(mainId);
filterUdiRelRequest.setOriginUuid(originUuid); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey);
filterUdiRelRequest.setThirdSys(thirdSys); filterUdiRelRequest.setThirdSys(thirdSys);
List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest);
return udiRelevanceEntities; return udiRelevanceEntities;
@ -101,6 +108,14 @@ public class UdiContrastService {
return udiRelevanceEntities; return udiRelevanceEntities;
} }
public List<UdiRelevanceResponse> findDrkByUnion(String deviceRecordKey, String mainId) {
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setMainId(mainId);
filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey);
List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest);
return udiRelevanceEntities;
}
public List<UdiRelevanceResponse> findByUuid(String uuid) { public List<UdiRelevanceResponse> findByUuid(String uuid) {
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setUuid(uuid); filterUdiRelRequest.setUuid(uuid);
@ -124,6 +139,13 @@ public class UdiContrastService {
return udiRelevanceEntities; return udiRelevanceEntities;
} }
public List<UdiRelevanceResponse> findByDeviceRecordKey(String deviceRecordKey) {
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey);
List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest);
return udiRelevanceEntities;
}
public List<UdiRelevanceResponse> findByMainId(String mainId) { public List<UdiRelevanceResponse> findByMainId(String mainId) {
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setMainId(mainId);

@ -29,6 +29,10 @@ public interface UdiProductService {
UdiProductEntity findByUuid(String uuid); UdiProductEntity findByUuid(String uuid);
List<UdiProductEntity> findByOriginUuid(String originUuid);
UdiProductEntity findOneByOriginUuid(String originUuid);
List<UdiProductEntity> findByUuids(String uuid); List<UdiProductEntity> findByUuids(String uuid);
boolean insertUdiInfo(UdiProductEntity udiProductEntity); boolean insertUdiInfo(UdiProductEntity udiProductEntity);

@ -102,6 +102,20 @@ public class UdiProductServiceImpl implements UdiProductService {
return udiProductDao.findByUuid(uuid); return udiProductDao.findByUuid(uuid);
} }
@Override
public List<UdiProductEntity> findByOriginUuid(String originUuid) {
return udiProductDao.findByOriginUuid(originUuid);
}
@Override
public UdiProductEntity findOneByOriginUuid(String originUuid) {
List<UdiProductEntity> udiProductEntities = findByOriginUuid(originUuid);
if (CollUtil.isNotEmpty(udiProductEntities))
return udiProductEntities.get(0);
return null;
}
@Override @Override
public List<UdiProductEntity> findByUuids(String uuid) { public List<UdiProductEntity> findByUuids(String uuid) {
return udiProductDao.findByUuids(uuid); return udiProductDao.findByUuids(uuid);

@ -10,12 +10,15 @@ import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.Constant; import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.inout.IoOrderDetailCodeDao; import com.glxp.api.dao.inout.IoOrderDetailCodeDao;
import com.glxp.api.entity.auth.InvWarehouseEntity;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.BasicCorpEntity;
import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.basic.UdiRlSupEntity; import com.glxp.api.entity.basic.UdiRlSupEntity;
import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.entity.system.SystemParamConfigEntity;
import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest; import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest;
@ -23,10 +26,14 @@ import com.glxp.api.entity.inout.PdaCodeEntity;
import com.glxp.api.req.inout.PdaPostOrderRequest; import com.glxp.api.req.inout.PdaPostOrderRequest;
import com.glxp.api.req.inout.PostOrderRequest; import com.glxp.api.req.inout.PostOrderRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.inv.InvPlaceDetailResponse;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.BasicCorpService; import com.glxp.api.service.basic.BasicCorpService;
import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.basic.UdiRlSupService; import com.glxp.api.service.basic.UdiRlSupService;
import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.service.inv.InvProductDetailService; import com.glxp.api.service.inv.InvProductDetailService;
import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.util.*; import com.glxp.api.util.*;
@ -74,6 +81,8 @@ public class IoAddInoutService {
IoOrderDetailBizService orderDetailBizService; IoOrderDetailBizService orderDetailBizService;
@Resource @Resource
private IoOrderDetailCodeDao orderDetailCodeDao; private IoOrderDetailCodeDao orderDetailCodeDao;
@Resource
InvWarehouseService invWarehouseService;
//新增扫码单据处理 //新增扫码单据处理
public void dealProcess(IoOrderEntity orderEntity) { public void dealProcess(IoOrderEntity orderEntity) {
@ -426,6 +435,11 @@ public class IoAddInoutService {
} }
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction()); BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(orderEntity.getAction());
BaseResponse baseResponse = checkInv(bussinessTypeEntity, pdaPostOrderRequest.getOrderDetailCodeEntities(), orderEntity, pdaPostOrderRequest.getCodeTempEntities());
if (baseResponse != null)
return baseResponse;
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd"));
orderEntity.setBillNo(orderNo); orderEntity.setBillNo(orderNo);
orderService.insertOrder(orderEntity); orderService.insertOrder(orderEntity);
@ -800,4 +814,68 @@ public class IoAddInoutService {
} }
return null; return null;
} }
@Resource
InvPreProductDetailService invPreProductDetailService;
@Resource
InvPreinProductDetailService invPreinProductDetailService;
/**
*
*/
public BaseResponse checkInv(BasicBussinessTypeEntity bussinessTypeEntity, List<IoOrderDetailCodeEntity> orderDetailCodeEntities, IoOrderEntity orderEntity, List<IoCodeTempEntity> codeTempEntities) {
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN);
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode());
} else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode());
}
if (count <= 0) {
return ResultVOUtils.error(500, "UDI码" + codeTempEntity.getCode() + "预验收库存数量不足!");
}
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE);
for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) {
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invPreProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
count = invPreProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, invWarehouseEntity.getCode(), orderEntity.getPreCurSpaceCode());
}
if (count <= 0) {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
}
}
} else { //校验普通库存
if (bussinessTypeEntity.isVailInv() && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
for (IoOrderDetailCodeEntity orderDetailCodeEntity : orderDetailCodeEntities) {
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode(), orderEntity.getCurSpaceCode());
}
if (count <= 0) {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
}
}
}
}
return null;
}
} }

@ -133,8 +133,7 @@
</select> </select>
<select id="selectPackLevel" parameterType="java.lang.String" <select id="selectPackLevel" parameterType="java.lang.String"
resultType="java.lang.String"> resultType="java.lang.String">
select select basic_products.packLevel
basic_products.packLevel
FROM basic_udirel FROM basic_udirel
inner JOIN basic_products inner JOIN basic_products
ON basic_products.uuid = basic_udirel.uuid ON basic_products.uuid = basic_udirel.uuid
@ -348,7 +347,6 @@
GROUP BY basic_udirel.id GROUP BY basic_udirel.id
</when> </when>
</choose> </choose>
</select> </select>
<select id="filterUdiGp" parameterType="com.glxp.api.req.basic.FilterUdiRelRequest" <select id="filterUdiGp" parameterType="com.glxp.api.req.basic.FilterUdiRelRequest"
@ -971,6 +969,12 @@
<if test="id != '' and id != null"> <if test="id != '' and id != null">
AND basic_udirel.id = #{id} AND basic_udirel.id = #{id}
</if> </if>
<if test="deviceRecordKey != '' and deviceRecordKey != null">
AND basic_products.deviceRecordKey = #{deviceRecordKey}
</if>
<if test="nameCode != '' and nameCode != null">
AND basic_products.nameCode = #{nameCode}
</if>
<if test="thirdSys != '' and thirdSys != null"> <if test="thirdSys != '' and thirdSys != null">
<if test="thirdSys == 'thirdId'"> <if test="thirdSys == 'thirdId'">
AND basic_udirel.thirdId = #{mainId} AND basic_udirel.thirdId = #{mainId}

Loading…
Cancel
Save