临床使用出库修改,新增采购类型,使用出库拆单补单等

dev_20240306
anthonywj 1 year ago
parent a83523fe58
commit 584bbcaed6

@ -3,6 +3,7 @@ package com.glxp.api.controller.basic;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.Log;
import com.glxp.api.common.enums.ResultEnum;
@ -21,6 +22,7 @@ import com.glxp.api.res.basic.BasicBusTypePreResponse;
import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.IBasicBusTypePreService;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.util.IntUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
@ -169,11 +171,14 @@ public class BasicBusTypePreController {
}
if (basicBusTypePreEntity != null) {
//判断是否重复添加
boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity);
if (result) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
if (IntUtil.value(basicBusTypePreEntity.getSplitOrder()) < 1) {
boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity);
if (result) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
}
}
if(basicBusTypePreEntity.getAction().equals(basicBusTypePreEntity.getOriginAction())){
if (basicBusTypePreEntity.getAction().equals(basicBusTypePreEntity.getOriginAction())) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "出入库单与目标出入库单相同!");
}
@ -197,15 +202,25 @@ public class BasicBusTypePreController {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
if(basicBusTypePreEntity.getAction().equals(basicBusTypePreEntity.getOriginAction())){
if (basicBusTypePreEntity.getAction().equals(basicBusTypePreEntity.getOriginAction())) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "出入库单与目标出入库单相同!");
}
if (basicBusTypePreEntity != null) {
//判断是否重复添加
boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity);
if (result) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
//校验是否允许存在多个相同的单据类型
if (IntUtil.value(basicBusTypePreEntity.getSplitOrder()) < 1) {
long count = basicBusTypePreService.count(new QueryWrapper<BasicBusTypePreEntity>().eq("action", basicBusTypePreEntity.getAction()));
if (count > 0) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
}
} else {
boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity);
if (result) {
return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!");
}
}
if (StrUtil.isNotBlank(basicBusTypePreEntity.getDefaultInvCode())) {

@ -416,8 +416,6 @@ public class IoCodeTempController extends BaseController {
//过期提醒:
// SystemParamConfigEntity expireParamConfigEntity = systemParamConfigService.selectByParamKey("expire_date_tip");
//IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && !addOrderRequest.isIgnoreExpire()
if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) {
if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) {
String expireDate = "20" + udiEntity.getExpireDate();
@ -437,8 +435,8 @@ public class IoCodeTempController extends BaseController {
}
}
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
//近效期提醒
// SystemParamConfigEntity recentParamConfigEntity = systemParamConfigService.selectByParamKey("recent_date_tip");
long recent = 0;
if (udiRelevanceResponse.getRecentDateTime() != null)
recent = udiRelevanceResponse.getRecentDateTime().longValue();
@ -469,7 +467,6 @@ public class IoCodeTempController extends BaseController {
if (resultTime > 0) {
long time = resultTime / (24 * 60 * 60 * 1000);
if (resultTime < recentTieme) {
// return ResultVOUtils.error(605, "当前产品临近过期,距过期还剩" + time + "天,无法添加!");
return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "天,是否确定继续添加?");
}
}
@ -488,7 +485,7 @@ public class IoCodeTempController extends BaseController {
}
//校验预验收库存是否已存在
if (bussinessTypeEntity.isScanPreIn()) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) {
if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack()
String orderIds = addOrderRequest.getCheckPreInOrders();
if (StrUtil.isNotEmpty(orderIds)) {
@ -559,13 +556,26 @@ public class IoCodeTempController extends BaseController {
// IoCodeTempEntity codeTempEntity = isExitToatal(code, codeEnttitys);
//校验库存
BaseResponse invRes = null;
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
} else {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
invRes = checkPreInInv(bussinessTypeEntity, genDetaiEntity, false);
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
invRes = checkPreInv(bussinessTypeEntity, genDetaiEntity, false);
} else {
invRes = checkInv(bussinessTypeEntity, genDetaiEntity, false);
}
}
if (invRes != null) {
return invRes;
}
@ -736,25 +746,51 @@ public class IoCodeTempController extends BaseController {
}
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
if (IntUtil.value(bussinessTypeEntity.getUseDyCount()) == 2) {
if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
if (bussinessTypeEntity.isAdvancePreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 3)) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
if (bussinessTypeEntity.isVailInv() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 1)) {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
} else {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
if (bussinessTypeEntity.isScanPreIn()) { //校验预验收库存
BaseResponse invRes = checkPreInInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
BaseResponse invRes = checkPreInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
} else {
BaseResponse invRes = checkInv(bussinessTypeEntity, codeEnttity, false);
if (invRes != null) {
deleteEmptyBillNo(orderEntity);
return invRes;
}
}
}
//是否边扫边校验
if (bussinessTypeEntity.getCheckWebNew() == 1 && bussinessTypeEntity.isCheckEnable()) {
String errMsg = ioCheckInoutService.checkCode(codeEnttity);
@ -1813,5 +1849,19 @@ public class IoCodeTempController extends BaseController {
return ResultVOUtils.success(addCodeResult);
}
/**
* @param udiRelevanceResponse
* @param purType 1:23
*/
public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceResponse, Integer purType) {
if (bussinessTypeEntity.getUseDyCount() == 2) {
if (IntUtil.value(udiRelevanceResponse.getPurType()) == IntUtil.value(purType)) {
return true;
} else
return false;
}
return true;
}
}

@ -32,7 +32,7 @@ public interface BasicBusTypePreDao extends BaseMapperPlus<BasicBusTypePreDao, B
* @param action
* @return
*/
List<BasicBusTypePreEntity> findByAction(String action);
List<BasicBusTypePreEntity> findByAction(@Param("action") String action, @Param("originAction") String originAction);
/**
*

@ -123,24 +123,37 @@ public class BasicBusTypePreEntity {
@TableField(value = "remark")
private String remark;
// 创建单模式1送货至入库单模式2.向上级补单模式3.预验收转入库单模式4.寄售转入库单模式5.退货向上级补单模式
/**
* 12.3.4.5.退
*/
@TableField(value = "createType")
private int createType;
/**
*
*/
@TableField(value = "targetBusAction")
private String targetBusAction;
/**
*
*/
@TableField(value = "busBeforeTime")
private Integer busBeforeTime;
/**
*
*/
@TableField(value = "auditStatus")
private Integer auditStatus;
/**
*
*/
@TableField(value = "busAuditStatus")
private Integer busAuditStatus;
/**
* 012:3:
*/
@TableField(value = "splitOrder")
private Integer splitOrder;
@TableField(exist = false)
public static final String COL_ID = "id";

@ -197,7 +197,7 @@ public class BasicBussinessTypeEntity {
private boolean secCheckBalance;
/**
* 使
* 使 0:1使2使
*/
@TableField(value = "useDyCount")
private int useDyCount;

@ -97,6 +97,12 @@ public class UdiRelevanceEntity {
@TableField(value = "isAdavence")
private Boolean isAdavence;
/**
* 1:23
*/
@TableField(value = "purType")
private Integer purType;
/**
* 使
*/

@ -163,7 +163,7 @@ public class BussinessTypeSaveRequest {
private Boolean secCheckBalance;
/**
* 使
* 使 0:1使2使
*/
private Integer useDyCount;

@ -50,6 +50,11 @@ public class CompanyProductRelevanceRequest extends ListPageRequest {
private Boolean isAdavence;
private String unitFk;
/**
* 1:23
*/
private Integer purType;
private String corpId;
private String billType;
private String manufactory;

@ -1,6 +1,7 @@
package com.glxp.api.req.basic;
import com.baomidou.mybatisplus.annotation.TableField;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
@ -45,6 +46,10 @@ public class FilterUdiInfoRequest extends ListPageRequest {
private String udplatCode;
private String mainId;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String corpId;
private String billType;

@ -51,6 +51,10 @@ public class FilterUdiRelRequest extends ListPageRequest {
private String udplatCode;
private String mainId;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String corpId;
private String billType;

@ -22,4 +22,5 @@ public class SupplementRequest {
private String spmc;
private String cpms;
private String price;
private Integer purType;
}

@ -30,6 +30,10 @@ public class UdiRelevanceRequest {
private Integer lockStatus;
private String udplatCode;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String supName;
private String originUuid;
private String price;

@ -22,6 +22,10 @@ public class UdiRelevanceSaveRequest {
private Boolean isLock;
private Integer lockStatus;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private Boolean useMuti;
private Integer useNum;
private String supName;

@ -83,6 +83,9 @@ public class BasicBussinessTypeResponse {
private int checkBalance;
private boolean secCheckBalance;
/**
* 使 0:1使2使
*/
private int useDyCount;
private boolean expireTip;

@ -58,6 +58,10 @@ public class CompanyProductRelevanceResponse {
private String mainId;
private String mainName;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String scbssfbhph;
private String scbssfbhxlh;

@ -23,6 +23,10 @@ public class UdiRelevanceResponse {
private Boolean isLock;
private Integer lockStatus;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private Boolean useMuti;
private Integer useNum;
private String supName;

@ -58,6 +58,10 @@ public class UdiRlSupResponse {
private String mainId;
private String mainName;
private Boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private String scbssfbhph;
private String scbssfbhxlh;

@ -60,6 +60,10 @@ public class UdiInfoResponse {
private Integer status;
private String supId;
private boolean isAdavence;
/**
* 1:23
*/
private Integer purType;
private boolean isDisable;
private boolean useMuti;

@ -64,6 +64,8 @@ public interface IBasicBusTypePreService extends IService<BasicBusTypePreEntity>
*/
List<BasicBusTypePreEntity> findByAction(String action);
List<BasicBusTypePreEntity> findByOiginActions(String originAction);
/**
*
*

@ -105,4 +105,6 @@ public interface UdiRelevanceService extends IService<UdiRelevanceEntity> {
String getRelIdByUdiCode(String code);
UdiRelevanceResponse selectOneUdi(FilterUdiRelRequest filterUdiRelRequest);
Integer findPurType(Long relId);
}

@ -11,6 +11,7 @@ import com.glxp.api.req.basic.FilterBusTypePreRequest;
import com.glxp.api.res.basic.BasicBusTypePreResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.basic.IBasicBusTypePreService;
import com.glxp.api.util.IntUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -62,7 +63,12 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
@Override
public List<BasicBusTypePreEntity> findByAction(String action) {
return basicBusTypePreDao.findByAction(action);
return basicBusTypePreDao.findByAction(action, null);
}
@Override
public List<BasicBusTypePreEntity> findByOiginActions(String originAction) {
return basicBusTypePreDao.findByAction(null, originAction);
}
@Override
@ -83,16 +89,18 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
@Override
public boolean verifyExists(BasicBusTypePreEntity basicBusTypePreEntity) {
// 校验是否有相同的单据类型流转配置
QueryWrapper<BasicBusTypePreEntity> wrapper = new QueryWrapper<>();
wrapper.eq("action", basicBusTypePreEntity.getAction())
.eq("originAction", basicBusTypePreEntity.getOriginAction())
.eq(null !=basicBusTypePreEntity.getInvCode(),"invCode", basicBusTypePreEntity.getInvCode())
.eq(null != basicBusTypePreEntity.getInvCode(), "invCode", basicBusTypePreEntity.getInvCode())
.eq(null != basicBusTypePreEntity.getBeforeTime(), "beforeTime", basicBusTypePreEntity.getBeforeTime())
.eq(null != basicBusTypePreEntity.getDefaultInvCode(), "defaultInvCode", basicBusTypePreEntity.getDefaultInvCode())
.eq(null != basicBusTypePreEntity.getSupplementAll(), "supplementAll", basicBusTypePreEntity.getSupplementAll())
.eq(null != basicBusTypePreEntity.getAuditStatus(),"auditStatus",basicBusTypePreEntity.getAuditStatus())
.eq(null != basicBusTypePreEntity.getBusAuditStatus(),"busAuditStatus",basicBusTypePreEntity.getBusAuditStatus());
.eq(null != basicBusTypePreEntity.getAuditStatus(), "auditStatus", basicBusTypePreEntity.getAuditStatus())
.eq(null != basicBusTypePreEntity.getBusAuditStatus(), "busAuditStatus", basicBusTypePreEntity.getBusAuditStatus());
List<BasicBusTypePreEntity> list = basicBusTypePreDao.selectList(wrapper);
if (CollUtil.isNotEmpty(list)) {
if (null != basicBusTypePreEntity.getId()) {
@ -105,6 +113,8 @@ public class BasicBusTypePreServiceImpl extends ServiceImpl<BasicBusTypePreDao,
return true;
}
}
return false;
}

@ -2,6 +2,7 @@ package com.glxp.api.service.basic.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantStatus;
@ -16,6 +17,7 @@ import com.glxp.api.res.basic.UdiRlSupResponse;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.basic.UdiRlSupService;
import com.glxp.api.service.thrsys.ThrSystemService;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.udi.FilterUdiUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -414,4 +416,11 @@ public class UdiRelevanceServiceImpl extends ServiceImpl<UdiRelevanceDao, UdiRel
return udiRelevanceDao.selectOneUdi(filterUdiRelRequest);
}
@Override
public Integer findPurType(Long relId) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectOne(new QueryWrapper<UdiRelevanceEntity>().select("purType").eq("id", relId).last("limit 1"));
return IntUtil.value(udiRelevanceEntity.getPurType());
}
}

@ -677,16 +677,16 @@ public class IoAddInoutService {
break;
}
}
if (isMuti){
if (isMuti) {
//过滤掉库存数量为0的供应商
if (relId != null && StrUtil.isNotEmpty(batchNo)){
unitFks = invProductService.filterReCount(relId,batchNo,unitFks);
if (unitFks!=null && unitFks.size() == 1){
if (relId != null && StrUtil.isNotEmpty(batchNo)) {
unitFks = invProductService.filterReCount(relId, batchNo, unitFks);
if (unitFks != null && unitFks.size() == 1) {
return unitFks.get(0);
}
}
return "MUTI"; //绑定多个供应商
}else return unitFk;
} else return unitFk;
}
return null;
}
@ -931,34 +931,40 @@ public class IoAddInoutService {
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 < IntUtil.value(codeTempEntity.getReCount())) {
return ResultVOUtils.error(500, "UDI码" + codeTempEntity.getCode() + "预验收库存数量不足!");
if (checkDiAttribute(bussinessTypeEntity, codeTempEntity.getRelId(), 2)) {
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 < IntUtil.value(codeTempEntity.getReCount())) {
return ResultVOUtils.error(500, "UDI码" + codeTempEntity.getCode() + "预验收库存数量不足!");
}
}
}
} else if (bussinessTypeEntity.isAdvancePreIn()) { //校验寄售库存
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_ADVANCE);
for (IoOrderDetailBizEntity orderDetailCodeEntity : orderDetailBizEntities) {
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 < orderDetailCodeEntity.getScanCount()) {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
if (checkDiAttribute(bussinessTypeEntity, orderDetailCodeEntity.getBindRlFk(), 3)) {
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 < orderDetailCodeEntity.getScanCount()) {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
}
}
}
@ -970,14 +976,16 @@ public class IoAddInoutService {
outInvCode = invWarehouseEntity.getCode();
}
for (IoOrderDetailBizEntity orderDetailCodeEntity : orderDetailBizEntities) {
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, outInvCode, 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 < orderDetailCodeEntity.getScanCount()) {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
if (checkDiAttribute(bussinessTypeEntity, orderDetailCodeEntity.getBindRlFk(), 1)) {
int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
count = invProductDetailService.vailStockCount(orderDetailCodeEntity.getBindRlFk(), orderDetailCodeEntity.getBatchNo(), orderDetailCodeEntity.getSupId(), null, outInvCode, 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 < orderDetailCodeEntity.getScanCount()) {
return ResultVOUtils.error(500, "提交失败," + orderDetailCodeEntity.getCoName() + "库存数量不足!");
}
}
}
}
@ -985,6 +993,20 @@ public class IoAddInoutService {
return null;
}
/**
*
*/
public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, Long relId, Integer purType) {
if (bussinessTypeEntity.getUseDyCount() == 2) {
if (udiRelevanceService.findPurType(relId) == IntUtil.value(purType)) {
return true;
} else
return false;
}
return true;
}
/**
*
@ -1068,6 +1090,4 @@ public class IoAddInoutService {
}
}

@ -1,5 +1,6 @@
package com.glxp.api.service.inout;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.inout.impl.IoCodeService;
@ -148,7 +149,14 @@ public class IoChangeInoutService {
@Resource
UdiRelevanceService udiRelevanceService;
//生成单据
/**
*
*
* @param bussinessChangeTypeEntity
* @param useInList
* @param orderEntity
* @param isGenInovice
*/
public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List<IoCodeEntity> useInList, IoOrderEntity orderEntity, boolean isGenInovice) {
@ -160,30 +168,62 @@ public class IoChangeInoutService {
return;
}
//是否根据耗材属性拆单
if (IntUtil.value(bussinessChangeTypeEntity.getSplitOrder()) > 0) {
List<BasicBusTypePreEntity> busTypePreEntities = basicBusTypePreService.findByOiginActions(orderEntity.getAction());
if (CollUtil.isNotEmpty(busTypePreEntities)) {
BasicBussinessTypeEntity targetBustypeEntity = basicBussinessTypeService.findByAction(bussinessChangeTypeEntity.getAction());
// buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, useInList, orderEntity, isGenInovice);
List<IoCodeEntity> groupBuyList = new ArrayList<>();
List<IoCodeEntity> unGroupBuyList = new ArrayList<>();
if (IntUtil.value(targetBustypeEntity.getGroupBuySplit()) == 1) {
//过滤集采、非集采
for (IoCodeEntity codeEntity : useInList) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(codeEntity.getRelId());
if (IntUtil.value(udiRelevanceEntity.getGroupBuy())) {
groupBuyList.add(codeEntity);
} else {
unGroupBuyList.add(codeEntity);
List<IoCodeEntity> normalCodes = new ArrayList<>();
List<IoCodeEntity> preInCodes = new ArrayList<>();
List<IoCodeEntity> preCodes = new ArrayList<>();
for (IoCodeEntity codeEntity : useInList) {
if (udiRelevanceService.findPurType(codeEntity.getRelId()) == ConstantStatus.ACTION_TYPE_NORMAL) {
normalCodes.add(codeEntity);
} else if (udiRelevanceService.findPurType(codeEntity.getRelId()) == ConstantStatus.ACTION_TYPE_PREIN) {
preInCodes.add(codeEntity);
} else if (udiRelevanceService.findPurType(codeEntity.getRelId()) == ConstantStatus.ACTION_TYPE_ADVANCE) {
preCodes.add(codeEntity);
}
}
BasicBussinessTypeEntity targetBustypeEntity;
for (BasicBusTypePreEntity busTypePreEntity : busTypePreEntities) {
targetBustypeEntity = basicBussinessTypeService.findByAction(busTypePreEntity.getAction());
if (busTypePreEntity.getSplitOrder() == ConstantStatus.ACTION_TYPE_NORMAL) {
buildGenOrder(targetBustypeEntity, busTypePreEntity, normalCodes, orderEntity, isGenInovice);
} else if (busTypePreEntity.getSplitOrder() == ConstantStatus.ACTION_TYPE_PREIN) {
buildGenOrder(targetBustypeEntity, busTypePreEntity, preInCodes, orderEntity, isGenInovice);
} else if (busTypePreEntity.getSplitOrder() == ConstantStatus.ACTION_TYPE_ADVANCE) {
buildGenOrder(targetBustypeEntity, busTypePreEntity, preCodes, orderEntity, isGenInovice);
}
}
}
if (CollUtil.isNotEmpty(groupBuyList)) {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, groupBuyList, orderEntity, isGenInovice);
}
if (CollUtil.isNotEmpty(unGroupBuyList)) {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, unGroupBuyList, orderEntity, isGenInovice);
} else {
//补单根据集采、非集采拆单
BasicBussinessTypeEntity targetBustypeEntity = basicBussinessTypeService.findByAction(bussinessChangeTypeEntity.getAction());
List<IoCodeEntity> groupBuyList = new ArrayList<>();
List<IoCodeEntity> unGroupBuyList = new ArrayList<>();
if (IntUtil.value(targetBustypeEntity.getGroupBuySplit()) == 1) {
for (IoCodeEntity codeEntity : useInList) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(codeEntity.getRelId());
if (IntUtil.value(udiRelevanceEntity.getGroupBuy())) {
groupBuyList.add(codeEntity);
} else {
unGroupBuyList.add(codeEntity);
}
}
if (CollUtil.isNotEmpty(groupBuyList)) {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, groupBuyList, orderEntity, isGenInovice);
}
if (CollUtil.isNotEmpty(unGroupBuyList)) {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, unGroupBuyList, orderEntity, isGenInovice);
}
} else {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, useInList, orderEntity, isGenInovice);
}
} else {
buildGenOrder(targetBustypeEntity, bussinessChangeTypeEntity, useInList, orderEntity, isGenInovice);
}
@ -342,10 +382,11 @@ public class IoChangeInoutService {
//根据单据设置状态 1:草稿
if (bussinessChangeTypeEntity.getAuditStatus() == 1) {
outOrder.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
outOrder.setDealStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
orderService.update(outOrder);
for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
addInoutService.genOrderDetailCode(orderEntity, codeTempEntity);
addInoutService.genOrderDetailCode(outOrder, codeTempEntity);
}
} else if (bussinessChangeTypeEntity.getAuditStatus() == 2 || bussinessChangeTypeEntity.getAuditStatus() == 3) {

@ -77,6 +77,12 @@ public class SupplementVailUtil {
return "产品价格不能为空";
}
}
basicProductSetEntity = basicProductSetEntityMap.get("purType");
if (isMustFill(type, basicProductSetEntity)) {
if (StrUtil.isEmptyIfStr(supplementRequest.getPurType())) {
return "采购类型不能为空";
}
}
basicProductSetEntity = basicProductSetEntityMap.get("basicPrductRemak1");

@ -19,30 +19,37 @@
<select id="findByAction" resultType="com.glxp.api.entity.basic.BasicBusTypePreEntity">
select basic_bustype_pre.*,
basic_bussiness_type.name
basic_bussiness_type.name
from basic_bustype_pre
left join basic_bussiness_type on basic_bustype_pre.originAction = basic_bussiness_type.action
left join auth_dept on basic_bustype_pre.defaultDeptCode = auth_dept.code
left join auth_warehouse on basic_bustype_pre.defaultInvCode = auth_warehouse.code
where basic_bustype_pre.action = #{action}
left join basic_bussiness_type on basic_bustype_pre.originAction = basic_bussiness_type.action
left join auth_dept on basic_bustype_pre.defaultDeptCode = auth_dept.code
left join auth_warehouse on basic_bustype_pre.defaultInvCode = auth_warehouse.code
<where>
<if test="originAction != null and originAction != ''">
AND basic_bustype_pre.originAction like concat('%', #{originAction}, '%')
</if>
<if test="action != null and action != ''">
AND basic_bustype_pre.action like concat('%', #{action}, '%')
</if>
</where>
</select>
<select id="selectBusTypePreResList" resultType="com.glxp.api.res.basic.BasicBusTypePreResponse">
SELECT basic_bustype_pre.*,
awA.name defaultInvName,
awB.name invName,
(select name from basic_bussiness_type where action = basic_bustype_pre.originAction) originName,
(select name
from basic_bussiness_type
where basic_bussiness_type.action = basic_bustype_pre.action) targetName,
(select basic_bustype_change.originName
from basic_bustype_change
where basic_bustype_change.originAction = basic_bustype_pre.targetBusAction) targetBusName
awA.name defaultInvName,
awB.name invName,
(select name from basic_bussiness_type where action = basic_bustype_pre.originAction) originName,
(select name
from basic_bussiness_type
where basic_bussiness_type.action = basic_bustype_pre.action) targetName,
(select basic_bustype_change.originName
from basic_bustype_change
where basic_bustype_change.originAction = basic_bustype_pre.targetBusAction) targetBusName
FROM basic_bustype_pre
left JOIN auth_warehouse awA on basic_bustype_pre.defaultInvCode = awA.code
left JOIN auth_warehouse awB on basic_bustype_pre.invCode = awB.code
left JOIN basic_bussiness_type busTypeA on basic_bustype_pre.originAction = busTypeA.action
left join basic_bussiness_type busTypeB on basic_bustype_pre.action = busTypeB.action
left JOIN auth_warehouse awA on basic_bustype_pre.defaultInvCode = awA.code
left JOIN auth_warehouse awB on basic_bustype_pre.invCode = awB.code
left JOIN basic_bussiness_type busTypeA on basic_bustype_pre.originAction = busTypeA.action
left join basic_bussiness_type busTypeB on basic_bustype_pre.action = busTypeB.action
<where>
<if test="action != ''and action != null">
AND basic_bustype_pre.`action` = #{action}
@ -62,7 +69,8 @@
</where>
</select>
<insert id="insertOrUpdateEntity" keyColumn="id" keyProperty="id" parameterType="com.glxp.api.entity.basic.BasicBusTypePreEntity" useGeneratedKeys="true">
<insert id="insertOrUpdateEntity" keyColumn="id" keyProperty="id"
parameterType="com.glxp.api.entity.basic.BasicBusTypePreEntity" useGeneratedKeys="true">
insert into basic_bustype_pre
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -88,7 +96,7 @@
targetBusAction,
busBeforeTime,
auditStatus,
busAuditStatus,createType,
busAuditStatus, createType,
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -143,8 +151,7 @@
busBeforeTime = #{busBeforeTime,jdbcType=TINYINT},
auditStatus = #{auditStatus,jdbcType=TINYINT},
busAuditStatus = #{busAuditStatus,jdbcType=TINYINT},
createType = #{createType,jdbcType=TINYINT},
createType = #{createType,jdbcType=TINYINT},
</trim>
</insert>
</mapper>

@ -99,6 +99,7 @@
basic_corp.name companyName,
basic_udirel.mainId,
basic_udirel.isAdavence,
basic_udirel.purType,
basic_products.scbssfbhph,
basic_products.scbssfbhxlh,
basic_products.scbssfbhscrq,

@ -1228,7 +1228,7 @@
INTO basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable,
isLock,
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
lockStatus, isAdavence,purType, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
updateUser,
remark, useExpireTime, dispatch, groupBuy, needCert)
values (#{id},
@ -1244,7 +1244,7 @@
#{isDisable},
#{isLock},
#{lockStatus},
#{isAdavence},
#{isAdavence},#{purType},
#{useMuti},
#{useNum},
#{supName},
@ -1263,7 +1263,7 @@
INTO basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable,
isLock,
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
lockStatus, isAdavence,purType, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
updateUser,
remark, useExpireTime, dispatch, groupBuy, needCert)
values (#{id},
@ -1279,7 +1279,7 @@
#{isDisable},
#{isLock},
#{lockStatus},
#{isAdavence},
#{isAdavence},#{purType},
#{useMuti},
#{useNum},
#{supName},
@ -1353,6 +1353,9 @@
<if test="isAdavence != null">
isAdavence=#{isAdavence},
</if>
<if test="purType != null">
purType=#{purType},
</if>
<if test="useMuti != null">
useMuti=#{useMuti},
</if>
@ -1432,7 +1435,7 @@
into basic_udirel
(id, uuid, mainId, thirdId, thirdId1, thirdId2, thirdId3, thirdId4, udplatCode, isUseDy, isDisable,
isLock,
lockStatus, isAdavence, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
lockStatus, isAdavence,purType, useMuti, useNum, supName, createTime, updateTime, modifyTime, createUser,
updateUser,
remark, useExpireTime, dispatch, groupBuy, needCert)
values
@ -1451,7 +1454,7 @@
#{item.isDisable},
#{item.isLock},
#{item.lockStatus},
#{item.isAdavence},
#{item.isAdavence},#{item.purType},
#{item.useMuti},
#{item.useNum},
#{item.supName},

@ -46,7 +46,7 @@
basic_udirel.lockStatus,
basic_udirel.mainId,
basic_udirel.isAdavence,
basic_udirel.purType,
basic_udirel.lowStockNum,
basic_udirel.overStockNum,
basic_udirel.recentDateTime,

@ -608,3 +608,4 @@ CALL Pro_Temp_ColumnWork('io_order', 'fromSpmsOrders', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkReview', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'secCheckReview', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'thrCheckReview', 'tinyint', 1);

@ -503,5 +503,11 @@ SET FOREIGN_KEY_CHECKS = 1;
CALL Pro_Temp_ColumnWork('thr_corp', 'kfdm', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('basic_udirel', 'purType', 'tinyint', 1);
INSERT ignore INTO basic_product_set(`id`, `parmName`, `parmKey`, `enable`, `supSelect`, `supAdd`, `localAdd`, `remark`,
`sort`, `localEdit`)
VALUES (33, '采购类型', 'purType', 1, 1, 1, 0, '采购类型是否必填字段', 65, 1);

Loading…
Cancel
Save