Merge remote-tracking branch 'origin/dev_price' into 20231126-yw

20231126-yw
yuanwei 2 years ago
commit 508e93bb91

@ -15,6 +15,7 @@ import com.glxp.api.entity.inout.IoCodeTempEntity;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity; import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inout.CheckPreInInvRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinRequest; import com.glxp.api.req.inv.FilterInvPreinRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest;
@ -24,6 +25,8 @@ import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse; import com.glxp.api.res.inv.InvPreinOrderResponse;
import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.auth.InvWarehouseService;
import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inout.IoCodeTempService;
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService; import com.glxp.api.service.inv.InvPreinOrderService;
@ -84,27 +87,46 @@ public class InvPreinOrderController extends BaseController {
} }
@Resource
IoCodeTempService codeTempService;
@Resource
IoCodeService codeService;
@AuthRuleAnnotation("") @AuthRuleAnnotation("")
@PostMapping("spms/prein/inv/products/getDetaiByCode") @PostMapping("spms/prein/inv/products/getDetaiByCode")
public BaseResponse getDetaiByCode(@RequestBody IoCodeTempEntity codeTempEntity) { public BaseResponse getDetaiByCode(@RequestBody CheckPreInInvRequest checkPreInInvRequest) {
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN); InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByOne(ConstantStatus.ACTION_TYPE_PREIN);
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(codeTempEntity.getAction()); BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(checkPreInInvRequest.getAction());
if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack()
String orderIds = checkPreInInvRequest.getCheckPreInOrders();
if (StrUtil.isNotEmpty(orderIds)) {
String[] orderIdArray = orderIds.split(",");
List<String> orderList = CollUtil.toList(orderIdArray);
int count = codeService.findByOrderIdsCount(orderList, checkPreInInvRequest.getCode());
if (count <= 0) {
return ResultVOUtils.error(500, "非预验收单产品或预验收库存数量不足!");
}
} else {
return ResultVOUtils.error(500, "未选择预验收入库单,请先选择预验收入库单!");
}
}
int count = 0; int count = 0;
if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) { if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_NULL) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, codeTempEntity.getCode()); count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), null, checkPreInInvRequest.getCode());
} else } else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), null); count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, invWarehouseEntity.getCode(), null);
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) { } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_SET) {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); count = invPreinProductDetailService.vailStockCountByCode(null, invWarehouseEntity.getCode(), checkPreInInvRequest.getPreInSpaceCode(), checkPreInInvRequest.getCode());
} else } else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, invWarehouseEntity.getCode(), codeTempEntity.getPreInSpaceCode()); count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, invWarehouseEntity.getCode(), checkPreInInvRequest.getPreInSpaceCode());
} else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) { } else if (bussinessTypeEntity.getSpaceOut() == ConstantStatus.SPACE_OUT_CODE) {
//按指定货位出库 //按指定货位出库
if (StrUtil.isEmpty(codeTempEntity.getPreSpaceCode())) { if (StrUtil.isEmpty(checkPreInInvRequest.getPreSpaceCode())) {
List<InvPlaceDetailResponse> invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), codeTempEntity.getCode()); List<InvPlaceDetailResponse> invProductDetailEntities = invPreinProductDetailService.findByGroupCode(invWarehouseEntity.getCode(), checkPreInInvRequest.getCode());
if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) { if (CollUtil.isNotEmpty(invProductDetailEntities) && invProductDetailEntities.size() > 1) {
BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!"); BaseResponse baseResponse = ResultVOUtils.error(511, "存在多个货位,请指定当前货位!");
baseResponse.setData(invProductDetailEntities); baseResponse.setData(invProductDetailEntities);
@ -112,24 +134,24 @@ public class InvPreinOrderController extends BaseController {
} else if (invProductDetailEntities.size() == 1) { } else if (invProductDetailEntities.size() == 1) {
InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0); InvPlaceDetailResponse invPlaceDetailResponse = invProductDetailEntities.get(0);
count = invPlaceDetailResponse.getReCount(); count = invPlaceDetailResponse.getReCount();
codeTempEntity.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode()); checkPreInInvRequest.setPreSpaceCode(invPlaceDetailResponse.getInvSpaceCode());
} else { } else {
return ResultVOUtils.error(500, "添加失败,该产品未上架货位!"); return ResultVOUtils.error(500, "添加失败,该产品未上架货位!");
} }
} else { } else {
if (StrUtil.isNotEmpty(codeTempEntity.getSerialNo())) { if (StrUtil.isNotEmpty(checkPreInInvRequest.getSerialNo())) {
count = invPreinProductDetailService.vailStockCountByCode(null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode(), codeTempEntity.getCode()); count = invPreinProductDetailService.vailStockCountByCode(null, checkPreInInvRequest.getInvCode(), checkPreInInvRequest.getPreInSpaceCode(), checkPreInInvRequest.getCode());
} else } else
count = invPreinProductDetailService.vailStockCount(codeTempEntity.getRelId(), codeTempEntity.getBatchNo(), codeTempEntity.getSupId(), null, codeTempEntity.getInvCode(), codeTempEntity.getPreInSpaceCode()); count = invPreinProductDetailService.vailStockCount(checkPreInInvRequest.getRelId(), checkPreInInvRequest.getBatchNo(), checkPreInInvRequest.getSupId(), null, checkPreInInvRequest.getInvCode(), checkPreInInvRequest.getPreInSpaceCode());
} }
} }
InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(codeTempEntity.getCode()); InvPreInProductDetailEntity invPreinDetailEntity = invPreinProductDetailService.findUseOneByCode(checkPreInInvRequest.getCode());
if (count <= 0) { if (count <= 0) {
return ResultVOUtils.error(500, "预验收库存数量不足!"); return ResultVOUtils.error(500, "预验收库存数量不足!");
} else { } else {
if (invPreinDetailEntity != null && StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(codeTempEntity.getBatchNo()) if (invPreinDetailEntity != null && StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(checkPreInInvRequest.getBatchNo())
&& !invPreinDetailEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) { && !invPreinDetailEntity.getBatchNo().equals(checkPreInInvRequest.getBatchNo())) {
return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
} }
} }

@ -178,7 +178,7 @@ public class PurOrderPrintController {
Map<String, Object> data = new HashMap<>(1); Map<String, Object> data = new HashMap<>(1);
List<Object> list = new ArrayList<>(); List<Object> list = new ArrayList<>();
PurApplyDetailRequest purApplyDetailRequest = new PurApplyDetailRequest(); PurApplyDetailRequest purApplyDetailRequest = new PurApplyDetailRequest();
purApplyDetailRequest.setOrderIdFk(purOrderPrintRequest.getBillNo()); purApplyDetailRequest.setOrderIdFk(purApplyResponse.getId() + "");
List<PurOrderDetailResponse> responseList = purApplyDetailService.joinQueryList(purApplyDetailRequest); List<PurOrderDetailResponse> responseList = purApplyDetailService.joinQueryList(purApplyDetailRequest);
int i = 1; int i = 1;
if (CollUtil.isNotEmpty(responseList)) { if (CollUtil.isNotEmpty(responseList)) {
@ -208,6 +208,10 @@ public class PurOrderPrintController {
supData.put("supName", obj.getSupName()); supData.put("supName", obj.getSupName());
supData.put("ylqxzcrbarmc", obj.getYlqxzcrbarmc()); supData.put("ylqxzcrbarmc", obj.getYlqxzcrbarmc());
supData.put("zczbhhzbapzbh", obj.getZczbhhzbapzbh()); supData.put("zczbhhzbapzbh", obj.getZczbhhzbapzbh());
supData.put("arrivalTime", MsDateUtil.formatDate(purApplyResponse.getArrivalTime(), "yyyy-MM-dd"));
supData.put("remark1", sysPdfTemplateRelevanceBizEntity.getRemark1() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark1());
supData.put("remark2", sysPdfTemplateRelevanceBizEntity.getRemark2() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark2());
supData.put("remark3", sysPdfTemplateRelevanceBizEntity.getRemark3() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark3());
list.add(supData); list.add(supData);
i++; i++;
} }

@ -0,0 +1,47 @@
package com.glxp.api.controller.thrsys;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.thrsys.ThrHslbEntity;
import com.glxp.api.entity.thrsys.ThrProductTypeEntity;
import com.glxp.api.req.thrsys.FilterThrHslbRequest;
import com.glxp.api.req.thrsys.FilterThrProductTypeRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.service.thrsys.ThrHslbService;
import com.glxp.api.service.thrsys.ThrProductTypeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@RestController
public class ThrProductTypeCotroller {
@Resource
ThrProductTypeService thrProductTypeService;
@AuthRuleAnnotation("")
@GetMapping("/udiwms/thrsys/getHslbs")
public BaseResponse getProductTypes(FilterThrProductTypeRequest filterThrProductTypeRequest,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<ThrProductTypeEntity> thrProductTypeEntityList
= thrProductTypeService.getProductTypes(filterThrProductTypeRequest);
PageInfo<ThrProductTypeEntity> pageInfo;
pageInfo = new PageInfo<ThrProductTypeEntity>(thrProductTypeEntityList);
PageSimpleResponse<ThrProductTypeEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(thrProductTypeEntityList);
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -1,6 +1,7 @@
package com.glxp.api.controller.thrsys; package com.glxp.api.controller.thrsys;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
@ -296,8 +297,6 @@ public class ThrProductsController {
if (null == filterThrProductsRequest) { if (null == filterThrProductsRequest) {
return ResultVOUtils.error(500, "参数不能为空"); return ResultVOUtils.error(500, "参数不能为空");
} }
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
try { try {
thrProductsService.downloadByRequest(filterThrProductsRequest); thrProductsService.downloadByRequest(filterThrProductsRequest);
@ -310,4 +309,24 @@ public class ThrProductsController {
return ResultVOUtils.success("后台正在下载,请稍后刷新查看!"); return ResultVOUtils.success("后台正在下载,请稍后刷新查看!");
} }
/**
*
*
* @param udiRelevanceResponse
* @return
*/
@PostMapping("/udiwms/thrsys/products/post")
public BaseResponse postThirdData(@RequestBody UdiRelevanceResponse udiRelevanceResponse) {
if (null == udiRelevanceResponse) {
return ResultVOUtils.error(500, "参数不能为空");
}
if (StrUtil.isEmpty(udiRelevanceResponse.getOriginUuid())) {
return ResultVOUtils.error(500, "产品未关联DI");
}
return thrProductsService.postThrProduct(udiRelevanceResponse, "thirdId");
}
} }

@ -0,0 +1,16 @@
package com.glxp.api.dao.thrsys;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.thrsys.ThrProductTypeEntity;
import com.glxp.api.req.thrsys.FilterThrHslbRequest;
import com.glxp.api.req.thrsys.FilterThrProductTypeRequest;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ThrProductTypeMapper extends BaseMapper<ThrProductTypeEntity> {
List<ThrProductTypeEntity> getProductTypes(FilterThrProductTypeRequest filterThrProductTypeRequest);
}

@ -0,0 +1,55 @@
package com.glxp.api.entity.thrsys;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ApiModel(value="com-glxp-api-entity-thrsys-ThrProductType")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "thr_product_type")
public class ThrProductTypeEntity implements Serializable {
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value="")
private Integer id;
/**
*
*/
@TableField(value = "code")
@ApiModelProperty(value="类别编码")
private String code;
/**
*
*/
@TableField(value = "`name`")
@ApiModelProperty(value="类别名称")
private String name;
/**
*
*/
@TableField(value = "thirdSys")
@ApiModelProperty(value="第三系统标识")
private String thirdSys;
/**
*
*/
@TableField(value = "remark")
@ApiModelProperty(value="备注")
private String remark;
private static final long serialVersionUID = 1L;
}

@ -153,6 +153,30 @@ public class ErpBasicClient {
} }
} }
/**
*
*
* @param postRelProductRequest
* @return
*/
public BaseResponse<String> postRelProduct(PostRelProductRequest postRelProductRequest) {
ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId("thirdId");
String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/post/udiRel/product";
String response = "";
try {
response = httpOkClient.uCloudPost(url, postRelProductRequest);
BaseResponse<String> listBaseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse<String>>() {
});
return listBaseResponse;
} catch (Exception e) {
log.error("提交第三产品信息异常" + response, e);
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
}
//测试连通性 //测试连通性
public BaseResponse testConnection(ThrSystemEntity thrSystemEntity) { public BaseResponse testConnection(ThrSystemEntity thrSystemEntity) {
String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udiwms/erp/testLocal", "{}"); String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udiwms/erp/testLocal", "{}");

@ -10,6 +10,7 @@ import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.BasicExportTypeEnum; import com.glxp.api.constant.BasicExportTypeEnum;
import com.glxp.api.constant.SyncDelType; import com.glxp.api.constant.SyncDelType;
import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.basic.ProductInfoEntity;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.BasicExportStatusEntity;
import com.glxp.api.entity.sync.IOOrderStatusEntity; import com.glxp.api.entity.sync.IOOrderStatusEntity;
@ -620,4 +621,14 @@ public class SpGetHttpClient {
} }
public BaseResponse<String> postBasicRl(UdiRelevanceEntity udiRelevanceEntity) {
String json = JSONUtil.toJsonStr(udiRelevanceEntity);
String result = okHttpCli.doPostJson(getIpUrl() + "/directToSpms" + "/spssync/basic/udirl/update", json, buildHeader());
BaseResponse<String> response =
JSONObject.parseObject(result, new TypeReference<BaseResponse<String>>() {
});
return response;
}
} }

@ -0,0 +1,149 @@
package com.glxp.api.req.inout;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class CheckPreInInvRequest {
private Integer id;
/**
* UDI
*/
private String code;
/**
*
*/
private String mainAction;
/**
*
*/
private String action;
/**
*
*/
private String orderId;
/**
*
*/
private String corpOrderId;
/**
* DI
*/
private String nameCode;
/**
*
*/
private String batchNo;
/**
*
*/
private String produceDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String serialNo;
/**
*
*/
private String packageLevel;
/**
* ID
*/
private String supId;
/**
* ID
*/
private Long relId;
/**
*
*/
private Integer count;
/**
*
*/
private Integer reCount;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String warehouseCode;
/**
*
*/
private String preSpaceCode;
private String preInSpaceCode;
/**
*
*/
private Date updateTime;
/**
*
*/
private Date createTime;
/**
*
*/
private String inBatchNo;
private String checkPreInOrders;
private int status; //条码校验状态
private int checkStatus; //1:多余条码2.同一产品条码超出
private String mySupId; //更新供应商
private BigDecimal price;
private boolean checkSuccess; //临时字段校验是否成功
public int getMyCount() {
if (count == null)
return 0;
return count;
}
public int getMyReCount() {
if (reCount == null) {
return 0;
}
return reCount;
}
}

@ -0,0 +1,28 @@
package com.glxp.api.req.thrsys;
import com.baomidou.mybatisplus.annotation.TableField;
import com.glxp.api.util.page.ListPageRequest;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class FilterThrProductTypeRequest extends ListPageRequest {
/**
*
*/
private String code;
/**
*
*/
private String name;
/**
*
*/
private String thirdSys;
private String key;
}

@ -0,0 +1,16 @@
package com.glxp.api.req.thrsys;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import lombok.Data;
import java.util.List;
@Data
public class PostRelProductRequest {
private String uploadType;
private String thirdSys;
List<UdiRelevanceResponse> datas;
UdiRelevanceResponse udiRelevanceResponse;
}

@ -499,10 +499,10 @@ public class IoAddInoutService {
BaseResponse baseResponse = checkInv(bussinessTypeEntity, pdaPostOrderRequest.getOrderDetailBizEntities(), orderEntity, pdaPostOrderRequest.getCodeTempEntities()); BaseResponse baseResponse = checkInv(bussinessTypeEntity, pdaPostOrderRequest.getOrderDetailBizEntities(), orderEntity, pdaPostOrderRequest.getCodeTempEntities());
if (baseResponse != null) if (baseResponse != null)
return baseResponse; return baseResponse;
List<IoCodeTempEntity> codeTempEntities = BeanUtil.copyToList(pdaPostOrderRequest.getCodeTempEntities(), IoCodeTempEntity.class);
String priceFifo = systemParamConfigService.selectValueByParamKey("price_fifo"); String priceFifo = systemParamConfigService.selectValueByParamKey("price_fifo");
if (IntUtil.value(priceFifo) > 0 && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { if (IntUtil.value(priceFifo) > 0 && bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
List<IoCodeTempEntity> codeTempEntities = BeanUtil.copyToList(pdaPostOrderRequest.getCodeTempEntities(), IoCodeTempEntity.class);
List<IoCodeTempEntity> resultList = new ArrayList<>(); List<IoCodeTempEntity> resultList = new ArrayList<>();
for (IoCodeTempEntity codeTempEntity : codeTempEntities) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
resultList = checkPrice(codeTempEntity, bussinessTypeEntity, resultList); resultList = checkPrice(codeTempEntity, bussinessTypeEntity, resultList);
@ -520,10 +520,10 @@ public class IoAddInoutService {
orderService.insertOrder(orderEntity); orderService.insertOrder(orderEntity);
if (CollUtil.isNotEmpty(pdaPostOrderRequest.getCodeTempEntities())) { if (CollUtil.isNotEmpty(pdaPostOrderRequest.getCodeTempEntities())) {
for (IoCodeTempEntity codeTempEntity : pdaPostOrderRequest.getCodeTempEntities()) { for (IoCodeTempEntity codeTempEntity : codeTempEntities) {
codeTempEntity.setOrderId(orderNo); codeTempEntity.setOrderId(orderNo);
} }
codeTempService.insertBatch(pdaPostOrderRequest.getCodeTempEntities()); codeTempService.insertBatch(codeTempEntities);
} }
dealProcess(orderEntity); dealProcess(orderEntity);

@ -0,0 +1,32 @@
package com.glxp.api.service.thrsys;
import com.github.pagehelper.PageHelper;
import com.glxp.api.entity.thrsys.ThrHslbEntity;
import com.glxp.api.req.thrsys.FilterThrHslbRequest;
import com.glxp.api.req.thrsys.FilterThrProductTypeRequest;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.entity.thrsys.ThrProductTypeEntity;
import com.glxp.api.dao.thrsys.ThrProductTypeMapper;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Service
public class ThrProductTypeService extends ServiceImpl<ThrProductTypeMapper, ThrProductTypeEntity> {
@Resource
ThrProductTypeMapper thrProductTypeMapper;
public List<ThrProductTypeEntity> getProductTypes(FilterThrProductTypeRequest filterThrProductTypeRequest) {
if (filterThrProductTypeRequest == null) {
return Collections.emptyList();
}
if (filterThrProductTypeRequest.getPage() != null) {
int offset = (filterThrProductTypeRequest.getPage() - 1) * filterThrProductTypeRequest.getLimit();
PageHelper.offsetPage(offset, filterThrProductTypeRequest.getLimit());
}
List<ThrProductTypeEntity> data = thrProductTypeMapper.getProductTypes(filterThrProductTypeRequest);
return data;
}
}

@ -83,5 +83,7 @@ public interface ThrProductsService extends IService<ThrProductsEntity> {
* *
* @return * @return
*/ */
BaseResponse uploadThrProduct(ThrSystemDetailEntity thrSystemDetailEntity); void uploadThrProduct(ThrSystemDetailEntity thrSystemDetailEntity);
BaseResponse postThrProduct(UdiRelevanceResponse udiRelevanceResponse, String thirdSyS);
} }

@ -1,6 +1,12 @@
package com.glxp.api.service.thrsys.impl; package com.glxp.api.service.thrsys.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.glxp.api.http.sync.SpGetHttpClient;
import com.glxp.api.req.basic.FilterUdiRelRequest;
import com.glxp.api.req.thrsys.PostRelProductRequest;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.util.*;
import org.apache.regexp.RE;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
@ -26,8 +32,6 @@ import com.glxp.api.res.thrsys.ThrProductsResponse;
import com.glxp.api.service.basic.UdiContrastService; import com.glxp.api.service.basic.UdiContrastService;
import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.service.thrsys.ThrProductsService; import com.glxp.api.service.thrsys.ThrProductsService;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.RedisUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
@ -41,6 +45,7 @@ import javax.annotation.Resource;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@ -313,20 +318,70 @@ public class ThrProductsServiceImpl extends ServiceImpl<ThrProductsDao, ThrProdu
@Resource @Resource
RedisUtil redisUtil; RedisUtil redisUtil;
@Resource
UdiRelevanceService udiRelevanceService;
@Override @Override
public BaseResponse uploadThrProduct(ThrSystemDetailEntity thrSystemDetailEntity) { public void uploadThrProduct(ThrSystemDetailEntity thrSystemDetailEntity) {
//上次修改时间 //上次修改时间
String lastUploadTime = (String) redisUtil.get("THR_PI_UPLOAD_TIME"); String lastUploadTime = (String) redisUtil.get("THR_PI_UPLOAD_TIME");
if (StrUtil.isEmpty(lastUploadTime)) { String currentTime = MsDateUtil.formatDateTime(new Date());
//下载耗材字典最新维护数据 if (StrUtil.isNotEmpty(lastUploadTime)) {
//获取耗材字典最新维护数据
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
filterUdiRelRequest.setLastUpdateTime(lastUploadTime);
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceService.filterUdiJoinSup(filterUdiRelRequest);
if (CollUtil.isNotEmpty(udiRelevanceResponses)) {
List<UdiRelevanceResponse> filteredList = udiRelevanceResponses.stream()
.filter(item ->
{
if ((StrUtil.isNotEmpty(item.getOriginUuid()) && StrUtil.isEmpty(item.getMainId())
|| (StrUtil.isNotEmpty(item.getOriginUuid()) && StrUtil.isNotEmpty(item.getMainId()) && StrUtil.isNotEmpty(item.getBasicPrductRemak8()))
)) {
return true;
} else return false;
}
)
.collect(Collectors.toList());
// List<List<UdiRelevanceResponse>> splitList = CustomUtil.splitList(filteredList, 10);
for (UdiRelevanceResponse udiRelevanceResponse : filteredList) {
BaseResponse baseResponse = postThrProduct(udiRelevanceResponse, thrSystemDetailEntity.getThirdSysFk());
if (baseResponse.getCode() != 20000) {
log.error(udiRelevanceResponse.getNameCode() + "," + udiRelevanceResponse.getId() + "第三方产品信息上传失败:" + baseResponse.getMessage());
}
}
redisUtil.set("THR_PI_UPLOAD_TIME", currentTime);
}
}
}
//下载第三方产品信息 @Resource
SpGetHttpClient spGetHttpClient;
@Override
public BaseResponse postThrProduct(UdiRelevanceResponse udiRelevanceResponse, String thirdSyS) {
PostRelProductRequest postRelProductRequest = new PostRelProductRequest();
postRelProductRequest.setUploadType("1");
postRelProductRequest.setThirdSys(thirdSyS);
postRelProductRequest.setUdiRelevanceResponse(udiRelevanceResponse);
//上传第三方产品信息
BaseResponse baseResponse = erpBasicClient.postRelProduct(postRelProductRequest);
if (baseResponse.getCode() != 20000) {
return ResultVOUtils.error(500, "上传失败!" + baseResponse.getMessage());
} else {
String thirdCode = (String) baseResponse.getData();
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(udiRelevanceResponse.getId());
udiRelevanceEntity.setThirdId(thirdCode);
udiRelevanceEntity.setMainId(thirdCode);
udiRelevanceDao.updateById(udiRelevanceEntity);
spGetHttpClient.postBasicRl(udiRelevanceEntity);
} }
return null; return ResultVOUtils.success("上传成功");
} }
/** /**
* *
* *

@ -126,6 +126,7 @@ public class SyncThirdSysTask implements SchedulingConfigurer {
downloadThrOrder(thrSystemDetailEntity); downloadThrOrder(thrSystemDetailEntity);
break; break;
case ThirdSysConstant.PI_SUBMIT_URL: case ThirdSysConstant.PI_SUBMIT_URL:
postRelProduct(thrSystemDetailEntity);
break; break;
default: default:
//其他接口暂不处理 //其他接口暂不处理
@ -271,25 +272,24 @@ public class SyncThirdSysTask implements SchedulingConfigurer {
} }
} }
/** /**
* *
* *
* @param thrSystemDetailEntity * @param thrSystemDetailEntity
*/ */
private void submitThrProduct(ThrSystemDetailEntity thrSystemDetailEntity) { private void postRelProduct(ThrSystemDetailEntity thrSystemDetailEntity) {
//校验任务并更新redis数据执行标识 //校验任务并更新redis数据执行标识
if (verifyTask(thrSystemDetailEntity)) { if (verifyTask(thrSystemDetailEntity)) {
getExecutor().submit(() -> { getExecutor().submit(() -> {
log.info("开始下载第三方业务单据"); log.info("开始上传关联第三方产品信息");
try { try {
thrProductsService.uploadThrProduct(thrSystemDetailEntity); thrProductsService.uploadThrProduct(thrSystemDetailEntity);
} catch (Exception e) { } catch (Exception e) {
log.error("下载第三方业务单据", e); log.error("开始上传关联第三方产品信息", e);
} finally { } finally {
updateTask(getTaskKey(thrSystemDetailEntity)); updateTask(getTaskKey(thrSystemDetailEntity));
} }
log.info("第三方业务单据下载完成"); log.info("开始上传关联第三方产品信息完成");
}); });
} }
} }

@ -4,7 +4,7 @@ server:
spring: spring:
datasource: datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_pt?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_wms_ct?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root username: root
password: 123456 password: 123456
hikari: hikari:

@ -334,7 +334,8 @@
basic_products.categoryName, basic_products.categoryName,
company_product_relevance.unitFk, company_product_relevance.unitFk,
basic_corp.erpId as customerId, basic_corp.erpId as customerId,
basic_corp.name companyName basic_corp.name companyName,
th.hsmc hslbName
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
@ -345,6 +346,7 @@
left join thr_products tp on tp.code = basic_udirel.mainId left join thr_products tp on tp.code = basic_udirel.mainId
left join basic_product_category_rel on basic_product_category_rel.relId = basic_udirel.id left join basic_product_category_rel on basic_product_category_rel.relId = basic_udirel.id
left join basic_product_category on basic_product_category_rel.code = basic_product_category.code left join basic_product_category on basic_product_category_rel.code = basic_product_category.code
left join thr_hslb th on basic_products.basicPrductRemak8 = th.hsbm
<where> <where>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null"> <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
AND basic_products.ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%') AND basic_products.ylqxzcrbarmc LIKE concat('%', #{ylqxzcrbarmc}, '%')
@ -410,7 +412,8 @@
</if> </if>
<if test="lastUpdateTime != null and lastUpdateTime != ''"> <if test="lastUpdateTime != null and lastUpdateTime != ''">
<![CDATA[ <![CDATA[
and DATE_FORMAT(updateTime, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{lastUpdateTime}, '%Y-%m-%d %H:%i:%S') and DATE_FORMAT(basic_udirel.updateTime, '%Y-%m-%d %H:%i:%S') >=
DATE_FORMAT(#{lastUpdateTime}, '%Y-%m-%d %H:%i:%S')
]]> ]]>
</if> </if>
<if test="mainId != '' and mainId != null"> <if test="mainId != '' and mainId != null">

@ -16,9 +16,9 @@
ip.expireDate, ip.expireDate,
bp.ylqxzcrbarmc, bp.ylqxzcrbarmc,
bp.zczbhhzbapzbh, bp.zczbhhzbapzbh,
sum(ip.inCount) as inCount, ip.inCount,
sum(ip.outCount) as outCount, ip.outCount,
sum(ip.reCount) as reCount, ip.reCount,
ip.customerId, ip.customerId,
basic_corp.name supName, basic_corp.name supName,
ip.supId, ip.supId,

@ -0,0 +1,33 @@
<?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.glxp.api.dao.thrsys.ThrProductTypeMapper">
<resultMap id="BaseResultMap" type="com.glxp.api.entity.thrsys.ThrProductTypeEntity">
<!--@mbg.generated-->
<!--@Table thr_product_type-->
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="code" jdbcType="VARCHAR" property="code"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="thirdSys" jdbcType="VARCHAR" property="thirdSys"/>
<result column="remark" jdbcType="VARCHAR" property="remark"/>
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, code, `name`, thirdSys, remark
</sql>
<select id="getProductTypes" parameterType="com.glxp.api.req.thrsys.FilterThrProductTypeRequest"
resultType="com.glxp.api.entity.thrsys.ThrProductTypeEntity">
SELECT *
FROM thr_product_type
<where>
<if test="key != '' and key != null">
AND (code LIKE concat('%', #{key}, '%') or name LIKE concat('%', #{key}, '%')
)
</if>
<if test="code != '' and code != null">
AND code = #{code}
</if>
</where>
</select>
</mapper>

@ -99,3 +99,15 @@ CALL Pro_Temp_ColumnWork('io_order_detail_result', 'sterBatchNo', 'varchar(255)'
CALL Pro_Temp_ColumnWork('io_order_detail_result', 'sterDate', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('io_order_detail_result', 'sterDate', 'varchar(255)', 1);
UPDATE `auth_menu` SET `menu_name` = '耗材字典维护', `parent_id` = 1644, `order_num` = 1, `path` = 'maintain', `component` = 'basic/product/product', `query_param` = '{\"vueRouteSource\":1}', `is_frame` = 1, `is_cache` = 0, `menu_type` = 'C', `visible` = '0', `status` = '0', `perms` = 'basic:product:maintain', `icon` = NULL, `create_by` = '超级用户', `create_time` = '2023-01-11 17:02:20', `update_by` = NULL, `update_time` = NULL, `remark` = NULL WHERE `menu_id` = 1646;
UPDATE `auth_menu` SET `menu_name` = '产品信息导出', `parent_id` = 1616, `order_num` = 2, `path` = 'basic/product/product', `component` = 'basic/product/product', `query_param` = '{\"vueRouteSource\":2}', `is_frame` = 1, `is_cache` = 0, `menu_type` = 'C', `visible` = '0', `status` = '0', `perms` = 'thirdSys:product:export', `icon` = '', `create_by` = '超级用户', `create_time` = '2022-12-28 11:30:58', `update_by` = NULL, `update_time` = NULL, `remark` = NULL WHERE `menu_id` = 1618;
CREATE TABLE IF NOT EXISTS `thr_product_type` (
`id` int NOT NULL,
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类别编码',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '类别名称',
`thirdSys` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '第三系统标识',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

Loading…
Cancel
Save