药品扫码相关修改

workplace
anthonywj 11 months ago
parent e645d38789
commit 7e021afe6e

@ -916,14 +916,6 @@ public class IoCodeTempController extends BaseController {
udiEntity.setSerialNo(addOrderRequest.getSerialNo());
}
if (StrUtil.isNotEmpty(udiEntity.getSerialNo()) && udiEntity.getSerialNo().length() > 20) {
return ResultVOUtils.error(500, "无效条码!序列号超出最大范围");
}
if (StrUtil.isNotEmpty(udiEntity.getBatchNo()) && udiEntity.getBatchNo().length() > 20) {
return ResultVOUtils.error(500, "无效条码!批次号超出最大范围");
}
//批次号校验
//判断此产品是否开启允许无批次号
@ -931,126 +923,10 @@ public class IoCodeTempController extends BaseController {
if (udiInfoEntity == null) {
return ResultVOUtils.error(500, "耗材字典不存在此产品!");
}
if (!IntUtil.value(udiInfoEntity.getAllowNoBatch())) {
if (StrUtil.isEmpty(udiEntity.getSerialNo()) && StrUtil.isEmpty(udiEntity.getBatchNo())) {
return ResultVOUtils.error(500, "序列号与批次号不能同时为空!");
}
}
//是否校验产品采购类型 1校验2.无需校验
if (IntUtil.value(bussinessTypeEntity.getVailProductAttributes()) == 1) {
Integer purType = IntUtil.value(udiInfoEntity.getPurType()); //1普通入账产品2.预验收产品。3寄售产品
int actionType = IntUtil.value(bussinessTypeEntity.getActionType()); //1带票正常2.预验收。3寄售
if (purType != actionType) {
//包装友好提示
String msg = "";
switch (actionType) {
case 1:
msg = "普通入账产品";
break;
case 2:
msg = "预验收产品";
break;
case 3:
msg = "寄售产品";
break;
}
String msg2 = "";
switch (purType) {
case 1:
msg2 = "普通入账产品";
break;
case 2:
msg2 = "预验收产品";
break;
case 3:
msg2 = "寄售产品";
break;
}
return ResultVOUtils.error(500, "单据只允许录入" + msg + ",当前录入产品为" + msg2 + ",请检查后重试!");
}
// if (bussinessTypeEntity.getRequireScanCode() == 1) {
// if (udiInfoEntity.getRequireScanCode() != 1){
// return ResultVOUtils.error(500, "单据只允许录入需要扫码耗材" + ",请检查后重试!");
// }
// }else if (bussinessTypeEntity.getRequireScanCode() == 0){
// if (udiInfoEntity.getRequireScanCode() != 0){
// return ResultVOUtils.error(500, "单据只允许录入不需要扫码耗材" + ",请检查后重试!");
// }
// }
if (bussinessTypeEntity != null && udiInfoEntity != null) {
//是否校验耗材材质 1高值耗材2.普通耗材
if (IntUtil.value(bussinessTypeEntity.getVailHcType()) == 1) {
}
if (IntUtil.value(udiInfoEntity.getHcType()) != 1) {
return ResultVOUtils.error(500, "单据只允许录入高值耗材" + ",请检查后重试!");
}
} else if (IntUtil.value(bussinessTypeEntity.getVailHcType()) == 2) {
if (IntUtil.value(udiInfoEntity.getHcType()) != 2) {
return ResultVOUtils.error(500, "单据只允许录入普通耗材" + ",请检查后重试!");
}
}
//是否开启校验扫码 0:不校验1:只允许录入扫码产品2:只允许录入不扫码产品
if (IntUtil.value(bussinessTypeEntity.getCodeCheck() == 1)) {
if (IntUtil.value(udiInfoEntity.getRequireScanCode()) != 1) {
return ResultVOUtils.error(500, "单据只允许录入需要扫码产品" + ",请检查后重试!");
}
} else if (IntUtil.value(bussinessTypeEntity.getCodeCheck() == 2)) {
if (IntUtil.value(udiInfoEntity.getRequireScanCode()) != 0) {
return ResultVOUtils.error(500, "单据只允许录入不需要扫码产品" + ",请检查后重试!");
}
}
}
String orderId = addOrderRequest.getBillNo();
//三期校验
if (bussinessTypeEntity.isCodeFillCheck()) {
BaseResponse checkOriginCodeRes = checkOriginCode(udiEntity);
if (checkOriginCodeRes != null) {
IoCodeLostEntity codeLostEntity = codeLostService.findByCode(code);
if (codeLostEntity == null) {
if (StrUtil.isNotEmpty(orderId)) {
List<IoCodeTempEntity> ioCodeEnttities = codeTempService.findByOrderId(orderId);
IoCodeTempEntity ioCodeEnttity = isExitLocal(code, ioCodeEnttities);
if (ioCodeEnttity == null) {
return checkOriginCodeRes;
}
} else
return checkOriginCodeRes;
} else {
udiEntity.setBatchNo(codeLostEntity.getBatchNo());
udiEntity.setExpireDate(codeLostEntity.getExpireDate());
udiEntity.setProduceDate(codeLostEntity.getProduceDate());
}
if (StrUtil.isNotEmpty(orderId)) {
List<IoCodeTempEntity> ioCodeEnttities = codeTempService.findByOrderId(orderId);
IoCodeTempEntity ioCodeEnttity = isExitLocal(code, ioCodeEnttities);
if (ioCodeEnttity == null) {
return checkOriginCodeRes;
}
} else
return checkOriginCodeRes;
}
} else {
BaseResponse checkOriginCodeRes = checkOriginCode(udiEntity);
if (checkOriginCodeRes != null) {
IoCodeLostEntity codeLostEntity = codeLostService.findByCode(code);
if (codeLostEntity != null) {
udiEntity.setBatchNo(codeLostEntity.getBatchNo());
udiEntity.setExpireDate(codeLostEntity.getExpireDate());
udiEntity.setProduceDate(codeLostEntity.getProduceDate());
checkOriginCodeRes = checkOriginCode(udiEntity);
if (checkOriginCodeRes != null)
return checkOriginCodeRes;
} else
return checkOriginCodeRes;
}
}
//过期提醒:
if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) {
@ -1086,7 +962,6 @@ public class IoCodeTempController extends BaseController {
if (resultTime > 0) {
long time = resultTime / (60 * 60 * 1000);
// long time = resultTime / (24 * 60 * 60 * 1000);
if (resultTime < recentTieme) {
return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "时,是否确定继续添加?");
}
@ -1111,53 +986,10 @@ public class IoCodeTempController extends BaseController {
}
//校验预验收是否已存在
if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) {
int count = invPreinProductDetailService.findCountByCode(code);
if (count > 0) {
return ResultVOUtils.error(500, "预验收库存已存在此UDI码,请检查后重试!");
}
}
}
//校验预验收库存是否已存在
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) {
if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack()
String orderIds = addOrderRequest.getCheckPreInOrders();
if (StrUtil.isNotEmpty(orderIds)) {
String[] orderIdArray = orderIds.split(",");
List<String> orderList = CollUtil.toList(orderIdArray);
int count = codeService.findByOrderIdsCount(orderList, code);
if (count <= 0) {
return ResultVOUtils.error(500, "非预验收单产品或预验收库存数量不足!");
}
if (StrUtil.isNotEmpty(orderId)) {//非首次添加
if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code);
if (codeTempEntity != null) {
if (count < (codeTempEntity.getMyCount() + 1)) {
return ResultVOUtils.error(500, "超出预验收库存数量");
}
}
} else {
if (count < 1) {
return ResultVOUtils.error(500, "预验收库存数量不足");
}
}
}
} else {
return ResultVOUtils.error(500, "未选择预验收入库单,请先选择预验收入库单!");
}
}
}
if (addOrderRequest.getFromCorp() != null || StrUtil.isNotEmpty(addOrderRequest.getSickerAdNum())) {
if (addOrderRequest.getFromCorp() == null || StrUtil.isNotEmpty(addOrderRequest.getSickerAdNum())) {
String fromCorp = ioAddInoutService.updateCorp(bussinessTypeEntity, addOrderRequest.getFromCorp(), addOrderRequest.getSickerAdNum());
addOrderRequest.setFromCorp(fromCorp);
}
//先生成扫码单据
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
String inBatch = "";
@ -1175,7 +1007,7 @@ public class IoCodeTempController extends BaseController {
exitLocalEntity = isExitLocal(code, codeEnttitys);
if (exitLocalEntity != null) {
if (StrUtil.isEmpty(exitLocalEntity.getSupId()) || exitLocalEntity.getRelId() == null) {
return ResultVOUtils.error(500, "当前UDI码已存在,且存在异常未处理!");
return ResultVOUtils.error(500, "当前药品追溯码已存在,且存在异常未处理!");
}
udiRelevanceResponses = udiRelevanceService.selectGroupByNameCode(exitLocalEntity.getNameCode(), null);
@ -1190,7 +1022,6 @@ public class IoCodeTempController extends BaseController {
if (!StringUtils.isBlank(exitLocalEntity.getSerialNo())) {
return ResultVOUtils.error(500, "重复扫码!");
}
// IoCodeTempEntity codeTempEntity = isExitToatal(code, codeEnttitys);
//校验库存
BaseResponse invRes = null;
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
@ -1278,6 +1109,7 @@ public class IoCodeTempController extends BaseController {
codeEnttity.setPreSpaceCode(addOrderRequest.getPreCurSpaceCode());
codeEnttity.setPreInSpaceCode(addOrderRequest.getCheckPreInSpaceCode());
codeEnttity.setRelId(addOrderRequest.getRelId());
codeEnttity.setProductType(2);
codeEnttity.setCount(1);
String unitFk = null;
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
@ -1350,6 +1182,7 @@ public class IoCodeTempController extends BaseController {
orderEntity.setBusType(bussinessTypeEntity.getBusType());
orderEntity.setSickerAdNum(addOrderRequest.getSickerAdNum());
orderEntity.setWorkPlaceCode(addOrderRequest.getWorkPlaceCode());
orderEntity.setProductType(2);
orderService.insertOrder(orderEntity);
}
@ -1436,7 +1269,7 @@ public class IoCodeTempController extends BaseController {
} else
codeTempService.insert(codeEnttity);
} else if (bussinessTypeEntity.getCheckWebNew() == 2 && bussinessTypeEntity.isCheckEnable()) {
String errMsg = ioCheckInoutService.checkNoPiCode(codeEnttity);
String errMsg = ioCheckInoutService.checkDrugNoPiCode(codeEnttity);
if (errMsg != null) {
return ResultVOUtils.error(500, errMsg);
} else

@ -176,6 +176,11 @@ public class IoCodeTempEntity {
private BigDecimal price;
@TableField(exist = false)
private boolean checkSuccess; //临时字段校验是否成功
/**
* 1:;2:
*/
@TableField(value = "productType")
private Integer productType;
public int getMyCount() {
if (count == null)

@ -235,4 +235,12 @@ public class IoOrderDetailBizEntity {
*/
@TableField(value = "destinyId")
private String destinyId;
/**
* 1:;2:
*/
@TableField(value = "productType")
private Integer productType;
}

@ -215,6 +215,11 @@ public class IoOrderDetailCodeEntity {
@TableField(value = "updateTime")
private Date updateTime;
/**
* 1:;2:
*/
@TableField(value = "productType")
private Integer productType;
}

@ -206,4 +206,12 @@ public class IoOrderDetailResultEntity {
private String deptCode;
@TableField(exist = false)
private String invCode;
/**
* 1:;2:
*/
@TableField(value = "productType")
private Integer productType;
}

@ -88,5 +88,5 @@ public class CompanyProductRelevanceRequest extends ListPageRequest {
@TableField(value = "codeCheck")
private Integer codeCheck;
private Integer productsType = 1;//默认是耗材
private Integer productsType;//默认是耗材
}

@ -476,6 +476,37 @@ public class IoCheckInoutService {
return null;
}
public String checkDrugNoPiCode(IoCodeTempEntity codeTempEntity) {
boolean isBillExit = orderDetailBizService.isExit(codeTempEntity.getOrderId());
if (!isBillExit) {
return "请先录入业务详情";
}
IoOrderDetailBizEntity bizEntity = orderDetailBizService.findByRelId(codeTempEntity.getOrderId(), codeTempEntity.getRelId());
if (bizEntity == null) {
return "非此单产品!";
}
Integer detailCount = orderDetailCodeService.findByRelIdCount(codeTempEntity.getOrderId(), codeTempEntity.getRelId(), bizEntity.getBatchNo());
int curCount = 0;
if (detailCount != null) {
curCount = detailCount + codeTempEntity.getMyReCount();
} else {
curCount = codeTempEntity.getMyReCount();
}
if (curCount > bizEntity.getCount()) {
return "当前产品数量超出!";
}
if (bizEntity.getPrice() != null) {
codeTempEntity.setPrice(bizEntity.getPrice());
}
if (StrUtil.isEmpty(codeTempEntity.getBatchNo())) {
codeTempEntity.setBatchNo(bizEntity.getBatchNo());
codeTempEntity.setProduceDate(bizEntity.getProductDate());
codeTempEntity.setExpireDate(bizEntity.getExpireDate());
}
return null;
}
/**
*
*

@ -32,6 +32,11 @@ public class FilterUdiUtils {
return getGS1Udi(data);
} else if (data.substring(0, 1).equals("#")) {
return getGLXPUdi(data);
} else if (data.length() == 18 || data.length() == 20) {
String prefix = data.substring(0, 1);
if (prefix.equals("8")) {
return getDrugInfo(data);
}
}
}
return null;
@ -107,7 +112,6 @@ public class FilterUdiUtils {
}
public static UdiEntity getGLXPUdi(String data) {
String batchNo = "";
String produceDate = "";
@ -166,6 +170,19 @@ public class FilterUdiUtils {
}
public static UdiEntity getDrugInfo(String data) {
UdiEntity udiEntity = new UdiEntity();
String prefix = data.substring(0, 7);
String serialNo = data.substring(7, 16);
udiEntity.setBatchNo(null);
udiEntity.setExpireDate(null);
udiEntity.setProduceDate(null);
udiEntity.setUdi(prefix);
udiEntity.setSerialNo(serialNo);
return udiEntity;
}
public static UdiProductEntity transUdi(UdiProductEntity data) {
UdiEntity udiEntity = getUdi(data.getCode());
if (udiEntity != null) {
@ -229,7 +246,6 @@ public class FilterUdiUtils {
}
}
return udiRelevanceResponses.get(0);
}

@ -4047,7 +4047,7 @@ CREATE TABLE IF NOT EXISTS `io_split_code_detail`
`createUser` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '创建人',
`updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '拆零出库明细表'
@ -4075,6 +4075,21 @@ CALL Pro_Temp_ColumnWork('pur_order', 'productType',
CALL Pro_Temp_ColumnWork('io_order', 'productType',
' tinyint NULL DEFAULT NULL COMMENT ''产品类型(1.耗材2.药品)''',
1);
CALL Pro_Temp_ColumnWork('io_code_temp', 'productType',
' tinyint NULL DEFAULT NULL COMMENT ''产品类型(1.耗材2.药品)''',
1);
CALL Pro_Temp_ColumnWork('io_code', 'productType',
' tinyint NULL DEFAULT NULL COMMENT ''产品类型(1.耗材2.药品)''',
1);
CALL Pro_Temp_ColumnWork('io_order_detail_result', 'productType',
' tinyint NULL DEFAULT NULL COMMENT ''产品类型(1.耗材2.药品)''',
1);
CALL Pro_Temp_ColumnWork('io_order_detail_biz', 'productType',
' tinyint NULL DEFAULT NULL COMMENT ''产品类型(1.耗材2.药品)''',
1);
CALL Pro_Temp_ColumnWork('io_order_detail_code', 'productType',
' tinyint NULL DEFAULT NULL COMMENT ''产品类型(1.耗材2.药品)''',
1);
CALL Pro_Temp_ColumnWork('basic_sk_prescribe', 'clinicNumber',
@ -4130,14 +4145,5 @@ CALL Pro_Temp_ColumnWork('basic_sk_prescribe', 'id',
1);
CALL Pro_Temp_ColumnWork('basic_sk_prescribe_item_detail', 'itemCode',
'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''绑定的收费项目编码''',
1);
CALL Pro_Temp_ColumnWork('basic_sk_prescribe_item_detail', 'itemName',
'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''绑定的收费项目名称''',
1);
CALL Pro_Temp_ColumnWork('basic_products', 'cphhhbh', 'varchar(255)', 1);

Loading…
Cancel
Save