Merge remote-tracking branch 'origin/master'

master
郑明梁 2 years ago
commit 44c9481ccb

@ -235,10 +235,12 @@ public class Constant {
* supInvoice
* norDetail
* preDetail
* preInDetail
*/
public static final String ORDER_ACTION_NOR_DETAIL = "norDetail";
public static final String ORDER_ACTION_PRE_DETAIL = "preDetail";
public static final String ORDER_ACTION_PREIN_DETAIL = "preInDetail";
public static final String ORDER_ACTION_SUP_DELIVERY = "supDelivery";
public static final String ORDER_ACTION_SUP_INVOICE = "supInvoice";
public static final String ORDER_ACTION_SUP_DELAUDIT = "supDelAudit";

@ -452,8 +452,8 @@ public class IoCodeTempController extends BaseController {
//校验预验收是否已存在
if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) {
if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) {
List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findUseByCode(code);
if (CollUtil.isNotEmpty(invProductDetailEntities)) {
int count = invPreinDetailService.findCountByCode(code);
if (count > 0) {
return ResultVOUtils.error(500, "预验收库存已存在此UDI码,请检查后重试!");
}
}
@ -461,31 +461,27 @@ public class IoCodeTempController extends BaseController {
//校验预验收库存是否已存在
if (bussinessTypeEntity.isScanPreIn()) {
InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findUseOneByCode(code);
if (invProductDetailEntity == null) {
return ResultVOUtils.error(500, "预验收库存未存在此产品!");
int preInCount = invPreinDetailService.findCountByCode(code);
InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findUseOneByCode(code);
if (preInCount <= 0) {
return ResultVOUtils.error(500, "预验收库存数量不足!");
} else {
if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo())
&& !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) {
if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo())
&& !invPreinDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) {
return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!");
}
if (StrUtil.isNotEmpty(orderId)) {//非首次添加
if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品
//无序列号,则可能存在多个预验收入库单
IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code);
List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailService.findUseByCode(code);
int count = 0;
for (InvPreinDetailEntity temp : invPreinDetailEntities) {
count = count + temp.getCount();
}
if (codeTempEntity != null) {
if (count < (codeTempEntity.getMyCount() + 1)) {
if (preInCount < (codeTempEntity.getMyCount() + 1)) {
return ResultVOUtils.error(500, "超出预验收库存数量");
}
}
} else {
if (invProductDetailEntity.getCount() < 1) {
return ResultVOUtils.error(500, "超出预验收库存数量");
if (preInCount < 1) {
return ResultVOUtils.error(500, "预验收库存数量不足");
}
}
}

@ -421,10 +421,10 @@ public class IoOrderReviewController extends BaseController {
@Resource
SpsSyncDownloadService spsSyncDownloadService;
// 前端扫单号验收
// UDI管理系统获取验收单据信息
@AuthRuleAnnotation("")
@PostMapping("/udiwms/order/reviewSpms")
public BaseResponse reviewSpms(@RequestBody ReviewSpmsRequest reviewSpmsRequest) {
@PostMapping("/udiwms/order/getReviews")
public BaseResponse getReviewOrderSpms(@RequestBody ReviewSpmsRequest reviewSpmsRequest) {
String billNo = reviewSpmsRequest.getBillNo();
if (StrUtil.isEmpty(reviewSpmsRequest.getBillNo())) {

@ -0,0 +1,105 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.res.inv.InvPreProductPageResponse;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinProductResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.WarehouseUserService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.service.inv.InvPreinProductService;
import com.glxp.api.util.udi.FilterUdiUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
@Slf4j
@RestController
public class InvPreinProductController {
@Resource
private InvPreinProductDetailService invPreinProductDetailService;
@Resource
private InvPreinProductService invPreinProductService;
@Resource
private WarehouseUserService warehouseUserService;
@Resource
private CustomerService customerService;
/**
*
*
* @param filterInvPreinProductRequest
* @return
*/
@GetMapping("/spms/inv/pre/in/product/filter")
public BaseResponse filterList(FilterInvPreinProductRequest filterInvPreinProductRequest) {
boolean showSup = false; //前端控制表格显示字段
if (StrUtil.isNotBlank(filterInvPreinProductRequest.getUdiCode())) {
filterInvPreinProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreinProductRequest.getUdiCode()));
}
if (StrUtil.isBlank(filterInvPreinProductRequest.getInvCode())) {
List<String> invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr());
if (CollUtil.isNotEmpty(invCodes)) {
filterInvPreinProductRequest.setInvCodes(invCodes);
}
}
List<InvPreinProductResponse> list = invPreinProductService.filterList(filterInvPreinProductRequest);
PageInfo<InvPreinProductResponse> pageInfo = new PageInfo<>(list);
InvPreProductPageResponse<InvPreinProductResponse> pageResponse = new InvPreProductPageResponse<>();
pageResponse.setList(pageInfo.getList());
pageResponse.setTotal(pageInfo.getTotal());
pageResponse.setShowSup(showSup);
return ResultVOUtils.success(pageResponse);
}
/**
*
*
* @param detailRequest
* @return
*/
@GetMapping("/spms/inv/pre/in/product/filterDetail")
public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) {
List<InvPreInProductDetailEntity> invPreProductDetailEntities = invPreinProductDetailService.filterPreProductDetailList(detailRequest);
PageInfo<InvPreInProductDetailEntity> pageInfo = new PageInfo<>(invPreProductDetailEntities);
List<InvPreProductDetailResponse> list = new ArrayList<>();
if (CollUtil.isNotEmpty(invPreProductDetailEntities)) {
invPreProductDetailEntities.forEach(invPreProductDetailEntity -> {
InvPreProductDetailResponse response = new InvPreProductDetailResponse();
BeanUtil.copyProperties(invPreProductDetailEntity, response);
//设置单据类型名称等单据相关参数
invPreinProductDetailService.setOrderInfo(response);
list.add(response);
});
}
PageSimpleResponse<InvPreProductDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setList(list);
pageSimpleResponse.setTotal(pageInfo.getTotal());
return ResultVOUtils.success(pageSimpleResponse);
}
}

@ -2,16 +2,17 @@ package com.glxp.api.controller.sync;
import cn.hutool.core.collection.CollUtil;
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.constant.Constant;
import com.glxp.api.entity.sync.SyncDataBustypeEntity;
import com.glxp.api.entity.sync.SyncDataSetEntity;
import com.glxp.api.res.system.SyncDataSetResponse;
import com.glxp.api.service.sync.SyncDataBustypeService;
import com.glxp.api.service.sync.SyncDataChangeBustypeService;
import com.glxp.api.service.sync.SyncDataSetService;
import com.glxp.api.util.RedisUtil;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Date;
import java.util.List;
@RestController
@ -31,6 +33,8 @@ public class SyncDataSetController {
@Resource
private SyncDataBustypeService syncDataBustypeService;
@Resource
private SyncDataChangeBustypeService syncDataChangeBustypeService;
@Resource
private RedisUtil redisUtil;
@ -54,11 +58,24 @@ public class SyncDataSetController {
) {
SyncDataSetEntity syncDataSetEntity = new SyncDataSetEntity();
BeanUtils.copyProperties(syncDataSetResponse, syncDataSetEntity);
syncDataSetEntity.setUpdateTime(new Date());
syncDataSetEntity.setId(1);
List<SyncDataBustypeEntity> busTypes = syncDataSetResponse.getBusTypes();
syncDataBustypeService.deleteAll();
syncDataBustypeService.deleteAll(1);
if (CollUtil.isNotEmpty(busTypes))
syncDataBustypeService.inserts(busTypes);
syncDataSetEntity.setBusTypes(null);
List<SyncDataBustypeEntity> toInBusTypes = syncDataSetResponse.getToInBusTypes();
syncDataBustypeService.deleteAll(2);
if (CollUtil.isNotEmpty(toInBusTypes))
syncDataBustypeService.inserts(toInBusTypes);
if (CollUtil.isNotEmpty(syncDataSetResponse.getChangeBusTypes())) {
syncDataChangeBustypeService.deleteAll();
syncDataChangeBustypeService.inserts(syncDataSetResponse.getChangeBusTypes());
}
boolean b = syncDataSetService.insert(syncDataSetEntity);
if (syncDataSetResponse.getDelaySyncTime() != null &&
syncDataSetResponse.getDelaySyncTime() > 0) {
@ -70,6 +87,4 @@ public class SyncDataSetController {
}
return ResultVOUtils.success();
}
}

@ -0,0 +1,30 @@
package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import java.util.List;
/**
* Dao
*/
public interface InvPreInProductDetailDao extends BaseMapperPlus<InvPreInProductDetailDao, InvPreInProductDetailEntity, InvPreInProductDetailEntity> {
/**
*
*
* @param filterInvPreProductDetailRequest
* @return
*/
List<InvPreInProductDetailEntity> filterPreProductDetailList(FilterInvPreProductDetailRequest filterInvPreProductDetailRequest);
/**
*
*
* @param detailRequest
* @return
*/
boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest);
}

@ -0,0 +1,31 @@
package com.glxp.api.dao.inv;
import com.glxp.api.dao.BaseMapperPlus;
import com.glxp.api.entity.inv.InvPreinProductEntity;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreinProductResponse;
import java.util.List;
/**
* Dao
*/
public interface InvPreinProductDao extends BaseMapperPlus<InvPreinProductDao, InvPreinProductEntity, InvPreinProductEntity> {
/**
* VO
*
* @param invPreProductRequest
* @return
*/
List<InvPreinProductResponse> filterList(FilterInvPreinProductRequest invPreProductRequest);
/**
*
*
* @param invPreProductRequest
* @return
*/
List<InvPreinProductEntity> filterPreProductList(FilterInvPreinProductRequest invPreProductRequest);
}

@ -0,0 +1,7 @@
package com.glxp.api.dao.sync;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity;
public interface SyncDataChangeBustypesDao extends BaseMapper<SyncDataChangeBustypesEntity> {
}

@ -1,5 +1,6 @@
package com.glxp.api.dao.system;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.sync.SyncDataBustypeEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -7,11 +8,10 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface SyncDataBustypeDao {
public interface SyncDataBustypeDao extends BaseMapper<SyncDataBustypeEntity> {
List<SyncDataBustypeEntity> findAll();
boolean deleteAll();
void inserts(@Param("syncDataBustypeEntities") List<SyncDataBustypeEntity> syncDataBustypeEntities);

@ -397,4 +397,8 @@ public class BasicBussinessTypeEntity {
private boolean checkCertExpire;
@TableField(value = "preInBackAction")
private String preInBackAction;
}

@ -0,0 +1,167 @@
package com.glxp.api.entity.inv;
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 lombok.Data;
import java.util.Date;
/**
*
*/
@Data
@TableName(value = "inv_pre_product_detail")
public class InvPreInProductDetailEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* UDI
*/
@TableField(value = "code")
private String code;
/**
*
*/
@TableField(value = "mainAction")
private String mainAction;
/**
*
*/
@TableField(value = "`action`")
private String action;
/**
*
*/
@TableField(value = "orderId")
private String orderId;
/**
* ID
*/
@TableField(value = "relId")
private Long relId;
/**
*
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "produceDate")
private String produceDate;
/**
*
*/
@TableField(value = "expireDate")
private String expireDate;
/**
*
*/
@TableField(value = "serialNo")
private String serialNo;
/**
*
*/
@TableField(value = "supId")
private String supId;
/**
*
*/
@TableField(value = "`count`")
private int count;
/**
*
*/
@TableField(value = "reCount")
private int reCount;
/**
*
*/
@TableField(value = "deptCode")
private String deptCode;
/**
*
*/
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "invSpaceCode")
private String invSpaceCode;
/**
*
*/
@TableField(value = "purchaseType")
private Integer purchaseType;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
public static final String COL_ID = "id";
public static final String COL_CODE = "code";
public static final String COL_MAINACTION = "mainAction";
public static final String COL_ACTION = "action";
public static final String COL_ORDERID = "orderId";
public static final String COL_RELID = "relId";
public static final String COL_NAMECODE = "nameCode";
public static final String COL_BATCHNO = "batchNo";
public static final String COL_PRODUCEDATE = "produceDate";
public static final String COL_EXPIREDATE = "expireDate";
public static final String COL_SERIALNO = "serialNo";
public static final String COL_SUPID = "supId";
public static final String COL_COUNT = "count";
public static final String COL_RECOUNT = "reCount";
public static final String COL_DEPTCODE = "deptCode";
public static final String COL_INVCODE = "invCode";
public static final String COL_INVSPACECODE = "invSpaceCode";
public static final String COL_PURCHASETYPE = "purchaseType";
public static final String COL_UPDATETIME = "updateTime";
}

@ -125,6 +125,8 @@ public class InvPreProductDetailEntity {
@TableField(value = "updateTime")
private Date updateTime;
public static final String COL_ID = "id";
public static final String COL_CODE = "code";

@ -91,4 +91,9 @@ public class InvPreinDetailEntity {
@TableField(value = "status")
private int status;
@TableField(value = "mainAction")
private String mainAction;
@TableField(value = "action")
private String action;
}

@ -0,0 +1,133 @@
package com.glxp.api.entity.inv;
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 lombok.Data;
import java.util.Date;
/**
*
*/
@Data
@TableName(value = "inv_prein_product")
public class InvPreinProductEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* ID
*/
@TableField(value = "relIdFk")
private Long relIdFk;
/**
*
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "productionDate")
private String productionDate;
/**
*
*/
@TableField(value = "expireDate")
private String expireDate;
/**
*
*/
@TableField(value = "inCount")
private int inCount;
/**
*
*/
@TableField(value = "outCount")
private int outCount;
/**
*
*/
@TableField(value = "reCount")
private int reCount;
/**
* ID
*/
@TableField(value = "customerId")
private String customerId;
/**
* ID
*/
@TableField(value = "supId")
private String supId;
/**
*
*/
@TableField(value = "deptCode")
private String deptCode;
/**
*
*/
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "createTime")
private Date createTime;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
public static final String COL_ID = "id";
public static final String COL_RELIDFK = "relIdFk";
public static final String COL_NAMECODE = "nameCode";
public static final String COL_BATCHNO = "batchNo";
public static final String COL_PRODUCTIONDATE = "productionDate";
public static final String COL_EXPIREDATE = "expireDate";
public static final String COL_INCOUNT = "inCount";
public static final String COL_OUTCOUNT = "outCount";
public static final String COL_RECOUNT = "reCount";
public static final String COL_CUSTOMERID = "customerId";
public static final String COL_SUPID = "supId";
public static final String COL_DEPTCODE = "deptCode";
public static final String COL_INVCODE = "invCode";
public static final String COL_CREATETIME = "createTime";
public static final String COL_UPDATETIME = "updateTime";
}

@ -1,14 +1,27 @@
package com.glxp.api.entity.sync;
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 lombok.Data;
/**
*
*/
@Data
@TableName(value = "sync_data_bustypes")
public class SyncDataBustypeEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField(value = "`action`")
private String action;
@TableField(value = "`name`")
private String name;
@TableField(value = "`outChange`")
private boolean outChange;
@TableField(value = "`orderStatus`")
private Integer orderStatus; //单据状态
@TableField(value = "`direct`")
private int direct; //1:UDI管理系统->SPMS 2:SPMS->UDI管理系统
}

@ -0,0 +1,31 @@
package com.glxp.api.entity.sync;
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 lombok.Data;
/**
* -
*/
@Data
@TableName(value = "sync_data_change_bustypes")
public class SyncDataChangeBustypesEntity {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField(value = "`action`")
private String action;
@TableField(value = "`name`")
private String name;
@TableField(value = "outChange")
private boolean outChange;
@TableField(value = "orderStatus")
private Integer orderStatus;
}

@ -2,47 +2,62 @@ package com.glxp.api.entity.sync;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class SyncDataSetEntity {
private Integer id;
private boolean typeBus;
private boolean typeScan;
private boolean typeThird;
private boolean basicProducts;
private boolean basicCorp;
private boolean basicInv;
private boolean basicType;
private boolean basicDept;
private boolean basicThirdProducts;
private boolean basicThirdCorp;
private boolean basicThirdInv;
private boolean basicThirdBusOrder;
private boolean dbDiProducts;
private boolean downstreamEnable;
private boolean orderScanFinish;
private boolean orderUnReceive;
private boolean orderUnCheck;
private int typeBus; //业务单据类型
private int typeScan; //扫码单据类型
private int typeThird; //第三方单据类型
private int basicProducts; //耗材字典
private int basicCorp; //往来单位字典
private int basicDept; //部门字典
private int basicInv; //仓库字典
private int basicThirdProducts; //第三方产品信息
private int basicThirdCorp; //第三方往来信息
private int basicThirdInv; //第三方仓库信息
private int basicThirdBusOrder; //第三方业务单据
private int dbDiProducts; //DI产品信息
private boolean downstreamEnable; //上游是否联通
private Integer syncTime; //数据上传间隔时间
private Integer syncDownloadTime; //数据下载间隔时间
private int sysUser; //系统用户信息
private int entrustAction; //委托验收设置
private int systemConfig; //系统参数设置
private int printConfig; //打印设置
private int scanChangeConfig; //自动建出入库单设置
private int busChangeConfig; //自动建业务单设置
private int orderScanFinish; //已完成单据
private int orderUnReceive; //未验收单据
private int orderUnCheck; //待校验单据
private int supCert; //首营资质证书
private String syncIp; //上级服务地址
private Integer orderSyncTime; //单据向外同步时间
private Integer orderSyncDlTime; //单据向内同步时间
private Integer orderToInSyncTime; //单据向内同步时间
private Integer delaySyncTime;
private int unCheckCert;
private int checkedCert;
private String busTypes;
private boolean sysUser;
private Integer syncTime;
private Integer orderSyncTime;
private String orderSyncStart;
private String basicSyncStart;
private boolean entrustAction;
private Date updateTime;
private boolean unCheckCert;
private boolean checkedCert;
private boolean companyCert;
private boolean manufacturerCert;
private boolean productCert;
private int companyCert;
private int manufacturerCert;
private int productCert;
private String syncIp;
}

@ -0,0 +1,33 @@
package com.glxp.api.idc.controller;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.idc.service.DeleteService;
@RestController
public class DeleteController {
@Resource
DeleteService deleteService;
@RequestMapping(value = "/spssync/common/delete")
@ResponseBody
public BaseResponse delete(HttpServletRequest request, @RequestBody Map<String, Object> params) {
if(deleteService.syncDelete(params))
return ResultVOUtils.success();
return ResultVOUtils.error(9999, "失败");
}
}

@ -0,0 +1,10 @@
package com.glxp.api.idc.service;
import java.util.Map;
/*数据中继删除数据处理*/
public interface DeleteService {
boolean syncDelete(String tableName,String uniqueValue);
boolean syncDelete(Map<String,Object> params);
}

@ -0,0 +1,58 @@
package com.glxp.api.idc.service.impl;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson2.JSON;
import com.glxp.api.dao.idc.DbDao;
import com.glxp.api.idc.service.DeleteService;
import com.glxp.api.util.CustomUtil;
@Service
public class DeleteServiceImpl implements DeleteService {
private static final Logger logger = LoggerFactory.getLogger(DeleteServiceImpl.class);
@Resource
private JdbcTemplate jdbcTemplate;
@Resource
private DbDao dbDao;
@Override
public boolean syncDelete(String tableName,String uniqueValue) {
Map<String,Object> map = new HashMap<>();
map.put("tableName", tableName);
map.put("uniqueValue", uniqueValue);
return syncDelete(map);
}
@Override
public boolean syncDelete(Map<String,Object> params) {
createTable();
String sql = "insert into idc_delete (id,tableName,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName").toString().toLowerCase()+"',now(),'"+JSON.toJSONString(params.get("uniqueValue"))+"')";
if(dbDao.save(sql)>0)
return true;
return false;
}
private void createTable() {
try {
jdbcTemplate.execute("create table idc_delete (id varchar(36),tableName varchar(100),uniqueValue varchar(600),updateTime datetime,PRIMARY KEY (id))");
} catch (Exception e) {
}
try {
jdbcTemplate.execute("create index i_idc_delete_table_name on idc_delete (tableName asc)");
} catch (Exception e) {
}
}
}

@ -203,7 +203,7 @@ public class IdcServiceImpl implements IdcService {
}
}
private void fetchFailFile(String host) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("sql", "select * from idc_file where createTime<date_sub(now(),interval 30 minute) order by createTime");
@ -222,21 +222,162 @@ public class IdcServiceImpl implements IdcService {
logger.error("中继服务地址未配置");
return;
}
/*未发送重新发送*/
asyncFailTask(map.get("syncIp").toString());
}
String[] syncTables = TableUtils.syncTables();
for (int i = 0; i < syncTables.length; i++) {
String[] tnames = syncTables[i].split("/");
boolean sync = StringUtils.isEmpty(tnames[0]) ||
boolean sync = (StringUtils.isEmpty(tnames[0])&&StringUtils.isEmpty(tnames[1])) ||
(!StringUtils.isEmpty(tnames[0]) && map != null && map.get(tnames[0]) != null && map.get(tnames[0]).toString().equals("1"));
saveIdcLog("---", "", map.get(tnames[0]) + syncTables[i], 0, 0);
if (sync) {
String syncIp = map.get("syncIp") != null ? map.get("syncIp").toString() : "";
syncData(syncTables[i], isUpload, syncIp);
asyncDelete(syncTables[i], isUpload, syncIp);
}
}
}
}
/*上传失败重新上传*/
private void asyncFailTask(String host) {
try
{
String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/";
String sql = "select * from basic_export_status where status='1' and receiveStatus='0' order by updateTime";
Map<String,Object> map = new HashMap<String,Object>();
map.put("sql", sql);
List<Map<String,Object>> list = dbDao.list(map);
ArrayList<String> files = new ArrayList<>();
for(int i=0;i<list.size();i++) {
String json = FileUtils.readFileAll(list.get(i).get("cacheFilePath").toString());
JSONObject object = JSONObject.parseObject(json);
List<Map> dataList = JSONObject.parseArray(JSON.toJSONString(object.get("data")), Map.class);
for (int m = 0; m < dataList.size(); m++) {
if(object.get("filePathColumn")!=null&&!StringUtils.isEmpty(object.get("filePathColumn").toString())&&
dataList.get(m).get(object.get("filePathColumn").toString()) !=null ) {
String fileNames = dataList.get(m).get(object.get("filePathColumn").toString()).toString();
String[] str = fileNames.split(",");
for (int r = 0; r < str.length; r++) {
if (!StringUtils.isEmpty(str[r]) && FileUtils.isFileExist(filePath + filePathSlash + imagePath + str[r]))
files.add(filePath + filePathSlash + imagePath + str[r]);
}
}
for(int k=0;k<30;k++) {
if(dataList.get(k).get("tableName"+k) == null)
break;
if(dataList.get(k).get("data"+k)!=null && dataList.get(k).get("filePathColumn"+k)!=null) {
List<Map> childList = JSONObject.parseArray(JSON.toJSONString(dataList.get(i).get("data"+k)), Map.class);
for(int x =0 ;x <childList.size();x++) {
if (childList.get(x).get(dataList.get(k).get("filePathColumn"+k).toString()) != null) {
String[] str = childList.get(x).get(dataList.get(k).get("filePathColumn"+k).toString()).toString().split(",");
for (int s = 0; s < str.length; s++) {
if (!StringUtils.isEmpty(str[s]) && FileUtils.isFileExist(filePath + filePathSlash + imagePath + str[s]))
files.add(filePath + filePathSlash + imagePath + str[s]);
}
}
}
}
}
}
String result = "";
try {
result = relay(list.get(i).get("id").toString(), json, files, host);
} catch (Exception ex) {
}
if (IDCUtils.isJson(result)) {
JSONObject res = JSON.parseObject(result);
if (res.getInteger("code") == 20000) {
executeSql("update basic_export_status set receiveStatus='1',endTime=now() where id='"+list.get(i).get("id")+"'");
saveIdcLog(object.getString("messageType"), list.get(i).get("id").toString(), object.getString("tableName") + ">reUpload->success", 0, 0);
} else {
saveIdcLog(object.getString("messageType"), list.get(i).get("id").toString(), object.getString("tableName") + ">reUpload->fail", 0, 0);
}
} else {
saveIdcLog(object.getString("messageType"), list.get(i).get("id").toString(), object.getString("tableName") + ">reUpload->fail", 0, 0);
}
}
} catch (Exception ex) {
}
}
/*数据删除同步*/
private void asyncDelete(String tname,boolean isUpload,String syncIp) {
String[] tnames = tname.split("/");
String lastUpdateTime = getUpdateTime(tnames[2] + "." + tnames[0]+"."+tnames[1]+".delete");
Date nowUpdateTime = new Date();
String where = "tableName='"+tnames[2].toLowerCase()+"' and updateTime between cast('"+lastUpdateTime+"' as datetime) "+
" and cast('"+DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")+"' as datetime)";
Map<String,Object> count = new HashMap<String,Object>();
count.put("sql", "select count(*) from idc_delete where "+where);
int total = dbDao.count(count);
int limit = 50;
if (total > 0) {
boolean success = true;
for (int i = 0; i < Math.ceil(total / limit) + 1; i++) {
Date startTime = new Date();
Map<String,Object> map = new HashMap<String,Object>();
map.put("sql", "select * from idc_delete");
map.put("sqlWhere", where);
map.put("limit", limit);
map.put("page", i * limit);
List<Map<String,Object>> list = dbDao.list(map);
if(list!=null&&map.size()>0) {
List<Map<String,Object>> data = new ArrayList<>();
for(int k=0;i<list.size();k++) {
String line = list.get(k).get("uniqueValue").toString();
JSONObject obj = JSON.parseObject(line);
String uniqueColumn = "";
for(String key : obj.keySet()){
uniqueColumn += uniqueColumn.length()>0 ? ","+key : key;
}
obj.put("uniqueColumn", uniqueColumn);
obj.put("operateMode", "D");
data.add(obj);
}
Map<String,Object> msg = new HashMap<String, Object>();
msg.put("messageId", CustomUtil.getId());
msg.put("messageType", tnames[9]+"(删除)");
msg.put("apiCode", "common");
msg.put("tableName", DBAUtils.tableAliasName(tnames[2]));
msg.put("sendTime", new Date());
msg.put("version", "1.0");
msg.put("total", data.size());
msg.put("data", data);
if (isUpload) {
String result = "";
try {
result = relay("", JSON.toJSONString(msg), null, syncIp);
} catch (Exception ex) {
}
if (IDCUtils.isJson(result)) {
JSONObject json = JSON.parseObject(result);
if (json.getInteger("code") == 20000) {
saveIdcLog(tnames[9], "", tnames[2] + ">success(delete)", i * limit, total);
} else {
success = false;
saveIdcLog(tnames[9], "", tnames[2] + ">" + result, i * limit, total);
}
} else {
success = false;
saveIdcLog(tnames[9], "", syncIp + ":" + tnames[2] + ">fail:上传地址未连通", i * limit, total);
}
} else {
saveIdcLog(tnames[9], "", tnames[2] + ">success(delete)", i * limit, total);
}
syncAddTaskStatus(msg, isUpload ? 1 : 0, true, startTime, isUpload,success);
}
}
}
}
/*单独表调用tableName可只传表名如传完整参数按SYNCS_TABLES格式*/
@Override
@ -351,11 +492,11 @@ public class IdcServiceImpl implements IdcService {
} else {
success = false;
}
syncAddTaskStatus(json.getJSONObject("data"), 3, success, startTime, true);
syncAddTaskStatus(json.getJSONObject("data"), 3, true, startTime, true,success);
} else {
if (json.get("code") != null && json.get("data") != null) {
//logger.info("res1-->"+JSON.toJSONString(json));
syncAddTaskStatus(json.getJSONObject("data"), 0, success, startTime, true);
syncAddTaskStatus(json.getJSONObject("data"), 0, true, startTime, true,success);
analyMiddle(host, json.getJSONObject("data"), files, false, false);
}
}
@ -443,7 +584,7 @@ public class IdcServiceImpl implements IdcService {
boolean success = false;
if (isLastLevel()) {
success = analyMiddle("", json, files, true, true);
syncAddTaskStatus(json, 3, success, startTime, true);
syncAddTaskStatus(json, 3, true, startTime, true,success);
if (!success) {
return ResultVOUtils.error(9000, "解析失败");
@ -454,11 +595,11 @@ public class IdcServiceImpl implements IdcService {
String host = getNextHost();
String result = relay(request.getHeader("reqNo"), content, saveFiles, host);
if (IDCUtils.isJson(result)) {
syncAddTaskStatus(json, 2, true, startTime, true);
syncAddTaskStatus(json, 2, true, startTime, true,true);
BaseResponse object = JSON.parseObject(result, BaseResponse.class);
return object;
} else {
syncAddTaskStatus(json, 2, false, startTime, false);
syncAddTaskStatus(json, 2, true, startTime, false,false);
return ResultVOUtils.error(9000, "转发失败");
}
@ -518,9 +659,6 @@ public class IdcServiceImpl implements IdcService {
private void saveExportStatus(Map<String, Object> params) {
Map<String, Object> map = new HashMap<String, Object>();
map.putAll(params);
map.put("receiveStatus", "0");
Map<String, Object> columns = getColumn("basic_export_status");
String sql = "replace basic_export_status " + DBAUtils.parseInsert(map, columns);
@ -529,7 +667,6 @@ public class IdcServiceImpl implements IdcService {
private void saveDownloadStatus(Map<String, Object> params) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("receiveStatus", "0");
map.putAll(params);
Map<String, Object> columns = getColumn("basic_download_status");
@ -579,7 +716,7 @@ public class IdcServiceImpl implements IdcService {
Map<String, Object> whereParams = new HashMap<String, Object>();
whereParams.put("sqlWhere", params.get("sqlWhere"));
String dataWhere = params.get("dataWhere")!=null ? params.get("dataWhere").toString() : "";
Map<String, Object> map = new HashMap<String, Object>();
String where = DBAUtils.convertWhere(column, whereParams, dataWhere);
@ -689,7 +826,7 @@ public class IdcServiceImpl implements IdcService {
}
saveIdcLog(messageType, "", tableName + ">success", i * limit, total);
}
syncAddTaskStatus(data, isUpload ? 1 : 0, success, startTime, isUpload);
syncAddTaskStatus(data, isUpload ? 1 : 0, true, startTime, isUpload,success);
}
}
}
@ -701,7 +838,7 @@ public class IdcServiceImpl implements IdcService {
/*增加同步任务状态*/
private void syncAddTaskStatus(Map<String, Object> json, int scheduleType, boolean success, Date startTime,
boolean isEnd) {
boolean isEnd,boolean isReceive) {
try {
String content = JSON.toJSONString(json);
String datePath = DateUtil.formatDate(new Date(), "yyyy-MM-dd");
@ -726,7 +863,10 @@ public class IdcServiceImpl implements IdcService {
map.put("taskId", json.get("messageId"));
map.put("cacheFilePath", fileName);
map.put("status", success ? "1" : "0");
map.put("receiveStatus", isReceive ? "1" : "0");
map.put("startTime", startTime != null ? startTime : new Date());
if(isReceive)
map.put("endTime", new Date());
map.put("updateTime", new Date());
map.put("remark", json.get("messageType") + ": " + json.get("total") + "条");
if (isEnd)
@ -811,7 +951,7 @@ public class IdcServiceImpl implements IdcService {
private boolean analyToDB(String host, String tableName, String uniqueColumn, String
filePathColumn, List<Map<String, Object>> list, boolean isUpload) {
String tName = DBAUtils.tableRealName(tableName);
String sql = "replace " + tName + "(";
String del = "delete from " + tName + " where ";
@ -819,6 +959,7 @@ public class IdcServiceImpl implements IdcService {
String[] keyColumn = new String[30];
String[] keyDataType = new String[30];
List<Map<String, String>> columnList = dbDao.listColumnsMysql(tName);
Map<String,Object> column = getColumn(tName);
boolean result = false;
int key = 0;
int col = 0;
@ -856,15 +997,24 @@ public class IdcServiceImpl implements IdcService {
}
if ("A,D,U".contains(operateMode)) {
for (int z = 0; z < keyColumn.length; z++) {
if (list.get(i).get(keyColumn[z]) != null && !StringUtils.isEmpty(list.get(i).get(keyColumn[z]).toString())) {
if(operateMode.equals("D")&&list.get(i).get("uniqueColumn")!=null) {
String[] ucs = list.get(i).get("uniqueColumn").toString().split(",");
for(String str:ucs) {
Map<String,Object> map = (Map<String, Object>) column.get(str);
String dataType = map.get("dataType").toString();
updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " ";
String value = list.get(i).get(keyColumn[z]) != null ? list.get(i).get(keyColumn[z]).toString() : "";
value = keyDataType[z].equals("D") ? "cast('" + DateUtil.formatDate(IDCUtils.parseDate(value), "yyyy-MM-dd HH:mm:ss") + "' as datetime)" : value;
updateWhere += keyColumn[z] + " = " + (keyDataType[z].equals("C") ? "'" : "") + value + (keyDataType[z].equals("C") ? "'" : "");
updateWhere += str +" = "+(dataType.equals("C") ? "'" : "") + list.get(i).get(str) + (dataType.equals("C") ? "'" : "");
}
} else {
for (int z = 0; z < keyColumn.length; z++) {
if (list.get(i).get(keyColumn[z]) != null && !StringUtils.isEmpty(list.get(i).get(keyColumn[z]).toString())) {
updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " ";
String value = list.get(i).get(keyColumn[z]) != null ? list.get(i).get(keyColumn[z]).toString() : "";
value = keyDataType[z].equals("D") ? "cast('" + DateUtil.formatDate(IDCUtils.parseDate(value), "yyyy-MM-dd HH:mm:ss") + "' as datetime)" : value;
updateWhere += keyColumn[z] + " = " + (keyDataType[z].equals("C") ? "'" : "") + value + (keyDataType[z].equals("C") ? "'" : "");
}
}
}
if ("A,D".contains(operateMode) && !StringUtils.isEmpty(updateWhere))
dbDao.delete(del + updateWhere);
}
@ -1034,27 +1184,27 @@ public class IdcServiceImpl implements IdcService {
int total = 0;
if (result!=null&&result.isSuccessful()&&MediaType.parse("application/force-download").equals(result.body().contentType())) {
try (InputStream inputStream = result.body().byteStream()) {
FileOutputStream outputStream = new FileOutputStream(filePath + filePathSlash + imagePath+fileName);
byte b[] = new byte[1024];
int len = 0;
while ((len = inputStream.read(b)) != -1) {
total += len;
outputStream.write(b, 0, len);
}
outputStream.flush();
outputStream.close();
if(!(total>0)) {
new File(filePath + filePathSlash + imagePath+fileName).delete();
executeSql("delete from idc_file where filePath='"+fileName+"'");
}
FileOutputStream outputStream = new FileOutputStream(filePath + filePathSlash + imagePath+fileName);
byte b[] = new byte[1024];
int len = 0;
while ((len = inputStream.read(b)) != -1) {
total += len;
outputStream.write(b, 0, len);
}
outputStream.flush();
outputStream.close();
if(!(total>0)) {
new File(filePath + filePathSlash + imagePath+fileName).delete();
executeSql("delete from idc_file where filePath='"+fileName+"'");
}
} catch (Exception e) {
@ -1120,6 +1270,7 @@ public class IdcServiceImpl implements IdcService {
map.put("filePathColumn", params.get("filePathColumn"));
map.put("sendTime", new Date());
map.put("version", "1.0");
map.put("level", 0);
map.put("total", list.size());
map.put("data", list);
return map;
@ -1252,7 +1403,7 @@ public class IdcServiceImpl implements IdcService {
}
private void executeSql(String sql) {
try {
jdbcTemplate.execute(sql);
@ -1263,4 +1414,4 @@ public class IdcServiceImpl implements IdcService {
}
}
}

@ -298,6 +298,7 @@ public class BussinessTypeSaveRequest {
private boolean checkVailDate;
private boolean checkExpire;
private boolean checkCertExpire;
private String preInBackAction;
}

@ -0,0 +1,101 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class FilterInvPreinProductRequest extends ListPageRequest {
private String id;
/**
*
*/
private String cpmctymc;
/**
* DI
*/
private String nameCode;
/**
* UDI
*/
private String udiCode;
/**
* ID
*/
private String relIdFk;
/**
*
*/
private String ggxh;
/**
*
*/
private String batchNo;
/**
*
*/
private String productionDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String zczbhhzbapzbh;
/**
* ID
*/
private String customerId;
/**
* ID
*/
private String supId;
/**
*
*/
private String supName;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private List<String> invCodes;
/**
*
*/
private String cplb;
}

@ -147,5 +147,5 @@ public class BasicBussinessTypeResponse {
private boolean checkVailDate;
private boolean checkExpire;
private boolean checkCertExpire;
private String preInBackAction;
}

@ -1,10 +1,9 @@
package com.glxp.api.res.inv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
@Data
public class InvPreinDetailResponse {
@ -75,4 +74,71 @@ public class InvPreinDetailResponse {
private String fromName;
/**
*
*/
private String supId;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String invSpaceCode;
/**
*
*/
private Integer purchaseType;
/**
*
*/
private Date updateTime;
/**
*
*/
private String mainAction;
/**
*
*/
private String action;
/**
*
*/
private String actionName;
/**
*
*/
private String mainActionStr;
/**
*
*/
private Integer inCount;
/**
*
*/
private Integer outCount;
/**
*
*/
private String orderTime;
}

@ -0,0 +1,108 @@
package com.glxp.api.res.inv;
import lombok.Data;
/**
* VO
*/
@Data
public class InvPreinProductResponse {
private Integer id;
/**
* DI
*/
private String nameCode;
/**
*
*/
private String cpmctymc;
/**
* ID
*/
private String relIdFk;
/**
*
*/
private String ggxh;
/**
*
*/
private String batchNo;
/**
*
*/
private String productionDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String ylqxzcrbarmc;
/**
*
*/
private String zczbhhzbapzbh;
/**
*
*/
private int inCount;
/**
*
*/
private int outCount;
/**
*
*/
private int reCount;
/**
* ID
*/
private String customerId;
/**
*
*/
private String supName;
/**
* ID
*/
private String supId;
/**
*
*/
private String deptName;
/**
*
*/
private String invName;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
}

@ -0,0 +1,14 @@
package com.glxp.api.res.sync;
import lombok.Data;
import java.util.List;
@Data
public class BaseSyncResponse {
private String taskId;
private List<String> files;
private String updateTime;
}

@ -7,9 +7,8 @@ import lombok.Data;
import java.util.List;
@Data
public class SpsSyncBusOrderResponse {
public class SpsSyncBusOrderResponse extends BaseSyncResponse {
private String taskId;
private List<PurOrderEntity> purOrderEntities;
private List<PurOrderDetailEntity> purOrderDetailEntities;

@ -8,10 +8,9 @@ import lombok.Data;
import java.util.List;
@Data
public class SpsSyncBusResponse {
public class SpsSyncBusResponse extends BaseSyncResponse {
//同步任务ID
private String taskId;
private List<BasicBussinessTypeEntity> bussinessTypeEntities;
private List<BasicBusTypeChangeEntity> busTypeChangeEntities;
private List<ThrBusTypeOriginEntity> thrBusTypeOriginEntities;

@ -6,10 +6,8 @@ import lombok.Data;
import java.util.List;
@Data
public class SpsSyncDataResponse {
public class SpsSyncDataResponse extends BaseSyncResponse {
//同步任务ID
private String taskId;
//用户信息
List<AuthAdmin> authAdminList;

@ -6,16 +6,12 @@ import lombok.Data;
import java.util.List;
@Data
public class SpsSyncOrderResponse {
public class SpsSyncOrderResponse extends BaseSyncResponse {
//同步任务ID
private String taskId;
List<IoOrderEntity> orderEntities;
List<IoCodeEntity> codeEntities;
List<IoOrderDetailBizEntity> orderDetailBizEntities;
List<IoOrderDetailCodeEntity> orderDetailCodeEntities;
List<IoOrderDetailResultEntity> orderDetailResultEntities;
List<IoOrderInvoiceEntity> orderInvoiceEntities;
}

@ -1,6 +1,7 @@
package com.glxp.api.res.system;
import com.glxp.api.entity.sync.SyncDataBustypeEntity;
import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity;
import lombok.Data;
import java.util.List;
@ -8,43 +9,47 @@ import java.util.List;
@Data
public class SyncDataSetResponse {
private Integer id;
private boolean typeBus;
private boolean typeScan;
private boolean typeThird;
private boolean basicProducts;
private boolean basicCorp;
private boolean basicInv;
private boolean basicThirdProducts;
private boolean basicThirdCorp;
private boolean basicThirdInv;
private boolean basicThirdBusOrder;
private boolean basicType;
private boolean basicDept;
private boolean dbDiProducts;
private int typeBus; //0:不传输1:由内向外2:由外向内
private int typeScan;
private int typeThird;
private int basicProducts;
private int basicCorp;
private int basicInv;
private int basicDept;
private int basicThirdProducts;
private int basicThirdCorp;
private int basicThirdInv;
private int basicThirdBusOrder;
private int dbDiProducts;
private boolean downstreamEnable;
private boolean orderScanFinish;
private boolean orderUnReceive;
private boolean orderUnCheck;
private int orderScanFinish;
private int orderUnReceive;
private int orderUnCheck;
private Integer syncTime;
private String syncIp;
private Integer syncDownloadTime; //定时下载时间
private boolean sysUser;
private int sysUser;
private List<SyncDataBustypeEntity> busTypes;
private List<SyncDataBustypeEntity> busTypes; //UDI管理系统->SPMS单据类型
private List<SyncDataBustypeEntity> toInBusTypes; //SPMS->UDI管理系统单据类型
private List<SyncDataChangeBustypesEntity> changeBusTypes; //UDI管理系统->业务单据类型
private String orderSyncStart;
private String basicSyncStart;
private boolean entrustAction;
private Integer orderSyncTime;
private Integer orderSyncDlTime;
private int systemConfig;
private int entrustAction;
private int printConfig;
private int scanChangeConfig;
private int busChangeConfig;
private Integer orderSyncTime; //单据向外同步时间
private Integer orderToInSyncTime; //单据向内同步时间
private Integer orderSyncDlTime; //单据向外下载时间
private Integer delaySyncTime;
private int supCert;
private boolean unCheckCert;
private boolean checkedCert;
private boolean companyCert;
private boolean manufacturerCert;
private boolean productCert;
private int unCheckCert;
private int checkedCert;
private int companyCert;
private int manufacturerCert;
private int productCert;
}

@ -209,13 +209,17 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService
switch (vueType) {
case Constant.ORDER_ACTION_NOR_DETAIL:
bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper<BasicBussinessTypeEntity>()
.eq("actionType", 1).eq("inStock", true));
.eq("actionType", 1).eq("inStock", true).eq("enable", true));
break;
case Constant.ORDER_ACTION_PRE_DETAIL:
bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper<BasicBussinessTypeEntity>()
.eq("actionType", 3).eq("inStock", true).eq("enable", true));
break;
case Constant.ORDER_ACTION_PREIN_DETAIL:
bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper<BasicBussinessTypeEntity>()
.eq("actionType", 2).eq("inStock", true).eq("enable", true));
break;
case Constant.ORDER_ACTION_SUP_DELIVERY:
//允许送货单直接入库变更库存,则不判断送货单是否入库
String deliveryInstock = systemParamConfigService.selectValueByParamKey("deliveryInstock");

@ -218,11 +218,7 @@ public class IoChangeInoutService {
outOrder.setInvCode(invWarehouseEntity.getCode());
outOrder.setDeptCode(invWarehouseEntity.getParentId());
SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("additional_auto_submit");
if ("1".equals(systemParamConfigEntity.getParamValue())) {
outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
} else {
outOrder.setStatus(ConstantStatus.ORDER_STATUS_ADDITIONAL);
}
outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
//互填单号
orderEntity.setUllageSupNo(outOrder.getBillNo());

@ -2,13 +2,16 @@ package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.res.inout.IoOrderCheckResultResponse;
import com.glxp.api.res.inout.IoOrderDetailBizResponse;
@ -16,18 +19,26 @@ import com.glxp.api.res.inout.IoOrderDetailCodeResponse;
import com.glxp.api.service.basic.IBasicBussinessTypeService;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.service.inv.InvPreinOrderService;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.JasperUtils;
import com.glxp.api.util.OrderNoTypeBean;
import com.glxp.api.util.udi.FilterUdiUtils;
import net.sf.jasperreports.engine.JRException;
import org.springframework.beans.BeanUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
/**
*
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class IoCheckInoutService {
@Resource
@ -48,6 +59,8 @@ public class IoCheckInoutService {
InvPreinDetailService invPreinDetailService;
@Resource
IoGenInvService genInvService;
@Resource
IoAddInoutService addInoutService;
//判断是否需要手动校验
public boolean checkManual(String billNo) {
@ -722,93 +735,172 @@ public class IoCheckInoutService {
//校验完成后生成库存
public void genInv(IoOrderEntity orderEntity, BasicBussinessTypeEntity bussinessTypeEntity) {
//预验收出库,删掉对应预验收库存
if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) {
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
//找出UDI码对应的预验收入库单号
Map<String, String> preInOrder = new HashMap<>();
for (IoCodeEntity warehouseEntity : codeList) {
List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode());
if (invProductDetailEntities.size() > 0) {
for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities) {
preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId());
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_USE);
invPreinDetailService.update(invPreinDetailEntity);
}
ThreadUtil.execAsync(() -> {
List<IoCodeEntity> codeList = codeService.findByOrderId(orderEntity.getBillNo());
//找出UDI码对应的预验收入库单号
Map<String, String> preInOrder = new HashMap<>();
for (IoCodeEntity warehouseEntity : codeList) {
List<InvPreinDetailEntity> invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode());
if (invProductDetailEntities.size() > 0) {
for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities)
preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId());
}
}
}
if (preInOrder.size() > 0) {
if (StrUtil.isEmpty(orderEntity.getRelKey())) {
orderEntity.setRelKey(UUID.fastUUID().toString(true));
}
String preInBillNo = "";
boolean isBreak = false;
for (String key : preInOrder.keySet()) {
if (!isBreak) {
preInBillNo = preInBillNo + "," + key;
IoOrderEntity preInEntity = orderService.findByBillNo(key);
preInEntity.setPreOutBillNo(orderEntity.getBillNo());
preInEntity.setRelKey(orderEntity.getRelKey());
orderService.update(preInEntity);
BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction());
//预验收不删除单号,方便后续查询
if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存;
invPreinDetailService.updateBack(preInEntity.getBillNo());
// invPreinDetailService.deleteByOrderId(preInEntity.getBillNo());
} else { //预验收如果不带回,则清除已出库相关库存
for (IoCodeEntity codeEntity : codeList) {
if (StrUtil.isEmpty(codeEntity.getSerialNo())) {
InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode());
if (invPreinDetailEntity != null) {
int count = 0;
if (invPreinDetailEntity.getCount() < codeEntity.getCount()) {
count = 0;
} else {
count = invPreinDetailEntity.getCount() - codeEntity.getCount();
}
if (count >= 0) {
isBreak = true;
if (count == 0) {
// invPreinDetailService.deleteByCode(key, codeEntity.getCode());
if (preInOrder.size() > 0) {
String preInBillNo = "";
boolean isBreak = false;
List<IoCodeEntity> backCodeList = new ArrayList<>();
for (String key : preInOrder.keySet()) {
if (!isBreak) {
preInBillNo = preInBillNo + "," + key;
IoOrderEntity preInEntity = orderService.findByBillNo(key);
preInEntity.setPreOutBillNo(orderEntity.getBillNo());
orderService.update(preInEntity);
BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction());
//预验收不删除单号,方便后续查询
if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存;
invPreinDetailService.deleteByOrderId(preInEntity.getBillNo());
//剩余UDI码生成退货单 todo
List<IoCodeEntity> codeEntities = codeService.findByOrderId(preInBillNo);
backCodeList.addAll(codeEntities);
} else { //预验收如果不带回,则清除已出库相关库存
for (IoCodeEntity codeEntity : codeList) {
if (StrUtil.isEmpty(codeEntity.getSerialNo())) {
InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode());
if (invPreinDetailEntity != null) {
int count = 0;
if (invPreinDetailEntity.getCount() < codeEntity.getCount()) {
count = 0;
} else {
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN);
invPreinDetailEntity.setCount(count);
invPreinDetailService.update(invPreinDetailEntity);
count = invPreinDetailEntity.getCount() - codeEntity.getCount();
}
int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount();
if (reCount == 0) {
// invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN);
invPreinDetailEntity.setReCount(reCount);
invPreinDetailService.update(invPreinDetailEntity);
if (count >= 0) {
isBreak = true;
if (count == 0) {
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setCount(count);
invPreinDetailService.update(invPreinDetailEntity);
}
int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount();
if (reCount == 0) {
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
} else {
invPreinDetailEntity.setReCount(reCount);
invPreinDetailService.update(invPreinDetailEntity);
}
}
}
} else {
invPreinDetailService.deleteByCode(key, codeEntity.getCode());
}
}
}
}
}
orderEntity.setPreInBillNo(preInBillNo.substring(1));
orderService.update(orderEntity);
//生成退货单 1.查出所有关联的单据条码2.扣减当前出库数量3.生成单据类型对应绑定的出库单
if (CollUtil.isNotEmpty(backCodeList)) {
List<IoCodeEntity> realBackCodeList = new ArrayList<>();
for (IoCodeEntity backCodeEntity : backCodeList) {
for (IoCodeEntity codeEntity : codeList) {
if (codeEntity.getCount() != 0 && backCodeEntity.getCode().equals(codeEntity.getCode())) {
int count = backCodeEntity.getCount() - codeEntity.getCount();
int reCount = backCodeEntity.getReCount() - codeEntity.getReCount();
if (count > 0) {
codeEntity.setCount(0);
codeEntity.setReCount(0);
backCodeEntity.setCount(count);
backCodeEntity.setReCount(reCount);
realBackCodeList.add(backCodeEntity);
} else if (count == 0) {
codeEntity.setCount(0);
codeEntity.setReCount(0);
} else if (count < 0) {
codeEntity.setCount(-count);
codeEntity.setReCount(-reCount);
}
}
}
} else {
// invPreinDetailService.deleteByCode(key, codeEntity.getCode());
}
if (CollUtil.isNotEmpty(realBackCodeList)) {
Map<String, List<IoCodeEntity>> backPreInOrder = new HashMap<>();
for (IoCodeEntity codeEntity : codeList) {
List<IoCodeEntity> codeEntities = backPreInOrder.get(codeEntity.getOrderId());
if (CollUtil.isEmpty(codeEntities)) {
codeEntities = new ArrayList<>();
}
codeEntities.add(codeEntity);
backPreInOrder.put(codeEntity.getOrderId(), codeEntities);
}
for (String key : backPreInOrder.keySet()) {
IoOrderEntity originOrder = orderService.findByBillNo(key);
BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeService.findByAction(originOrder.getAction());
if (StrUtil.isNotEmpty(basicBussinessTypeEntity.getPreInBackAction())) {
IoOrderEntity outOrder = new IoOrderEntity();
BeanUtils.copyProperties(originOrder, outOrder);
outOrder.setId(null);
outOrder.setMainAction(ConstantType.TYPE_OUT);
outOrder.setAction(basicBussinessTypeEntity.getAction());
outOrder.setCreateTime(new Date());
outOrder.setFromType(ConstantStatus.FROM_CHANGE);
String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(basicBussinessTypeEntity.getPrefix()), "yyyyMMdd"));
outOrder.setBillNo(orderNo);
outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID);
outOrder.setCorpOrderId(CustomUtil.getId() + "x");
outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS);
originOrder.setUllageSupNo(outOrder.getBillNo());
originOrder.setUpdateTime(new Date());
orderService.update(originOrder);
outOrder.setOriginUllageSupNo(originOrder.getBillNo());
outOrder.setCreateUser(null);
outOrder.setReviewUser(null);
orderService.insertOrder(outOrder);
//生成条码
List<IoCodeTempEntity> codeTempEntities = new ArrayList<>();
for (IoCodeEntity warehouseEntity : backPreInOrder.get(key)) {
IoCodeTempEntity codeTempEntity = new IoCodeTempEntity();
BeanUtils.copyProperties(warehouseEntity, codeTempEntity);
codeTempEntity.setId(null);
codeTempEntity.setOrderId(outOrder.getBillNo());
codeTempEntity.setAction(outOrder.getAction());
codeTempEntity.setMainAction(outOrder.getMainAction());
codeTempEntity.setCreateTime(new Date());
codeTempEntity.setUpdateTime(new Date());
codeTempEntities.add(codeTempEntity);
}
codeTempService.insertBatch(codeTempEntities);
addInoutService.dealProcess(outOrder);
if (!checkManual(outOrder.getBillNo())) {
check(outOrder.getBillNo());
}
}
}
}
}
}
}
orderEntity.setPreInBillNo(preInBillNo.substring(1));
orderService.update(orderEntity);
}
});
}
//校验是否是不入库存单据
if (bussinessTypeEntity.isInStock()) {
// if (bussinessTypeEntity.getBusType() == ConstantStatus.BUS_TYPE_NORMAL) {
//生成库存
if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) {
genInvService.genPreInInv(orderEntity.getBillNo());
@ -825,6 +917,10 @@ public class IoCheckInoutService {
}
// 预验收使用出库处理1.不带回扣库存;2.带回时生成退货出库单
@Resource
GennerOrderUtils gennerOrderUtils;
public String checkId(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) {

@ -119,6 +119,8 @@ public class IoGenInvService {
InvPreProductService invPreProductService;
@Resource
InvPreProductDetailService invPreProductDetailService;
@Resource
InvPreinProductDetailService invPreinProductDetailService;
//生成寄售库存
public void genPreInv(String orderId) {
@ -171,27 +173,78 @@ public class IoGenInvService {
}
@Resource
InvPreinProductService invPreinProductService;
//生成预验收库存
public void genPreInInv(String orderId) {
//入库预验收进入到实际在库码表
IoOrderEntity orderEntity = orderService.findByBillNo(orderId);
InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity();
BeanUtils.copyProperties(orderEntity, invPreinOrderEntity);
invPreinOrderService.insert(invPreinOrderEntity);
if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity();
BeanUtils.copyProperties(orderEntity, invPreinOrderEntity);
invPreinOrderService.insert(invPreinOrderEntity);
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderId);
List<InvPreinDetailEntity> invPreinDetailEntities = new ArrayList<>();
codeEnttities.forEach(codeEntity ->
{
InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity();
BeanUtils.copyProperties(codeEntity, invPreinDetailEntity);
invPreinDetailEntity.setId(null);
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN);
invPreinDetailEntity.setOriginCount(codeEntity.getCount());
invPreinDetailEntity.setOriginReCount(codeEntity.getReCount());
invPreinDetailEntities.add(invPreinDetailEntity);
});
invPreinDetailService.insertList(invPreinDetailEntities);
}
//走正常流程,生成对应库存
// 生成库存产品信息表
List<IoOrderDetailResultEntity> orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId);
//生成库存产品表
for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) {
InvPreinProductEntity invProductEntity = invPreinProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode());
if (invProductEntity == null) {
invProductEntity = new InvPreinProductEntity();
invProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk());
invProductEntity.setNameCode(orderDetailResultEntity.getNameCode());
invProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo());
invProductEntity.setProductionDate(orderDetailResultEntity.getProductDate());
invProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate());
invProductEntity.setInCount(0);
invProductEntity.setOutCount(0);
invProductEntity.setSupId(orderDetailResultEntity.getSupId());
invProductEntity.setDeptCode(orderEntity.getDeptCode());
invProductEntity.setInvCode(orderEntity.getInvCode());
invProductEntity.setCreateTime(new Date());
invProductEntity.setUpdateTime(new Date());
invPreinProductService.insert(invProductEntity);
}
if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
invProductEntity.setOutCount(invProductEntity.getOutCount() + orderDetailResultEntity.getReCount());
} else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount());
}
invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount());
invProductEntity.setUpdateTime(new Date());
invPreinProductService.update(invProductEntity);
}
List<IoCodeEntity> codeEnttities = codeService.findByOrderId(orderId);
List<InvPreinDetailEntity> invPreinDetailEntities = new ArrayList<>();
codeEnttities.forEach(codeEntity ->
{
InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity();
BeanUtils.copyProperties(codeEntity, invPreinDetailEntity);
invPreinDetailEntity.setId(null);
invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN);
invPreinDetailEntity.setOriginCount(codeEntity.getCount());
invPreinDetailEntity.setOriginReCount(codeEntity.getReCount());
invPreinDetailEntities.add(invPreinDetailEntity);
});
invPreinDetailService.insertList(invPreinDetailEntities);
//生成库存码详情
List<InvPreInProductDetailEntity> invProductDetailEntities = new ArrayList<>();
for (IoCodeEntity codeEntity : codeEnttities) {
InvPreInProductDetailEntity invProductDetailEntity = new InvPreInProductDetailEntity();
BeanUtils.copyProperties(codeEntity, invProductDetailEntity);
invProductDetailEntity.setRelId(codeEntity.getRelId());
invProductDetailEntity.setUpdateTime(new Date());
invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON);
invProductDetailEntities.add(invProductDetailEntity);
}
invPreinProductDetailService.insertList(invProductDetailEntities);
}

@ -1,8 +1,12 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.req.inv.FilterInvPreinRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.res.inv.InvPreinOrderResponse;
@ -36,4 +40,5 @@ public interface InvPreinDetailService {
int updateBack(String orderId);
int findCountByCode(String code);
}

@ -0,0 +1,53 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import java.util.List;
/**
* Service
*/
public interface InvPreinProductDetailService {
int insert(InvPreInProductDetailEntity invPreInProductDetailEntity);
boolean insertList(List<InvPreInProductDetailEntity> invPreProductDetailEntities);
List<InvPreInProductDetailEntity> selectByOrderIdFk(String billNo);
InvPreInProductDetailEntity selectByCode(String billNo, String code);
boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity);
boolean deleteById(String id);
int deleteByOrderId(String billNo);
/**
*
*
* @param invPreProductDetailRequest
* @return
*/
List<InvPreInProductDetailEntity> filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest);
/**
*
*
* @param response
*/
void setOrderInfo(InvPreProductDetailResponse response);
/**
*
*
* @param detailRequest
*/
boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest);
}

@ -0,0 +1,49 @@
package com.glxp.api.service.inv;
import com.glxp.api.entity.inv.InvPreinProductEntity;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreinProductResponse;
import java.util.List;
/**
* Service
*/
public interface InvPreinProductService {
int insert(InvPreinProductEntity invPreinProductEntity);
boolean update(InvPreinProductEntity invPreinProductEntity);
InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode);
boolean deleteById(Integer id);
/**
* VO
*
* @param filterInvPreinDetailRequest
* @return
*/
List<InvPreinProductResponse> filterList(FilterInvPreinProductRequest filterInvPreinDetailRequest);
/**
*
*
* @param invPreProductRequest
* @return
*/
List<InvPreinProductEntity> filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest);
/**
* ID
*
* @param id
* @return
*/
InvPreinProductEntity findById(String id);
boolean isExitByRelId(String relId);
}

@ -0,0 +1,135 @@
package com.glxp.api.service.inv.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.basic.BasicBussinessTypeDao;
import com.glxp.api.dao.basic.UdiProductDao;
import com.glxp.api.dao.inout.IoOrderDao;
import com.glxp.api.dao.inv.InvPreInProductDetailDao;
import com.glxp.api.dao.inv.InvPreProductDetailDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvPreInProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvProductDetailRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.service.inv.InvPreProductDetailService;
import com.glxp.api.service.inv.InvPreinProductDetailService;
import com.glxp.api.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvPreInProductDetailServiceImpl implements InvPreinProductDetailService {
@Resource
private InvPreInProductDetailDao invPreInProductDetailDao;
@Resource
private BasicBussinessTypeDao bussinessTypeDao;
@Resource
private IoOrderDao orderDao;
@Resource
private UdiProductDao udiProductDao;
@Override
public int insert(InvPreInProductDetailEntity invPreInProductDetailEntity) {
return invPreInProductDetailDao.insert(invPreInProductDetailEntity);
}
@Override
public boolean insertList(List<InvPreInProductDetailEntity> invPreProductDetailEntities) {
return invPreInProductDetailDao.insertBatch(invPreProductDetailEntities);
}
@Override
public List<InvPreInProductDetailEntity> selectByOrderIdFk(String billNo) {
if (StrUtil.isEmpty(billNo))
return null;
List<InvPreInProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.selectList(new QueryWrapper<InvPreInProductDetailEntity>().eq("orderId", billNo));
return invProductDetailEntities;
}
@Override
public InvPreInProductDetailEntity selectByCode(String billNo, String code) {
List<InvPreInProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.selectList
(new QueryWrapper<InvPreInProductDetailEntity>().eq("code", code).eq("orderId", billNo));
if (CollUtil.isNotEmpty(invProductDetailEntities))
return invProductDetailEntities.get(0);
else
return null;
}
@Override
public boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity) {
return invPreInProductDetailDao.updateById(invPreInProductDetailEntity) == 1 ? true : false;
}
@Override
public boolean deleteById(String id) {
return invPreInProductDetailDao.deleteById(id) == 1 ? true : false;
}
@Override
public int deleteByOrderId(String billNo) {
return invPreInProductDetailDao.delete(new QueryWrapper<InvPreInProductDetailEntity>().eq("orderId", billNo));
}
@Override
public List<InvPreInProductDetailEntity> filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest) {
if (null == invPreProductDetailRequest) {
return Collections.emptyList();
}
if (null != invPreProductDetailRequest.getPage() && null != invPreProductDetailRequest.getLimit()) {
PageHelper.offsetPage((invPreProductDetailRequest.getPage() - 1) * invPreProductDetailRequest.getLimit(), invPreProductDetailRequest.getLimit());
}
return invPreInProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest);
}
@Override
public void setOrderInfo(InvPreProductDetailResponse response) {
//查询DI层级根据DI层级设置数量取值
Integer packLevel = udiProductDao.selectPackLevel(response.getNameCode());
//设置出入库中文及出入库数量
if (null != packLevel && packLevel != 1) {
//多级包装
if (response.getMainAction().equals(ConstantType.TYPE_OUT)) {
response.setMainActionStr("出库");
response.setOutCount(response.getReCount());
} else {
response.setMainActionStr("入库");
response.setInCount(response.getReCount());
}
} else {
//单层包装
if (response.getMainAction().equals(ConstantType.TYPE_OUT)) {
response.setMainActionStr("出库");
response.setOutCount(response.getCount());
} else {
response.setMainActionStr("入库");
response.setInCount(response.getCount());
}
}
//设置单据类型名称
BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper<BasicBussinessTypeEntity>().select("name").eq("action", response.getAction()));
response.setActionName(busType.getName());
//设置单据日期
IoOrderEntity order = orderDao.selectOne(new QueryWrapper<IoOrderEntity>().select("createTime").eq("billNo", response.getOrderId()));
response.setOrderTime(DateUtil.toDateStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
}
@Override
public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) {
return invPreInProductDetailDao.deleteInvPreProductDetail(detailRequest);
}
}

@ -4,13 +4,21 @@ import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.constant.ConstantType;
import com.glxp.api.dao.inv.InvPreinDetailDao;
import com.glxp.api.dao.inv.InvPreinOrderDao;
import com.glxp.api.entity.basic.BasicBussinessTypeEntity;
import com.glxp.api.entity.inout.IoOrderEntity;
import com.glxp.api.entity.inv.InvPreProductDetailEntity;
import com.glxp.api.entity.inv.InvPreinDetailEntity;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.req.inv.FilterInvPreProductDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinDetailRequest;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreProductDetailResponse;
import com.glxp.api.res.inv.InvPreinDetailResponse;
import com.glxp.api.service.inv.InvPreinDetailService;
import com.glxp.api.util.DateUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -60,15 +68,6 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService {
public List<InvPreinDetailEntity> findByCode(String code) {
return invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("code", code));
}
//
// @Override
// public InvPreinDetailEntity findOneByCode(String code) {
// List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("code", code).last("limit 1"));
// if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
// return invPreinDetailEntities.get(0);
// }
// return null;
// }
@Override
public int deleteByOrderId(String orderId) {
@ -110,5 +109,21 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService {
return 1;
}
@Override
public int findCountByCode(String code) {
List<InvPreinDetailEntity> invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper<InvPreinDetailEntity>().eq("code", code));
int count = 0;
if (CollUtil.isNotEmpty(invPreinDetailEntities)) {
for (InvPreinDetailEntity invProductDetailEntity : invPreinDetailEntities) {
if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT))
count = count + invProductDetailEntity.getReCount();
else {
count = count - invProductDetailEntity.getReCount();
}
}
}
return count;
}
}

@ -0,0 +1,83 @@
package com.glxp.api.service.inv.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.inv.InvPreinProductDao;
import com.glxp.api.entity.inv.InvPreinProductEntity;
import com.glxp.api.req.inv.FilterInvPreinProductRequest;
import com.glxp.api.res.inv.InvPreinProductResponse;
import com.glxp.api.service.inv.InvPreinProductService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvPreinProductServiceImpl implements InvPreinProductService {
@Resource
private InvPreinProductDao invPreinProductDao;
@Override
public int insert(InvPreinProductEntity invPreinProductEntity) {
return invPreinProductDao.insert(invPreinProductEntity);
}
@Override
public boolean update(InvPreinProductEntity invPreinProductEntity) {
return invPreinProductDao.updateById(invPreinProductEntity) == 1 ? true : false;
}
@Override
public InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode) {
return invPreinProductDao.selectOne(new QueryWrapper<InvPreinProductEntity>().eq("relIdFk", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo)
.isNull(StrUtil.isEmpty(batchNo), "batchNo").eq("supId", supId).eq("deptCode", deptCode).eq("invCode", invCode));
}
@Override
public boolean deleteById(Integer id) {
return invPreinProductDao.deleteById(id) == 1 ? true : false;
}
@Override
public List<InvPreinProductResponse> filterList(FilterInvPreinProductRequest invPreProductRequest) {
if (null == invPreProductRequest) {
return Collections.emptyList();
}
if (null != invPreProductRequest.getPage()) {
PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit());
}
return invPreinProductDao.filterList(invPreProductRequest);
}
@Override
public List<InvPreinProductEntity> filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest) {
if (null == invPreProductRequest) {
return Collections.emptyList();
}
if (null != invPreProductRequest.getPage() && null != invPreProductRequest.getLimit()) {
PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit());
}
return invPreinProductDao.filterPreProductList(invPreProductRequest);
}
@Override
public InvPreinProductEntity findById(String id) {
return invPreinProductDao.selectById(id);
}
@Override
public boolean isExitByRelId(String relId) {
return invPreinProductDao.exists(new QueryWrapper<InvPreinProductEntity>().eq("relIdFk", relId));
}
}

@ -103,6 +103,7 @@ public class SpsSyncDownloadService {
List<IoOrderDetailCodeEntity> orderDetailCodeEntities = new ArrayList<>();
List<IoOrderDetailResultEntity> orderDetailResultEntities = new ArrayList<>();
List<IoOrderInvoiceEntity> orderInvoiceEntities = new ArrayList<>();
List<String> syncFiles = new ArrayList<>();
if (CollUtil.isNotEmpty(orderEntities)) {
for (IoOrderEntity orderEntity : orderEntities) {
@ -114,6 +115,11 @@ public class SpsSyncDownloadService {
List<IoOrderDetailBizEntity> bizEntities = orderDetailBizService.findByOrderId(orderEntity.getBillNo());
if (CollUtil.isNotEmpty(bizEntities)) {
orderDetailBizEntities.addAll(bizEntities);
for (IoOrderDetailBizEntity bizEntity : bizEntities) {
if (StrUtil.isNotEmpty(bizEntity.getCheckFileName())) {
syncFiles.add(bizEntity.getCheckFileName());
}
}
}
@ -130,11 +136,21 @@ public class SpsSyncDownloadService {
List<IoOrderInvoiceEntity> invoiceEntities = orderInvoiceService.findByBillNo(orderEntity.getBillNo());
if (CollUtil.isNotEmpty(invoiceEntities)) {
for (IoOrderInvoiceEntity orderInvoiceEntity : invoiceEntities) {
if (StrUtil.isNotEmpty(orderInvoiceEntity.getLicenseUrl())) {
syncFiles.add(orderInvoiceEntity.getLicenseUrl());
}
}
orderInvoiceEntities.addAll(invoiceEntities);
}
}
}
syncOrderResponse.setFiles(syncFiles);
syncOrderResponse.setCodeEntities(codeEntities);
syncOrderResponse.setOrderDetailBizEntities(orderDetailBizEntities);
syncOrderResponse.setOrderDetailCodeEntities(orderDetailCodeEntities);

@ -7,9 +7,9 @@ import java.util.List;
public interface SyncDataBustypeService {
List<SyncDataBustypeEntity> findAll();
List<SyncDataBustypeEntity> findAll(Integer direct);
boolean deleteAll();
boolean deleteAll(Integer direct);
void inserts(List<SyncDataBustypeEntity> syncDataBustypeEntities);

@ -0,0 +1,19 @@
package com.glxp.api.service.sync;
import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity;
import java.util.List;
/**
* - Service
*/
public interface SyncDataChangeBustypeService {
List<SyncDataChangeBustypesEntity> findAll();
boolean deleteAll();
void inserts(List<SyncDataChangeBustypesEntity> syncDataChangeBustypesEntities);
}

@ -1,5 +1,6 @@
package com.glxp.api.service.sync.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.glxp.api.dao.system.SyncDataBustypeDao;
import com.glxp.api.entity.sync.SyncDataBustypeEntity;
import com.glxp.api.service.sync.SyncDataBustypeService;
@ -13,17 +14,18 @@ import java.util.List;
@Transactional(rollbackFor = Exception.class)
public class SyncDataBustypeServiceImpl implements SyncDataBustypeService {
@Resource
SyncDataBustypeDao syncDataBustypeDao;
@Override
public List<SyncDataBustypeEntity> findAll() {
return syncDataBustypeDao.findAll();
public List<SyncDataBustypeEntity> findAll(Integer direct) {
return syncDataBustypeDao.selectList(new QueryWrapper<SyncDataBustypeEntity>().eq("direct", direct));
}
@Override
public boolean deleteAll() {
return syncDataBustypeDao.deleteAll();
public boolean deleteAll(Integer direct) {
return syncDataBustypeDao.delete(new QueryWrapper<SyncDataBustypeEntity>().eq("direct", direct)) > 0 ? true : false;
}
@Override

@ -0,0 +1,44 @@
package com.glxp.api.service.sync.impl;
import cn.hutool.core.collection.CollUtil;
import com.glxp.api.dao.sync.SyncDataChangeBustypesDao;
import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity;
import com.glxp.api.service.sync.SyncDataChangeBustypeService;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.TransactionIsolationLevel;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Service
@Transactional(rollbackFor = Exception.class)
public class SyncDataChangeBustypeServiceImpl implements SyncDataChangeBustypeService {
@Resource
private SyncDataChangeBustypesDao syncDataChangeBustypesDao;
@Resource
private SqlSessionFactory sqlSessionFactory;
@Override
public List<SyncDataChangeBustypesEntity> findAll() {
return syncDataChangeBustypesDao.selectList(null);
}
@Override
public boolean deleteAll() {
syncDataChangeBustypesDao.delete(null);
return true;
}
@Override
public void inserts(List<SyncDataChangeBustypesEntity> syncDataChangeBustypesEntities) {
if (CollUtil.isNotEmpty(syncDataChangeBustypesEntities)) {
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED);
syncDataChangeBustypesEntities.forEach(item -> syncDataChangeBustypesDao.insert(item));
}
}
}

@ -2,9 +2,11 @@ package com.glxp.api.service.sync.impl;
import com.glxp.api.dao.sync.SyncDataSetDao;
import com.glxp.api.entity.sync.SyncDataBustypeEntity;
import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity;
import com.glxp.api.entity.sync.SyncDataSetEntity;
import com.glxp.api.res.system.SyncDataSetResponse;
import com.glxp.api.service.sync.SyncDataBustypeService;
import com.glxp.api.service.sync.SyncDataChangeBustypeService;
import com.glxp.api.service.sync.SyncDataSetService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -21,6 +23,8 @@ public class SyncDataSetServiceImpl implements SyncDataSetService {
SyncDataSetDao syncDataSetDao;
@Resource
SyncDataBustypeService syncDataBustypeService;
@Resource
private SyncDataChangeBustypeService syncDataChangeBustypeService;
@Override
public SyncDataSetEntity findSet() {
@ -33,8 +37,12 @@ public class SyncDataSetServiceImpl implements SyncDataSetService {
SyncDataSetEntity syncDataSetEntity = syncDataSetDao.selectSet();
SyncDataSetResponse syncDataSetResponse = new SyncDataSetResponse();
BeanUtils.copyProperties(syncDataSetEntity, syncDataSetResponse);
List<SyncDataBustypeEntity> syncDataBustypeEntities = syncDataBustypeService.findAll();
List<SyncDataBustypeEntity> syncDataBustypeEntities = syncDataBustypeService.findAll(1);
List<SyncDataBustypeEntity> syncDataToInBustypeEntities = syncDataBustypeService.findAll(2);
List<SyncDataChangeBustypesEntity> changeBustypesEntities = syncDataChangeBustypeService.findAll();
syncDataSetResponse.setBusTypes(syncDataBustypeEntities);
syncDataSetResponse.setChangeBusTypes(changeBustypesEntities);
syncDataSetResponse.setToInBusTypes(syncDataToInBustypeEntities);
return syncDataSetResponse;
}

@ -0,0 +1,53 @@
server:
port: 9993
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
hikari:
connection-timeout: 60000
maximum-pool-size: 60
minimum-idle: 10
redis:
database: 10
host: 127.0.0.1
port: 6379
# password: 123456
timeout: 300
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
ok:
http:
connect-timeout: 3000
read-timeout: 3000
write-timeout: 3000
max-idle-connections: 200
keep-alive-duration: 300
logging:
level:
com.glxp.api.dao: debug
file_path: d:/udi/udiwms/udiwmsfile/
back_file_path: d:/share/udisps/back/
UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df
UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test
SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs
API_KEY: 1101
API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L

@ -0,0 +1,53 @@
server:
port: 9993
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_ljy?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
hikari:
connection-timeout: 60000
maximum-pool-size: 60
minimum-idle: 10
redis:
database: 10
host: 127.0.0.1
port: 6404
# password: 123456
timeout: 300
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
ok:
http:
connect-timeout: 3000
read-timeout: 3000
write-timeout: 3000
max-idle-connections: 200
keep-alive-duration: 300
logging:
level:
com.glxp.api.dao: debug
file_path: /udi/udiwms/udiwmsfile/
back_file_path: /share/udisps/back/
UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df
UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test
SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs
API_KEY: 1101
API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L

@ -0,0 +1,53 @@
server:
port: 9993
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_ljy?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
hikari:
connection-timeout: 60000
maximum-pool-size: 60
minimum-idle: 10
redis:
database: 10
host: 127.0.0.1
port: 6404
# password: 123456
timeout: 300
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
ok:
http:
connect-timeout: 3000
read-timeout: 3000
write-timeout: 3000
max-idle-connections: 200
keep-alive-duration: 300
logging:
level:
com.glxp.api.dao: debug
file_path: /udi/udiwms/udiwmsfile/
back_file_path: /share/udisps/back/
UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df
UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test
SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs
API_KEY: 1101
API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L

@ -0,0 +1,53 @@
server:
port: 9993
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_wqq?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: Glxp@6066
hikari:
connection-timeout: 60000
maximum-pool-size: 60
minimum-idle: 10
redis:
database: 10
host: 127.0.0.1
port: 6405
# password: 123456
timeout: 300
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
ok:
http:
connect-timeout: 3000
read-timeout: 3000
write-timeout: 3000
max-idle-connections: 200
keep-alive-duration: 300
logging:
level:
com.glxp.api.dao: debug
file_path: /udi/udiwms/udiwmsfile/
back_file_path: /share/udisps/back/
UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df
UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test
SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs
API_KEY: 1101
API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L

@ -70,7 +70,7 @@
vailGroupBuy, busType, inStock, actionType, thrCheckEnable, thrCheckWebNew,
thrCheckPdaUn, thrCheckPdaEd, thrCheckUdims, thrCheckPc, thrCheckSp,
thrCheckChange, thrCheckBalance, thrCheckCopy, fillCodeRel, checkVailDate,
checkExpire, checkCertExpire)
checkExpire, checkCertExpire,preInBackAction)
values (#{mainAction}, #{action}, #{name}, #{enable}, #{remark}, #{thirdSysFk}, #{genUnit}, #{innerOrder},
#{secCheckEnable}, #{checkEnable}, #{checkUdims}, #{checkPdaEd}, #{checkPdaUn}, #{checkPc},
#{checkWebNew}, #{checkSp}, #{checkChange}, #{secCheckUdims}, #{secCheckPdaEd}, #{secCheckPdaUn},
@ -82,7 +82,7 @@
#{vailGroupBuy}, #{busType}, #{inStock}, #{actionType}, #{thrCheckEnable}, #{thrCheckWebNew},
#{thrCheckPdaUn}, #{thrCheckPdaEd}, #{thrCheckUdims}, #{thrCheckPc}, #{thrCheckSp},
#{thrCheckChange}, #{thrCheckBalance}, #{thrCheckCopy}, #{fillCodeRel}, #{checkVailDate},
#{checkExpire}, #{checkCertExpire})
#{checkExpire}, #{checkCertExpire},#{preInBackAction})
</insert>
<select id="selectBusList" resultType="com.glxp.api.entity.basic.BasicBussinessTypeEntity">

@ -0,0 +1,77 @@
<?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.inv.InvPreInProductDetailDao">
<select id="filterPreProductDetailList" resultType="com.glxp.api.entity.inv.InvPreInProductDetailEntity">
select *
from inv_prein_product_detail
<where>
<if test="code != null and code != ''">
AND code = #{code}
</if>
<if test="mainAction != null and mainAction != ''">
AND mainAction = #{mainAction}
</if>
<if test="action != null and action != ''">
AND action = #{action}
</if>
<if test="supId != null and supId != ''">
and supId = #{supId}
</if>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="nameCode != null and nameCode != ''">
AND nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="orderId != null and orderId != ''">
AND orderId = #{orderId}
</if>
<if test="deptCode != null and deptCode != ''">
AND deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == null and batchNo == ''">
AND batchNo is null
</if>
<if test="productIdList != null and productIdList.size() != 0">
AND relId in
<foreach collection="productIdList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="updateTime != null and updateTime != ''">
AND updateTime <![CDATA[ <= ]]> #{updateTime}
</if>
</where>
</select>
<delete id="deleteInvPreProductDetail">
delete
from inv_prein_product_detail
<where>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="batchNo != null and batchNo != '' and batchNo != 'empty'">
AND batchNo = #{batchNo}
</if>
<if test="batchNo == 'empty'">
AND batchNo is null
</if>
<if test="supId != null and supId != ''">
AND supId = #{supId}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
</where>
</delete>
</mapper>

@ -0,0 +1,138 @@
<?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.inv.InvPreinProductDao">
<select id="filterList" resultType="com.glxp.api.res.inv.InvPreinProductResponse">
select ipp.id,
ipp.nameCode,
bp.cpmctymc,
ipp.relIdFk,
bp.ggxh,
ipp.batchNo,
ipp.productionDate,
ipp.expireDate,
bp.ylqxzcrbarmc,
bp.zczbhhzbapzbh,
ipp.inCount,
ipp.outCount,
ipp.reCount,
ipp.customerId,
basic_corp.name supName,
ipp.supId,
auth_dept.name deptName,
auth_warehouse.name invName,
ipp.deptCode,
ipp.invCode
from inv_prein_product ipp
inner join basic_udirel on ipp.relIdFk = basic_udirel.id
inner join basic_products bp on basic_udirel.uuid = bp.uuid
left join basic_corp on ipp.supId = basic_corp.erpId
left join auth_dept on auth_dept.code = ipp.deptCode
left join auth_warehouse on auth_warehouse.code = ipp.invCode
<where>
bp.diType = 1
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="nameCode != null and nameCode != ''">
AND ipp.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="relIdFk != null and relIdFk != ''">
AND ipp.relIdFk = #{relIdFk}
</if>
<if test="ggxh != null and ggxh != ''">
AND bp.ggxh like concat('%', #{ggxh}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND ipp.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="productionDate != null and productionDate != ''">
AND ipp.productionDate = #{productionDate}
</if>
<if test="expireDate != null and expireDate != ''">
AND ipp.expireDate = #{expireDate}
</if>
<if test="ylqxzcrbarmc != null and ylqxzcrbarmc != ''">
AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%')
</if>
<if test="zczbhhzbapzbh != null and zczbhhzbapzbh != ''">
AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%')
</if>
<if test="customerId != null and customerId != ''">
AND ipp.customerId = #{customerId}
</if>
<if test="supId != null and supId != ''">
AND ipp.supId = #{supId}
</if>
<if test="deptCode != null and deptCode != ''">
AND ipp.deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND ipp.invCode = #{invCode}
</if>
<if test="invCodes != null and invCodes.size() != 0">
AND ipp.invCode in
<foreach collection="invCodes" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
<select id="filterPreProductList" resultType="com.glxp.api.entity.inv.InvPreinProductEntity">
select ipp.*
from inv_prein_product ipp
inner join basic_udirel on ipp.relIdFk = basic_udirel.id
inner join basic_products bp on basic_udirel.uuid = bp.uuid
left join basic_corp on ipp.supId = basic_corp.erpId
left join auth_dept on auth_dept.code = ipp.deptCode
left join auth_warehouse on auth_warehouse.code = ipp.invCode
<where>
bp.diType = 1
<if test="cpmctymc != null and cpmctymc != ''">
AND bp.cpmctymc like concat('%', #{cpmctymc}, '%')
</if>
<if test="nameCode != null and nameCode != ''">
AND ipp.nameCode like concat('%', #{nameCode}, '%')
</if>
<if test="relIdFk != null and relIdFk != ''">
AND ipp.relIdFk = #{relIdFk}
</if>
<if test="ggxh != null and ggxh != ''">
AND bp.ggxh like concat('%', #{ggxh}, '%')
</if>
<if test="batchNo != null and batchNo != ''">
AND ipp.batchNo like concat('%', #{batchNo}, '%')
</if>
<if test="productionDate != null and productionDate != ''">
AND ipp.productionDate = #{productionDate}
</if>
<if test="expireDate != null and expireDate != ''">
AND ipp.expireDate = #{expireDate}
</if>
<if test="ylqxzcrbarmc != null and ylqxzcrbarmc != ''">
AND bp.ylqxzcrbarmc like concat('%', #{ylqxzcrbarmc}, '%')
</if>
<if test="zczbhhzbapzbh != null and zczbhhzbapzbh != ''">
AND bp.zczbhhzbapzbh like concat('%', #{zczbhhzbapzbh}, '%')
</if>
<if test="customerId != null and customerId != ''">
AND ipp.customerId = #{customerId}
</if>
<if test="supId != null and supId != ''">
AND ipp.supId = #{supId}
</if>
<if test="deptCode != null and deptCode != ''">
AND ipp.deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND ipp.invCode = #{invCode}
</if>
<if test="invCodes != null and invCodes.size() != 0">
AND ipp.invCode in
<foreach collection="invCodes" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</where>
</select>
</mapper>

@ -0,0 +1,17 @@
<?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.sync.SyncDataChangeBustypesDao">
<resultMap id="BaseResultMap" type="com.glxp.api.entity.sync.SyncDataChangeBustypesEntity">
<!--@mbg.generated-->
<!--@Table sync_data_change_bustypes-->
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="action" jdbcType="VARCHAR" property="action"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<result column="outChange" jdbcType="TINYINT" property="outChange"/>
<result column="orderStatus" jdbcType="TINYINT" property="orderStatus"/>
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, `action`, `name`, outChange, orderStatus
</sql>
</mapper>

@ -2,8 +2,6 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.glxp.api.dao.system.SyncDataBustypeDao">
<select id="findAll"
resultType="com.glxp.api.entity.sync.SyncDataBustypeEntity">
SELECT *
@ -11,22 +9,15 @@
</select>
<delete id="deleteAll">
DELETE
FROM sync_data_bustypes
</delete>
<insert id="inserts" parameterType="com.glxp.api.entity.sync.SyncDataBustypeEntity">
insert INTO sync_data_bustypes
(`action`, `name`, outChange, orderStatus)
(`action`, `name`, outChange, orderStatus, direct)
values
<foreach collection="syncDataBustypeEntities" item="item" index="index"
separator=",">
(#{item.action}, #{item.name},
#{item.outChange},#{item.orderStatus})
#{item.outChange}, #{item.orderStatus}, #{item.direct})
</foreach>
</insert>
</mapper>

@ -28,7 +28,6 @@ CALL Pro_Temp_ColumnWork('thr_products', 'createTime', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('auth_warehouse', 'advanceType', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('auth_warehouse', 'spUse', 'tinyint', 1);
@ -65,7 +64,7 @@ CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'fillCodeRel', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkVailDate', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkExpire', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkCertExpire', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'preInBackAction', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'batchNo', 'varchar(255) ', 1);
CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'productDate', 'varchar(255) ', 1);
@ -109,6 +108,9 @@ CALL Pro_Temp_ColumnWork('inv_prein_detail', 'status', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originCount', 'int', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originReCount', 'int', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'mainAction', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('inv_prein_detail', 'action', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('io_code_lost', 'nameCode', 'varchar(255)', 1);
INSERT ignore INTO `sys_param_config`(`id`, `parentId`, `paramName`, `paramKey`, `paramValue`, `paramStatus`,
@ -125,6 +127,8 @@ CALL Pro_Temp_ColumnWork('inv_remind_msg', 'remindCount', 'int', 1);
CALL Pro_Temp_ColumnWork('sup_cert_remind_msg', 'remindCount', 'int', 1);
CALL Pro_Temp_ColumnWork('sync_data_bustypes', 'orderStatus', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_bustypes', 'direct', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sup_manufacturer', 'agentName', 'varchar(255)', 1);
CALL Pro_Temp_ColumnWork('sys_pdf_module', 'modelKey', 'varchar(255)', 1);
@ -149,8 +153,88 @@ CALL Pro_Temp_ColumnWork('auth_warehouse', 'updateTime', 'datetime ', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'basicType', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'basicDept', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'updateTime', 'datetime', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'orderToInSyncTime', 'int', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'supCert', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'systemConfig', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'printConfig', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'scanChangeConfig', 'tinyint', 1);
CALL Pro_Temp_ColumnWork('sync_data_set', 'busChangeConfig', 'tinyint', 1);
# CALL Pro_Temp_ColumnWork('sup_cert_set', 'foreign', 'tinyint', 3);
# CALL Pro_Temp_ColumnWork('sup_cert_set', 'needForeign', 'tinyint', 1);
CREATE TABLE IF NOT EXISTS `inv_prein_product`
(
`id` int NOT NULL AUTO_INCREMENT,
`relIdFk` bigint NULL DEFAULT NULL COMMENT '耗材字典ID',
`nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识',
`batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号',
`productionDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期',
`expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期',
`inCount` int NULL DEFAULT NULL COMMENT '入库数量',
`outCount` int NULL DEFAULT NULL COMMENT '出库数量',
`reCount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实际数量',
`customerId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户ID',
`supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商ID',
`deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码',
`invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '仓库编码',
`createTime` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存表'
ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE IF NOT EXISTS `inv_prein_product_detail`
(
`id` int NOT NULL AUTO_INCREMENT,
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'UDI码',
`mainAction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '出入单据类型',
`action` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '单据类型',
`orderId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '订单号外键',
`relId` int NOT NULL COMMENT '耗材字典ID',
`nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识',
`batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号',
`produceDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期',
`expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期',
`serialNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '序列号',
`supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商',
`count` int NULL DEFAULT NULL COMMENT '扫码数量',
`reCount` int NULL DEFAULT NULL COMMENT '实际数量',
`deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '部门编码',
`invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '仓库编码',
`invSpaceCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货位编码',
`purchaseType` tinyint NULL DEFAULT NULL COMMENT '采购类型',
`updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存详情表'
ROW_FORMAT = DYNAMIC;
CREATE TABLE IF NOT EXISTS `sync_data_change_bustypes`
(
`id` int NOT NULL AUTO_INCREMENT,
`action` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`outChange` tinyint NULL DEFAULT NULL,
`orderStatus` tinyint NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 128
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT = '单据同步 - 业务单据类型'
ROW_FORMAT = DYNAMIC;

Loading…
Cancel
Save