|
|
|
@ -11,15 +11,20 @@ import com.glxp.sale.admin.entity.auth.AuthLicense;
|
|
|
|
|
import com.glxp.sale.admin.entity.basic.BasicUnitMaintainEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.basic.BussinessTypeEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.info.CompanyEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.info.CompanyProductRelevanceEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.inout.ErpOrderEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.inout.OrderEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.inout.WarehouseEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.param.SystemParamConfigEntity;
|
|
|
|
|
import com.glxp.sale.admin.entity.udid.UdiEntity;
|
|
|
|
|
import com.glxp.sale.admin.exception.JsonException;
|
|
|
|
|
import com.glxp.sale.admin.req.basic.CompanyProductRelevanceRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.basic.FilterUdiInfoRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.info.FilterCompanyProductRelevanceRequest;
|
|
|
|
|
import com.glxp.sale.admin.req.inout.*;
|
|
|
|
|
import com.glxp.sale.admin.res.PageSimpleResponse;
|
|
|
|
|
import com.glxp.sale.admin.res.basic.BussinessTypResponse;
|
|
|
|
|
import com.glxp.sale.admin.res.basic.CompanyProductRelevanceResponse;
|
|
|
|
|
import com.glxp.sale.admin.res.basic.UdiRelevanceResponse;
|
|
|
|
|
import com.glxp.sale.admin.res.inout.WarehouseResponse;
|
|
|
|
|
import com.glxp.sale.admin.service.auth.AuthAdminService;
|
|
|
|
@ -27,15 +32,20 @@ import com.glxp.sale.admin.service.auth.CustomerService;
|
|
|
|
|
import com.glxp.sale.admin.service.basic.BasicUnitMaintainService;
|
|
|
|
|
import com.glxp.sale.admin.service.basic.BussinessTypeService;
|
|
|
|
|
import com.glxp.sale.admin.service.basic.UdiRelevanceService;
|
|
|
|
|
import com.glxp.sale.admin.service.info.CompanyProductRelevanceService;
|
|
|
|
|
import com.glxp.sale.admin.service.info.CompanyService;
|
|
|
|
|
import com.glxp.sale.admin.service.inout.*;
|
|
|
|
|
import com.glxp.sale.admin.service.param.SystemParamConfigService;
|
|
|
|
|
import com.glxp.sale.admin.thread.IoTransInoutService;
|
|
|
|
|
import com.glxp.sale.admin.util.CustomUtil;
|
|
|
|
|
import com.glxp.sale.admin.util.DateUtil;
|
|
|
|
|
import com.glxp.sale.admin.util.FilterUdiUtils;
|
|
|
|
|
import com.glxp.sale.common.enums.ResultEnum;
|
|
|
|
|
import com.glxp.sale.common.res.BaseResponse;
|
|
|
|
|
import com.glxp.sale.common.util.ResultVOUtils;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.validation.BindingResult;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
@ -82,6 +92,11 @@ public class WareHouseController {
|
|
|
|
|
CustomerService customerService;
|
|
|
|
|
@Resource
|
|
|
|
|
UdiRelevanceService udiRelevanceService;
|
|
|
|
|
@Resource
|
|
|
|
|
CompanyProductRelevanceService companyProductRelevanceService;
|
|
|
|
|
@Resource
|
|
|
|
|
SystemParamConfigService systemParamConfigService;
|
|
|
|
|
Logger logger = LoggerFactory.getLogger(StockOrderController.class);
|
|
|
|
|
|
|
|
|
|
@AuthRuleAnnotation("")
|
|
|
|
|
@GetMapping("admin/warehouse/inout/list")
|
|
|
|
@ -246,7 +261,7 @@ public class WareHouseController {
|
|
|
|
|
warehouseEntity.setOrderId(addOrderRequest.getOrderId());
|
|
|
|
|
warehouseEntity.setAction(addOrderRequest.getAction());
|
|
|
|
|
warehouseEntity.setMainAction(addOrderRequest.getMainAction());
|
|
|
|
|
warehouseEntity.setFromCorp(addOrderRequest.getAction());
|
|
|
|
|
warehouseEntity.setFromCorp(addOrderRequest.getFromCorp());
|
|
|
|
|
warehouseEntity.setFromCorpId(addOrderRequest.getFromCorpId());
|
|
|
|
|
warehouseEntity.setLocStorageCode(addOrderRequest.getLocStorageCode());
|
|
|
|
|
codesTempService.updateByOrderId(warehouseEntity);
|
|
|
|
@ -263,8 +278,13 @@ public class WareHouseController {
|
|
|
|
|
codesTempService.updateById(warehouseEntity);
|
|
|
|
|
} else {
|
|
|
|
|
codesTempService.deleteCodesTempById(warehouseEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<WarehouseEntity> temps = codesTempService.findByOrderId(warehouseEntity.getOrderId());
|
|
|
|
|
if (temps.size() <= 0) {
|
|
|
|
|
orderService.deleteById(warehouseEntity.getOrderId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ResultVOUtils.success();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -304,7 +324,8 @@ public class WareHouseController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//先生产扫码单据
|
|
|
|
|
if (StringUtils.isBlank(orderId)) {
|
|
|
|
|
OrderEntity orderEntity = orderService.findById(orderId);
|
|
|
|
|
if (StringUtils.isBlank(orderId) || orderEntity == null) {
|
|
|
|
|
orderId = "SM" + CustomUtil.getId();
|
|
|
|
|
OrderEntity orderSaveRequest = new OrderEntity();
|
|
|
|
|
orderSaveRequest.setId(orderId);
|
|
|
|
@ -366,6 +387,43 @@ public class WareHouseController {
|
|
|
|
|
List<WarehouseEntity> warehouseEntityList = new ArrayList<>();
|
|
|
|
|
warehouseEntityList.add(warehouseEntity);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验往来单位
|
|
|
|
|
BaseResponse corpResponse = checkCorp(warehouseEntity, bussinessTypeEntity);
|
|
|
|
|
if (corpResponse != null) {
|
|
|
|
|
return corpResponse;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//过期提醒:
|
|
|
|
|
SystemParamConfigEntity expireParamConfigEntity = systemParamConfigService.selectByParamKey("expire_date_tip");
|
|
|
|
|
if (!"0".equals(expireParamConfigEntity.getParamValue())) {
|
|
|
|
|
if (udiEntity.getExpireDate() != null) {
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
long expireTime = DateUtil.parseDateExpire(expireDate);
|
|
|
|
|
if (expireTime - System.currentTimeMillis() < 0) {
|
|
|
|
|
return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "已经过期!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//近效期提醒:
|
|
|
|
|
SystemParamConfigEntity recentParamConfigEntity = systemParamConfigService.selectByParamKey("recent_date_tip");
|
|
|
|
|
long recent = Long.parseLong(recentParamConfigEntity.getParamValue());
|
|
|
|
|
if (recent > 0) {
|
|
|
|
|
if (udiEntity.getExpireDate() != null) {
|
|
|
|
|
String expireDate = "20" + udiEntity.getExpireDate();
|
|
|
|
|
long expireTime = DateUtil.parseDateExpire(expireDate);
|
|
|
|
|
long recentTieme = recent * 24 * 60 * 60 * 1000;
|
|
|
|
|
logger.error("recentTieme = " + recentTieme);
|
|
|
|
|
if (expireTime - System.currentTimeMillis() < recentTieme) {
|
|
|
|
|
return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "临近过期!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BaseResponse baseResponse = checkRelId(warehouseEntity);
|
|
|
|
|
warehouseEntity = codesTempService.findByUnique(warehouseEntity.getOrderId(), warehouseEntity.getCode());
|
|
|
|
|
if (baseResponse == null) {
|
|
|
|
@ -380,11 +438,39 @@ public class WareHouseController {
|
|
|
|
|
return baseResponse;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//产品是否可以以使用单元入库
|
|
|
|
|
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.selectAllByNameCode(warehouseEntity.getNameCode());
|
|
|
|
|
if (udiRelevanceResponses.size() == 1) {
|
|
|
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceResponses.get(0);
|
|
|
|
|
if (udiRelevanceResponse == null) {
|
|
|
|
|
return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "该产品信息未维护!");
|
|
|
|
|
} else if (udiRelevanceResponse.getIsUseDy() == 0 && udiRelevanceResponse.getDiType() == ConstantStatus.DITYPE_SYDY) {
|
|
|
|
|
return ResultVOUtils.error(500, "udi码:" + warehouseEntity.getCode() + "该产品不允许以使用单元入库!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return ResultVOUtils.success(orderId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//校验往来单位是否已维护
|
|
|
|
|
public BaseResponse checkCorp(WarehouseEntity warehouseEntity, BussinessTypeEntity bussinessTypeEntity) {
|
|
|
|
|
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
|
|
|
|
|
CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest();
|
|
|
|
|
companyProductRelevanceRequest.setUnitFk(warehouseEntity.getFromCorpId());
|
|
|
|
|
UdiEntity udiEntity = FilterUdiUtils.getUdi(warehouseEntity.getCode());
|
|
|
|
|
companyProductRelevanceRequest.setNameCode(udiEntity.getUdi());
|
|
|
|
|
List<CompanyProductRelevanceResponse> datas = companyProductRelevanceService.filterUdiGp(companyProductRelevanceRequest);
|
|
|
|
|
if (datas.size() <= 0) {
|
|
|
|
|
return ResultVOUtils.error(500, "当前供应商不存在此配送产品!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public BaseResponse checkRelId(WarehouseEntity warehouseEntity) {
|
|
|
|
|
List<UdiRelevanceResponse> udiRelevanceEntities = udiRelevanceService.selectAllByNameCode(warehouseEntity.getNameCode());
|
|
|
|
|
if (udiRelevanceEntities != null && udiRelevanceEntities.size() > 1 && warehouseEntity.getRelId() == null) {//同一个DI绑定多个产品西信息
|
|
|
|
@ -413,10 +499,19 @@ public class WareHouseController {
|
|
|
|
|
if (originSupId != null) {
|
|
|
|
|
warehouseEntity.setSupId(originSupId);
|
|
|
|
|
} else {
|
|
|
|
|
String supId = ioTransInoutService.checkExitSup(warehouseEntity.getRelId());
|
|
|
|
|
if (supId == null || "MUTI".equals(supId)) {
|
|
|
|
|
|
|
|
|
|
String supId = ioTransInoutService.checkInvExitSup(warehouseEntity);
|
|
|
|
|
if (supId == null) {
|
|
|
|
|
supId = ioTransInoutService.checkExitSup(warehouseEntity.getRelId());
|
|
|
|
|
}
|
|
|
|
|
if (supId == null) {
|
|
|
|
|
warehouseEntity.setSupId(null);
|
|
|
|
|
BaseResponse baseResponse = ResultVOUtils.error(503, "该产品未绑定供应商,请指定对应的供应商");
|
|
|
|
|
baseResponse.setData(warehouseEntity);
|
|
|
|
|
return baseResponse;
|
|
|
|
|
} else if ("MUTI".equals(supId)) {
|
|
|
|
|
warehouseEntity.setSupId(null);
|
|
|
|
|
BaseResponse baseResponse = ResultVOUtils.error(503, "该产品未绑定供应商或绑定多个供应商,请指定对应的供应商");
|
|
|
|
|
BaseResponse baseResponse = ResultVOUtils.error(503, "该产品绑定多个供应商,请指定对应的供应商");
|
|
|
|
|
baseResponse.setData(warehouseEntity);
|
|
|
|
|
return baseResponse;
|
|
|
|
|
} else {
|
|
|
|
|