diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index 14195e46d..e22166a49 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -285,5 +285,5 @@ public class Constant { public static final String ORDER_ACTION_SUP_INOUT = "supInout"; public static final String ORDER_ACTION_SUP_PREIN = "preInOrder"; - + public static final String SYNC_REMARK = "syncRemark"; } diff --git a/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java b/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java index fdf708414..9578c8358 100644 --- a/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java +++ b/src/main/java/com/glxp/api/controller/auth/InvWarehouseController.java @@ -269,7 +269,7 @@ public class InvWarehouseController extends BaseController { } InvWarehouseEntity originEntity = invWarehouseService.findByInvSubByCode(invWarehouseEntity.getCode()); - if (!originEntity.getParentId().equals(invWarehouseEntity.getParentId()) || !originEntity.getParentCode().equals(invWarehouseEntity.getParentCode())) { + if (!originEntity.getParentId().equals(invWarehouseEntity.getParentId()) || (originEntity.getParentCode() != null && !originEntity.getParentCode().equals(invWarehouseEntity.getParentCode()))) { Integer userCount = warehouseUserService.countUserBySubInvCode(invWarehouseEntity.getCode()); if (userCount > 0) { return ResultVOUtils.error(500, "修改部门或上级仓库时,请先移除该仓库关联用户!"); diff --git a/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java b/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java index f8ccae7aa..045520c34 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java @@ -52,8 +52,7 @@ public class InvPlaceController { if (null == bindInvSpaceRequest) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); } - invPlaceService.bindInvSpace(bindInvSpaceRequest); - return ResultVOUtils.success("绑定成功"); + return invPlaceService.bindInvSpace(bindInvSpaceRequest); } /** diff --git a/src/main/java/com/glxp/api/controller/inv/InvProductController.java b/src/main/java/com/glxp/api/controller/inv/InvProductController.java index fed41b1d1..336b6ac5b 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvProductController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvProductController.java @@ -74,8 +74,14 @@ public class InvProductController extends BaseController { filterInvProductRequest.setInvCodes(invCodes); } } + List list; + if (StrUtil.isNotEmpty(filterInvProductRequest.getInvSpaceCode())) { + list = invProductService.findGroupBySpace(filterInvProductRequest); + } else { + list = invProductService.filterListProduct(filterInvProductRequest); + } + - List list = invProductService.filterListProduct(filterInvProductRequest); PageInfo pageInfo = new PageInfo<>(list); InvProductPageResponse pageResponse = new InvProductPageResponse(); pageResponse.setList(pageInfo.getList()); diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java index 9f75c43f3..81b7c2bcc 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java @@ -2,9 +2,14 @@ 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.FilterInvPlaceRequest; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.res.inv.InvPreinProductResponse; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,6 +27,8 @@ public interface InvPreInProductDetailDao extends BaseMapperPlus filterPreProductDetailList(FilterInvPreProductDetailRequest filterInvPreProductDetailRequest); + List findGroupBySpace(FilterInvPreinProductRequest filterInvPreinProductRequest); + /** * 删除寄预验收库存详情 * @@ -29,4 +36,9 @@ public interface InvPreInProductDetailDao extends BaseMapperPlus getInvProductInfo(FilterInvPlaceRequest filterInvPlaceRequest); + + void batchBindSpace(@Param("ids") List ids, @Param("invSpaceCode") String invSpaceCode); + } diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java index 4893331a6..d97268869 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreProductDao.java @@ -2,8 +2,11 @@ package com.glxp.api.dao.inv; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inv.InvPreProductEntity; +import com.glxp.api.req.inv.FilterInvPlaceRequest; import com.glxp.api.req.inv.FilterInvPreProductRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; import com.glxp.api.res.inv.InvPreProductResponse; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -20,6 +23,8 @@ public interface InvPreProductDao extends BaseMapperPlus filterList(FilterInvPreProductRequest invPreProductRequest); + + /** * 查询寄售库存实体列表 * @@ -28,4 +33,5 @@ public interface InvPreProductDao extends BaseMapperPlus filterPreProductList(FilterInvPreProductRequest invPreProductRequest); -} \ No newline at end of file + +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java index 500a45af9..299cfea89 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java @@ -2,8 +2,13 @@ package com.glxp.api.dao.inv; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inv.InvPreProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPlaceRequest; import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.res.inv.InvPreinProductResponse; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -12,6 +17,9 @@ import java.util.List; */ public interface InvPreProductDetailDao extends BaseMapperPlus { + + List findGroupBySpace(FilterInvPreinProductRequest filterInvPreinProductRequest); + /** * 查询库存详情实体列表 * @@ -27,4 +35,9 @@ public interface InvPreProductDetailDao extends BaseMapperPlus getInvProductInfo(FilterInvPlaceRequest filterInvPlaceRequest); + + + void batchBindSpace(@Param("ids") List ids, @Param("invSpaceCode") String invSpaceCode); +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java index 9063aa7cf..785a06c56 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java @@ -5,6 +5,7 @@ import com.glxp.api.entity.inv.InvPreinProductEntity; import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.res.inv.InvPreinProductResponse; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,6 +23,8 @@ public interface InvPreinProductDao extends BaseMapperPlus filterList(FilterInvPreinProductRequest invPreProductRequest); + void batchBindSpace(@Param("ids") List ids, @Param("invSpaceCode") String invSpaceCode); + /** * 查询寄售库存实体列表 * diff --git a/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java index 7035fca6d..56ed96199 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java @@ -3,10 +3,14 @@ package com.glxp.api.dao.inv; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductRequest; import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.res.inv.BindInvSpaceRequest; import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.res.inv.InvPreinProductResponse; +import com.glxp.api.res.inv.InvProductResponse; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -23,6 +27,9 @@ public interface InvProductDetailDao extends BaseMapperPlus filterInvProductDetailList(FilterInvProductDetailRequest filterInvProductDetailRequest); + + List findGroupBySpace(FilterInvProductRequest filterInvProductRequest); + /** * 删除库存详情 * diff --git a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java index 5c633ac01..8bab4ea74 100644 --- a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java @@ -34,7 +34,7 @@ public class BasicExportStatusEntity { private Date endTime; private String remark; @TableField(value = "receiveStatus") - private Integer receiveStatus; + private String receiveStatus; @TableField(value = "cacheFilePath") private String cacheFilePath; diff --git a/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java index 6a010dec7..50915d845 100644 --- a/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java +++ b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java @@ -208,10 +208,10 @@ public class SpGetHttpClient { } - public BaseResponse> getBasicStatus(String type) { + public BaseResponse> getBasicStatus(String type,String status) { Map paramMap = new HashMap<>(16); paramMap.put("type", type); - paramMap.put("status", "1"); + paramMap.put("status", status); String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap, buildHeader()); try { BaseResponse> data = diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java index 99109c4de..6def0ab36 100644 --- a/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java +++ b/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java @@ -88,6 +88,11 @@ public class FilterInvPreinProductRequest extends ListPageRequest { */ private String invCode; + + // 货位编码 + private String spaceCode; + + /** * 仓库数组 */ diff --git a/src/main/java/com/glxp/api/res/inv/InvPreProductDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreProductDetailResponse.java index 0e55b36e2..a1535ad1d 100644 --- a/src/main/java/com/glxp/api/res/inv/InvPreProductDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvPreProductDetailResponse.java @@ -127,4 +127,6 @@ public class InvPreProductDetailResponse { */ private String orderTime; + private String invSpaceName; + } diff --git a/src/main/java/com/glxp/api/res/inv/InvProductDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvProductDetailResponse.java index 92d8e96c9..d2d5a1732 100644 --- a/src/main/java/com/glxp/api/res/inv/InvProductDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvProductDetailResponse.java @@ -126,4 +126,7 @@ public class InvProductDetailResponse { * 单据日期 */ private String orderTime; + + + private String invSpaceName; } diff --git a/src/main/java/com/glxp/api/res/inv/InvProductResponse.java b/src/main/java/com/glxp/api/res/inv/InvProductResponse.java index 968c39f27..6ef64b4e4 100644 --- a/src/main/java/com/glxp/api/res/inv/InvProductResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvProductResponse.java @@ -95,6 +95,9 @@ public class InvProductResponse { */ private String invName; + // 货位名称 + private String spaceName; + /** * 部门编码 */ diff --git a/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java b/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java index b28aeec75..177dd98bb 100644 --- a/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java +++ b/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java @@ -13,4 +13,5 @@ public class BaseSyncResponse { private String updateTime; private String type; private String idDatas; + private String syncRemark; } diff --git a/src/main/java/com/glxp/api/res/system/SystemPDFTemplateRelevanceResponse.java b/src/main/java/com/glxp/api/res/system/SystemPDFTemplateRelevanceResponse.java index 484ecc917..dd89f248b 100644 --- a/src/main/java/com/glxp/api/res/system/SystemPDFTemplateRelevanceResponse.java +++ b/src/main/java/com/glxp/api/res/system/SystemPDFTemplateRelevanceResponse.java @@ -2,6 +2,8 @@ package com.glxp.api.res.system; import lombok.Data; +import java.util.Date; + @Data public class SystemPDFTemplateRelevanceResponse { @@ -22,5 +24,6 @@ public class SystemPDFTemplateRelevanceResponse { private String remark2; private String remark3; private int printType; + private Date updateTime; } diff --git a/src/main/java/com/glxp/api/service/auth/InvSpaceService.java b/src/main/java/com/glxp/api/service/auth/InvSpaceService.java index 2f2ba8bc4..1c62fcda1 100644 --- a/src/main/java/com/glxp/api/service/auth/InvSpaceService.java +++ b/src/main/java/com/glxp/api/service/auth/InvSpaceService.java @@ -18,6 +18,8 @@ public interface InvSpaceService extends IService { */ List filterList(FilterInvSpaceRequest filterInvSpaceRequest); + InvSpace findByCode(String invCode, String spaceCode); + /** * 添加货位 * diff --git a/src/main/java/com/glxp/api/service/auth/impl/InvSpaceServiceImpl.java b/src/main/java/com/glxp/api/service/auth/impl/InvSpaceServiceImpl.java index 8eed488e0..3cf164bb3 100644 --- a/src/main/java/com/glxp/api/service/auth/impl/InvSpaceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/auth/impl/InvSpaceServiceImpl.java @@ -1,7 +1,9 @@ package com.glxp.api.service.auth.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.common.enums.ResultEnum; @@ -44,6 +46,17 @@ public class InvSpaceServiceImpl extends ServiceImpl impl return invSpaceDao.filterList(filterInvSpaceRequest); } + @Override + public InvSpace findByCode(String invCode, String spaceCode) { + if (StrUtil.isEmpty(invCode) || StrUtil.isEmpty(spaceCode)) + return null; + List invSpaces = invSpaceDao.selectList(new QueryWrapper() + .eq("invWarehouseCode", invCode).eq("code", spaceCode).last("limit 1")); + if (CollUtil.isNotEmpty(invSpaces)) + return invSpaces.get(0); + return null; + } + @Override public BaseResponse addSpace(InvSpace invSpace) { BaseResponse verifyResult = verifySpaceParams(invSpace); @@ -56,7 +69,7 @@ public class InvSpaceServiceImpl extends ServiceImpl impl } //获取当前仓库下的最大货位编码 - String maxSpaceCode = invSpaceDao.getMaxSpaceCode(invSpace.getInvWarehouseCode()); + String maxSpaceCode = invSpaceDao.getMaxSpaceCode(null); if (StrUtil.isBlank(maxSpaceCode)) { maxSpaceCode = "0000"; } @@ -68,7 +81,8 @@ public class InvSpaceServiceImpl extends ServiceImpl impl invSpace.setUpdateTime(date); invSpace.setCreateUser(user.getUserName()); invSpace.setUpdateUser(user.getUserName()); - invSpaceDao.insertEntity(invSpace); + invSpace.setId(IdUtil.getSnowflakeNextId()); + invSpaceDao.insert(invSpace); return ResultVOUtils.success(); } diff --git a/src/main/java/com/glxp/api/service/inv/InvPlaceService.java b/src/main/java/com/glxp/api/service/inv/InvPlaceService.java index 69d922cba..2b7a4edec 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPlaceService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPlaceService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inv; import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.entity.auth.InvSpace; import com.glxp.api.req.inv.FilterInvPlaceRequest; import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.res.inv.BindInvSpaceRequest; @@ -26,7 +27,7 @@ public interface InvPlaceService { * * @param bindInvSpaceRequest */ - void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest); + BaseResponse bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest); /** * 校验库存详情绑定货位信息 diff --git a/src/main/java/com/glxp/api/service/inv/InvProductService.java b/src/main/java/com/glxp/api/service/inv/InvProductService.java index 7c137d80c..28b39e092 100644 --- a/src/main/java/com/glxp/api/service/inv/InvProductService.java +++ b/src/main/java/com/glxp/api/service/inv/InvProductService.java @@ -33,6 +33,8 @@ public interface InvProductService { */ List filterListProduct(FilterInvProductRequest filterInvProductRequest); + List findGroupBySpace(FilterInvProductRequest filterInvProductRequest); + /** * 根据ID查询库存 * diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java index 58ea2a9b4..0c0ee2c49 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java @@ -7,9 +7,16 @@ import com.github.pagehelper.PageHelper; 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.ConstantStatus; import com.glxp.api.dao.auth.InvSpaceDao; import com.glxp.api.dao.auth.InvWarehouseDao; +import com.glxp.api.dao.inv.InvPreInProductDetailDao; +import com.glxp.api.dao.inv.InvPreProductDetailDao; import com.glxp.api.dao.inv.InvProductDetailDao; +import com.glxp.api.entity.auth.InvSpace; +import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.req.inv.AddInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceRequest; @@ -18,11 +25,14 @@ import com.glxp.api.res.inv.BindInvSpaceRequest; import com.glxp.api.res.inv.InvPlaceDetailResponse; import com.glxp.api.service.inv.InvPlaceOrderService; import com.glxp.api.service.inv.InvPlaceService; +import com.glxp.api.util.BeanCopyUtils; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -35,6 +45,10 @@ public class InvPlaceServiceImpl implements InvPlaceService { @Resource private InvProductDetailDao invProductDetailDao; @Resource + private InvPreProductDetailDao invPreProductDetailDao; + @Resource + private InvPreInProductDetailDao invPreInProductDetailDao; + @Resource private InvWarehouseDao invWarehouseDao; @Resource private InvSpaceDao invSpaceDao; @@ -52,20 +66,62 @@ public class InvPlaceServiceImpl implements InvPlaceService { return invProductDetailDao.selectPlaceDetailList(filterInvPlaceRequest); } + @Override - public void bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) { + public BaseResponse bindInvSpace(BindInvSpaceRequest bindInvSpaceRequest) { //查询仓库的部门ID String deptCode = invWarehouseDao.selectParentIdByCode(bindInvSpaceRequest.getInvCode()); - List list = invProductDetailDao.selectList(new QueryWrapper() - .select("id", "code", "relId", "batchNo") - .eq("deptCode", deptCode) - .eq("invCode", bindInvSpaceRequest.getInvCode()) - .in("code", bindInvSpaceRequest.getCodeArray()) - ); + InvWarehouseEntity invWarehouseEntity = invWarehouseDao.filterGroupInvSubAndcode(bindInvSpaceRequest.getInvCode()); + + List list = new ArrayList<>(); + if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { + List invPreInProductDetailEntities = invPreInProductDetailDao.selectList(new QueryWrapper() + .select("id", "code", "relId", "batchNo") + .eq("deptCode", deptCode) + .eq("invCode", bindInvSpaceRequest.getInvCode()) + .in("code", bindInvSpaceRequest.getCodeArray()) + ); + for (InvPreInProductDetailEntity invPreInProductDetailEntity : invPreInProductDetailEntities) { + InvProductDetailEntity invProductDetailEntity = new InvProductDetailEntity(); + BeanCopyUtils.copy(invPreInProductDetailEntity, invProductDetailEntity); + list.add(invProductDetailEntity); + } + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { + + List invPreProductDetailEntities = invPreProductDetailDao.selectList(new QueryWrapper() + .select("id", "code", "relId", "batchNo") + .eq("deptCode", deptCode) + .eq("invCode", bindInvSpaceRequest.getInvCode()) + .in("code", bindInvSpaceRequest.getCodeArray()) + ); + for (InvPreProductDetailEntity invPreInProductDetailEntity : invPreProductDetailEntities) { + InvProductDetailEntity invProductDetailEntity = new InvProductDetailEntity(); + BeanCopyUtils.copy(invPreInProductDetailEntity, invProductDetailEntity); + list.add(invProductDetailEntity); + } + + } else { + list = invProductDetailDao.selectList(new QueryWrapper() + .select("id", "code", "relId", "batchNo") + .eq("deptCode", deptCode) + .eq("invCode", bindInvSpaceRequest.getInvCode()) + .in("code", bindInvSpaceRequest.getCodeArray()) + ); + } + if (CollUtil.isNotEmpty(list)) { List ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList()); log.info("本次绑定货位的库存详情数量为:{} 条", ids.size()); - invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); + + + if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { + invPreInProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { + invPreProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); + } else { + invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); + } + //添加物资上架记录 AddInvPlaceOrderRequest addInvPlaceOrderRequest = new AddInvPlaceOrderRequest(); @@ -75,8 +131,10 @@ public class InvPlaceServiceImpl implements InvPlaceService { addInvPlaceOrderRequest.setInvCode(bindInvSpaceRequest.getInvCode()); addInvPlaceOrderRequest.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); invPlaceOrderService.addInvPlaceOrder(addInvPlaceOrderRequest); + return ResultVOUtils.success("绑定成功!本次绑定货位的库存详情数量为:" + ids.size() + "条"); } else { log.info("绑定货位列表查询无数据"); + return ResultVOUtils.error(500, "绑定货位列表查询无数据"); } } @@ -99,7 +157,15 @@ public class InvPlaceServiceImpl implements InvPlaceService { @Override public List getInvProductInfo(FilterInvPlaceRequest filterInvPlaceRequest) { - return invProductDetailDao.getInvProductInfo(filterInvPlaceRequest); + + InvWarehouseEntity invWarehouseEntity = invWarehouseDao.selectOne(new QueryWrapper().eq("code", filterInvPlaceRequest.getInvCode())); + if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { + return invPreInProductDetailDao.getInvProductInfo(filterInvPlaceRequest); + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { + return invPreProductDetailDao.getInvProductInfo(filterInvPlaceRequest); + } else + return invProductDetailDao.getInvProductInfo(filterInvPlaceRequest); + } @Override diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java index e1f3a27ce..bd1d23824 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java @@ -11,6 +11,7 @@ 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.auth.InvSpace; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvPreInProductDetailEntity; @@ -18,6 +19,7 @@ import com.glxp.api.entity.inv.InvPreinDetailEntity; 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.auth.InvSpaceService; import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.service.inv.InvPreinProductDetailService; import com.glxp.api.util.DateUtil; @@ -115,6 +117,9 @@ public class InvPreInProductDetailServiceImpl implements InvPreinProductDetailSe return invPreInProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest); } + @Resource + InvSpaceService invSpaceService; + @Override public void setOrderInfo(InvPreProductDetailResponse response) { //查询DI层级,根据DI层级设置数量取值 @@ -139,6 +144,11 @@ public class InvPreInProductDetailServiceImpl implements InvPreinProductDetailSe response.setInCount(response.getCount()); } } + InvSpace invSpace = invSpaceService.findByCode(response.getInvCode(), response.getInvSpaceCode()); + if (invSpace != null) + response.setInvSpaceName(invSpace.getName()); + + //设置单据类型名称 BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper().select("name").eq("action", response.getAction())); response.setActionName(busType.getName()); diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java index c2c055afe..5e40e3af8 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreProductDetailServiceImpl.java @@ -10,6 +10,7 @@ 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.InvPreProductDetailDao; +import com.glxp.api.entity.auth.InvSpace; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvPreInProductDetailEntity; @@ -19,6 +20,7 @@ import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.inv.InvPreProductDetailResponse; +import com.glxp.api.service.auth.InvSpaceService; import com.glxp.api.service.inv.InvPreProductDetailService; import com.glxp.api.util.DateUtil; import lombok.extern.slf4j.Slf4j; @@ -109,6 +111,10 @@ public class InvPreProductDetailServiceImpl implements InvPreProductDetailServic return invPreProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest); } + + @Resource + InvSpaceService invSpaceService; + @Override public void setOrderInfo(InvPreProductDetailResponse response) { //查询DI层级,根据DI层级设置数量取值 @@ -133,6 +139,11 @@ public class InvPreProductDetailServiceImpl implements InvPreProductDetailServic response.setInCount(response.getCount()); } } + + InvSpace invSpace = invSpaceService.findByCode(response.getInvCode(), response.getInvSpaceCode()); + if (invSpace != null) + response.setInvSpaceName(invSpace.getName()); + //设置单据类型名称 BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper().select("name").eq("action", response.getAction())); response.setActionName(busType.getName()); diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java index 4913cf77e..27fe31273 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductDetailServiceImpl.java @@ -5,15 +5,18 @@ 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.auth.InvSpaceDao; 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.InvProductDetailDao; +import com.glxp.api.entity.auth.InvSpace; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.req.inv.FilterInvProductDetailRequest; import com.glxp.api.res.inv.InvProductDetailResponse; +import com.glxp.api.service.auth.InvSpaceService; import com.glxp.api.service.inv.InvProductDetailService; import com.glxp.api.util.DateUtil; import org.springframework.stereotype.Service; @@ -124,6 +127,9 @@ public class InvProductDetailServiceImpl implements InvProductDetailService { return invProductDetailDao.deleteInvProductDetail(detailRequest); } + @Resource + InvSpaceService invSpaceService; + @Override public void setOrderInfo(InvProductDetailResponse response) { //查询DI层级,根据DI层级设置数量取值 @@ -148,6 +154,9 @@ public class InvProductDetailServiceImpl implements InvProductDetailService { response.setInCount(response.getCount()); } } + InvSpace invSpace = invSpaceService.findByCode(response.getInvCode(), response.getInvSpaceCode()); + if (invSpace != null) + response.setInvSpaceName(invSpace.getName()); //设置单据类型名称 BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper().select("name").eq("action", response.getAction())); diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java index 87da4e0ac..fa8704a8b 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvProductServiceImpl.java @@ -4,6 +4,7 @@ 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.InvProductDao; +import com.glxp.api.dao.inv.InvProductDetailDao; import com.glxp.api.entity.inv.InvProductEntity; import com.glxp.api.req.inv.FilterInvProductRequest; import com.glxp.api.res.inv.InvProductResponse; @@ -21,6 +22,8 @@ public class InvProductServiceImpl implements InvProductService { @Resource InvProductDao invProductDao; + @Resource + InvProductDetailDao invProductDetailDao; @Override public int insert(InvProductEntity invProductEntity) { @@ -67,6 +70,18 @@ public class InvProductServiceImpl implements InvProductService { return invProductDao.filterList(filterInvProductRequest); } + @Override + public List findGroupBySpace(FilterInvProductRequest filterInvProductRequest) { + if (null == filterInvProductRequest) { + return Collections.emptyList(); + } + if (null != filterInvProductRequest.getPage() && null != filterInvProductRequest.getLimit()) { + PageHelper.offsetPage((filterInvProductRequest.getPage() - 1) * filterInvProductRequest.getLimit(), filterInvProductRequest.getLimit()); + } + return invProductDetailDao.findGroupBySpace(filterInvProductRequest); + + } + @Override public InvProductEntity findById(String id) { return invProductDao.selectById(id); diff --git a/src/main/java/com/glxp/api/service/sync/HeartService.java b/src/main/java/com/glxp/api/service/sync/HeartService.java index 6ece8f4fb..5de83b7bb 100644 --- a/src/main/java/com/glxp/api/service/sync/HeartService.java +++ b/src/main/java/com/glxp/api/service/sync/HeartService.java @@ -160,6 +160,14 @@ public class HeartService { logs = logs + "单据条码信息:" + spsSyncOrderResponse.getCodeEntities().size() + "条\n"; basicExportStatusEntity1.setRemark(logs); basicExportStatusEntity1.setUpdateTime(new Date()); + try { + String fileFullPath = writeFile(filePrefix, NEW_ALL_ORDER, JsonUtils.toJsonString(spsSyncOrderResponse)); + basicExportStatusEntity1.setCacheFilePath(fileFullPath); + } catch (IOException e) { + throw new RuntimeException(e); + } + + basicExportService.updateExportStatus(basicExportStatusEntity1); return ResultVOUtils.success(); } @@ -247,7 +255,7 @@ public class HeartService { } break; case USER_DATA: - if (!needExec(info.getBasicDept(), info.getBasicInv(), info.getSysUser())) { + if (needExec(info.getBasicDept(), info.getBasicInv(), info.getSysUser())) { uploadData(exportType, taskId, x -> x.getUserData(info, taskId, now, syncTime)); } break; @@ -273,6 +281,7 @@ public class HeartService { * @return */ public SpsSyncBasicDataResponse getBasicData(SyncDataSetEntity info, String taskId, Date now, Date syncTime) { + StringBuffer remark = new StringBuffer(); SpsSyncBasicDataResponse dataResponse = null; Map syncTimeMap = new WeakHashMap<>(3); syncTimeMap.put("isNew", true); @@ -293,6 +302,7 @@ public class HeartService { if (CollectionUtil.isNotEmpty(hospTypeList)) { dataResponse = new SpsSyncBasicDataResponse(); dataResponse.setHospTypeList(hospTypeList); + remark.append("物资字典分类信息:").append(hospTypeList.size()).append("条\n"); } List udiRelevanceList = udiRelevanceDao.selectList(Wrappers.lambdaQuery(UdiRelevanceEntity.class) .le((boolean) map.get("isNew"), UdiRelevanceEntity::getUpdateTime, now) @@ -304,6 +314,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setUdiRelevanceList(udiRelevanceList); + remark.append("物资字典主表信息:").append(udiRelevanceList.size()).append("条\n"); } List productsList = basicProductsDao.selectList(Wrappers.lambdaQuery(BasicProductsEntity.class) .le((boolean) map.get("isNew"), BasicProductsEntity::getUpdateTime, now) @@ -315,6 +326,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setProductsList(productsList); + remark.append("物资字典字表信息:").append(udiRelevanceList.size()).append("条\n"); } List relevanceList = relevanceDao.selectList(Wrappers.lambdaQuery(CompanyProductRelevanceEntity.class) .le((boolean) map.get("isNew"), CompanyProductRelevanceEntity::getUpdateTime, now) @@ -326,6 +338,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setRelevanceList(relevanceList); + remark.append("供应商物资字典信息:").append(relevanceList.size()).append("条\n"); } } //确认有开启往来单位字典同步 @@ -346,6 +359,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setCorpList(corpList); + remark.append("往来单位信息:").append(corpList.size()).append("条\n"); } } @@ -367,6 +381,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setSupCertList(supCertList); + remark.append("资质证书信息:").append(supCertList.size()).append("条\n"); } List supCertSetList = supCertSetDao.selectList(Wrappers.lambdaQuery(SupCertSetEntity.class) .le((boolean) map.get("isNew"), SupCertSetEntity::getUpdateTime, now) @@ -378,6 +393,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setSupCertSetList(supCertSetList); + remark.append("资质证书要求设置信息:").append(supCertSetList.size()).append("条\n"); } List supCompanyList = supCompanyDao.selectList(Wrappers.lambdaQuery(SupCompanyEntity.class) .le((boolean) map.get("isNew"), SupCompanyEntity::getUpdateTime, now) @@ -389,6 +405,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setSupCompanyList(supCompanyList); + remark.append("供应商资质信息:").append(supCompanyList.size()).append("条\n"); } List supManufacturerList = supManufacturerDao.selectList(Wrappers.lambdaQuery(SupManufacturerEntity.class) .le((boolean) map.get("isNew"), SupManufacturerEntity::getUpdateTime, now) @@ -400,6 +417,7 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setSupManufacturerList(supManufacturerList); + remark.append("生产企业资质信息:").append(supManufacturerList.size()).append("条\n"); } List supProductList = supProductDao.selectList(Wrappers.lambdaQuery(SupProductEntity.class) .le((boolean) map.get("isNew"), SupProductEntity::getUpdateTime, now) @@ -411,12 +429,14 @@ public class HeartService { dataResponse = new SpsSyncBasicDataResponse(); } dataResponse.setSupProductList(supProductList); + remark.append("配送产品资质信息:").append(supProductList.size()).append("条\n"); } } if (dataResponse != null) { dataResponse.setTaskId(taskId); dataResponse.setType(BasicExportTypeEnum.BASIC_DATA.getRemark()); + dataResponse.setSyncRemark(remark.toString()); } return dataResponse; @@ -432,7 +452,7 @@ public class HeartService { * @return */ public SpsSyncOtherDataResponse getOtherData(SyncDataSetEntity info, String taskId, Date now, Date syncTime) { - + StringBuffer remark = new StringBuffer(); SpsSyncOtherDataResponse dataResponse = null; Map syncTimeMap = new WeakHashMap<>(3); syncTimeMap.put("isNew", true); @@ -453,6 +473,7 @@ public class HeartService { if (CollectionUtil.isNotEmpty(ioCodeLostList)) { dataResponse = new SpsSyncOtherDataResponse(); dataResponse.setIoCodeLostList(ioCodeLostList); + remark.append("UDI码补齐信息:").append(ioCodeLostList.size()).append("条\n"); } } //确认有开启udi关联关系同步 @@ -473,11 +494,13 @@ public class HeartService { dataResponse = new SpsSyncOtherDataResponse(); } dataResponse.setIoCodeRelList(ioCodeRelList); + remark.append("UDI码关联关系:").append(ioCodeRelList.size()).append("条\n"); } } if (dataResponse != null) { dataResponse.setTaskId(taskId); dataResponse.setType(BasicExportTypeEnum.OTHER_DATA.getRemark()); + dataResponse.setSyncRemark(remark.toString()); } return dataResponse; @@ -522,9 +545,10 @@ public class HeartService { Map syncTimeMap = new WeakHashMap<>(3); syncTimeMap.put("isNew", true); syncTimeMap.put("oldDate", syncTime); + StringBuffer remark = new StringBuffer(); - //确认有开启业务单据类型同步 - if (needExec(info.getTypeBus())) { + //确认有开启扫码单据类型同步 + if (needExec(info.getTypeScan())) { Map map; if (syncTime == null) { map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_BUSSINESS_TYPE); @@ -539,11 +563,11 @@ public class HeartService { if (CollectionUtil.isNotEmpty(bussinessTypeEntities)) { dataResponse = new SpsSyncBusResponse(); dataResponse.setBussinessTypeEntities(bussinessTypeEntities); + remark.append("扫码单据类型信息:").append(bussinessTypeEntities.size()).append("条\n"); } } - - //确认有开启扫码单据类型同步 - if (needExec(info.getTypeScan())) { + //确认有开启业务单据类型同步 + if (needExec(info.getTypeBus())) { Map map; if (syncTime == null) { map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_BUSTYPE_CHANGE); @@ -560,6 +584,7 @@ public class HeartService { dataResponse = new SpsSyncBusResponse(); } dataResponse.setBusTypeChangeEntities(busTypeChangeList); + remark.append("业务单据类型:").append(busTypeChangeList.size()).append("条\n"); } } @@ -581,12 +606,14 @@ public class HeartService { dataResponse = new SpsSyncBusResponse(); } dataResponse.setThrBusTypeOriginEntities(thrBusTypeOriginEntities); + remark.append("第三方单据类型信息:").append(thrBusTypeOriginEntities.size()).append("条\n"); } } if (dataResponse != null) { dataResponse.setTaskId(taskId); dataResponse.setType(BasicExportTypeEnum.DOCUMENT_TYPE_DATA.getRemark()); + dataResponse.setSyncRemark(remark.toString()); } return dataResponse; @@ -614,7 +641,7 @@ public class HeartService { Map syncTimeMap = new WeakHashMap<>(3); syncTimeMap.put("isNew", true); syncTimeMap.put("oldDate", syncTime); - + StringBuffer remark = new StringBuffer(); //确认有开启部门信息同步 if (needExec(info.getBasicDept())) { Map map; @@ -631,6 +658,7 @@ public class HeartService { if (CollectionUtil.isNotEmpty(deptEntityList)) { dataResponse = new SpsSyncDataResponse(); dataResponse.setDeptEntityList(deptEntityList); + remark.append("部门信息:").append(deptEntityList.size()).append("条\n"); } List deptUserEntityList = deptUserService.list(Wrappers.lambdaQuery(DeptUserEntity.class) .le((boolean) map.get("isNew"), DeptUserEntity::getUpdateTime, now) @@ -642,6 +670,7 @@ public class HeartService { dataResponse = new SpsSyncDataResponse(); } dataResponse.setDeptUserEntities(deptUserEntityList); + remark.append("部门用户信息:").append(deptEntityList.size()).append("条\n"); } } @@ -662,6 +691,7 @@ public class HeartService { if (dataResponse == null) { dataResponse = new SpsSyncDataResponse(); } + remark.append("仓库字典信息:").append(warehouseEntityList.size()).append("条\n"); dataResponse.setInvWarehouseEntities(warehouseEntityList); } List warehouseUserEntities = warehouseUserService.list(Wrappers.lambdaQuery(WarehouseUserEntity.class) @@ -673,6 +703,7 @@ public class HeartService { if (dataResponse == null) { dataResponse = new SpsSyncDataResponse(); } + remark.append("仓库用户信息:").append(warehouseUserEntities.size()).append("条\n"); dataResponse.setWarehouseUserEntities(warehouseUserEntities); } List warehouseBussinessTypeEntities = warehouseBussinessTypeService.list(Wrappers.lambdaQuery(WarehouseBussinessTypeEntity.class) @@ -685,6 +716,7 @@ public class HeartService { dataResponse = new SpsSyncDataResponse(); } dataResponse.setWarehouseBussinessTypeEntities(warehouseBussinessTypeEntities); + remark.append("仓库单据类型信息:").append(warehouseBussinessTypeEntities.size()).append("条\n"); } List invSpaceList = invSpaceService.list(Wrappers.lambdaQuery(InvSpace.class) .le((boolean) map.get("isNew"), InvSpace::getUpdateTime, now) @@ -696,6 +728,7 @@ public class HeartService { dataResponse = new SpsSyncDataResponse(); } dataResponse.setInvSpaces(invSpaceList); + remark.append("货位信息:").append(invSpaceList.size()).append("条\n"); } } @@ -717,6 +750,7 @@ public class HeartService { dataResponse = new SpsSyncDataResponse(); } dataResponse.setAuthAdminList(adminList); + remark.append("系统用户信息:").append(adminList.size()).append("条\n"); } List busUserEntities = invBusUserService.list(Wrappers.lambdaQuery(InvBusUserEntity.class) .le((boolean) map.get("isNew"), InvBusUserEntity::getUpdateTime, now) @@ -728,12 +762,14 @@ public class HeartService { dataResponse = new SpsSyncDataResponse(); } dataResponse.setInvBusUserEntities(busUserEntities); + remark.append("用户关联单据信息:").append(busUserEntities.size()).append("条\n"); } } if (dataResponse != null) { dataResponse.setTaskId(taskId); dataResponse.setType(BasicExportTypeEnum.USER_DATA.getRemark()); + dataResponse.setSyncRemark(remark.toString()); } return dataResponse; } @@ -756,7 +792,7 @@ public class HeartService { Map syncTimeMap = new WeakHashMap<>(3); syncTimeMap.put("isNew", true); syncTimeMap.put("oldDate", syncTime); - + StringBuffer remark = new StringBuffer(); //确认有开启第三方部门信息同步 if (needExec(info.getBasicThirdDept())) { Map map; @@ -773,6 +809,7 @@ public class HeartService { if (CollectionUtil.isNotEmpty(deptEntityList)) { dataResponse = new SpsSyncThrDataResponse(); dataResponse.setDeptEntities(deptEntityList); + remark.append("第三方部门信息:").append(deptEntityList.size()).append("条\n"); } } @@ -794,6 +831,7 @@ public class HeartService { dataResponse = new SpsSyncThrDataResponse(); } dataResponse.setInvWarehouseEntities(warehouseEntityList); + remark.append("第三方仓库信息:").append(warehouseEntityList.size()).append("条\n"); } } @@ -815,6 +853,7 @@ public class HeartService { dataResponse = new SpsSyncThrDataResponse(); } dataResponse.setProductsEntityList(productsEntityList); + remark.append("第三方产品信息:").append(productsEntityList.size()).append("条\n"); } } @@ -836,12 +875,14 @@ public class HeartService { dataResponse = new SpsSyncThrDataResponse(); } dataResponse.setCorpEntities(corpEntities); + remark.append("第三方往来信息:").append(corpEntities.size()).append("条\n"); } } if (dataResponse != null) { dataResponse.setTaskId(taskId); dataResponse.setType(BasicExportTypeEnum.THIRD_DATA.getRemark()); + dataResponse.setSyncRemark(remark.toString()); } return dataResponse; } @@ -871,6 +912,7 @@ public class HeartService { Map syncTimeMap = new WeakHashMap<>(3); syncTimeMap.put("isNew", true); syncTimeMap.put("oldDate", syncTime); + StringBuffer remark = new StringBuffer(); if (needExec(info.getSystemConfig())) { Map map; if (syncTime == null) { @@ -886,6 +928,7 @@ public class HeartService { if (CollectionUtil.isNotEmpty(systemParamConfigEntities)) { dataResponse = new SpsSyncSysSettingResponse(); dataResponse.setSystemParamConfigEntities(systemParamConfigEntities); + remark.append("运行参数设置信息:").append(systemParamConfigEntities.size()).append("条\n"); } } if (needExec(info.getEntrustAction())) { @@ -905,6 +948,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setEntrustReceEntities(entrustReceEntities); + remark.append("委托验收设置信息:").append(entrustReceEntities.size()).append("条\n"); } } if (needExec(info.getPrintConfig())) { @@ -924,6 +968,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setSystemPDFModuleEntities(systemPDFModuleEntities); + remark.append("系统模板模块信息:").append(systemPDFModuleEntities.size()).append("条\n"); } List systemPDFTemplateEntities = systemPDFTemplateService.list(Wrappers.lambdaQuery(SystemPDFTemplateEntity.class) @@ -936,6 +981,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setSystemPDFTemplateEntities(systemPDFTemplateEntities); + remark.append("模板信息:").append(systemPDFTemplateEntities.size()).append("条\n"); } List sysPdfTemplateRelevanceCodeEntities = systemPDFTemplateRelevanceCodeService.list(Wrappers.lambdaQuery(SysPdfTemplateRelevanceCodeEntity.class) @@ -948,6 +994,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setSysPdfTemplateRelevanceCodeEntities(sysPdfTemplateRelevanceCodeEntities); + remark.append("扫码单据关联模板信息:").append(sysPdfTemplateRelevanceCodeEntities.size()).append("条\n"); } List sysPdfTemplateRelevanceBizEntities = systemPDFTemplateRelevanceBizService.list(Wrappers.lambdaQuery(SysPdfTemplateRelevanceBizEntity.class) @@ -960,6 +1007,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setSysPdfTemplateRelevanceBizEntities(sysPdfTemplateRelevanceBizEntities); + remark.append("业务单据关联模板信息:").append(sysPdfTemplateRelevanceBizEntities.size()).append("条\n"); } List sysPdfTemplateRelevanceLabelEntities = systemPDFTemplateRelevanceLabelService.list(Wrappers.lambdaQuery(SysPdfTemplateRelevanceLabelEntity.class) @@ -972,6 +1020,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setSysPdfTemplateRelevanceLabelEntities(sysPdfTemplateRelevanceLabelEntities); + remark.append("标签关联模板信息:").append(sysPdfTemplateRelevanceLabelEntities.size()).append("条\n"); } List sysPdfTemplateRelevanceStatemenEntities = systemPDFTemplateRelevanceStatemenService.list(Wrappers.lambdaQuery(SysPdfTemplateRelevanceStatemenEntity.class) @@ -984,6 +1033,7 @@ public class HeartService { dataResponse = new SpsSyncSysSettingResponse(); } dataResponse.setSysPdfTemplateRelevanceStatemenEntities(sysPdfTemplateRelevanceStatemenEntities); + remark.append("报表关联模板信息:").append(sysPdfTemplateRelevanceStatemenEntities.size()).append("条\n"); } } @@ -1002,6 +1052,7 @@ public class HeartService { if (CollectionUtil.isNotEmpty(basicBusTypePreEntities)) { dataResponse = new SpsSyncSysSettingResponse(); dataResponse.setBasicBusTypePreEntities(basicBusTypePreEntities); + remark.append("出入库单自动补单设置信息:").append(basicBusTypePreEntities.size()).append("条\n"); } } if (needExec(info.getBusChangeConfig())) { @@ -1019,12 +1070,14 @@ public class HeartService { if (CollectionUtil.isNotEmpty(basicBusTypeChangeEntities)) { dataResponse = new SpsSyncSysSettingResponse(); dataResponse.setBasicBusTypeChangeEntities(basicBusTypeChangeEntities); + remark.append("业务单自动补单设置信息:").append(basicBusTypeChangeEntities.size()).append("条\n"); } } if (dataResponse != null) { dataResponse.setTaskId(taskId); dataResponse.setType(BasicExportTypeEnum.SYS_SET_DATA.getRemark()); + dataResponse.setSyncRemark(remark.toString()); if (CollUtil.isNotEmpty(dataResponse.getSystemPDFTemplateEntities())) { // List> list = new ArrayList<>(spsSyncSysSettingResponse.getSystemPDFTemplateEntities().size() * 2); List list = new ArrayList<>(); @@ -1068,6 +1121,9 @@ public class HeartService { if (baseResponse.getCode() != 20000) { status = StatusEnum.FAILED.getCode(); } + + + BaseSyncResponse baseSyncResponse = (BaseSyncResponse) data; BasicExportStatusEntity exportStatus = BasicExportStatusEntity.builder() .id(taskId) .status(status) @@ -1076,9 +1132,9 @@ public class HeartService { .startTime(new Date()) .endTime(new Date()) .updateTime(new Date()) - .receiveStatus(status) + .receiveStatus(status + "") .scheduleType(BasicProcessStatus.SCHEDULE_NORMAL) - .remark(baseResponse.getMessage()) + .remark(baseSyncResponse.getSyncRemark()) .build(); try { String fileFullPath = writeFile(filePrefix, exportType.getRemark(), JsonUtils.toJsonString(data)); @@ -1284,7 +1340,7 @@ public class HeartService { //下载最近更新扫码单据--上级服务 @Transactional(propagation = Propagation.NESTED) public void dlAllOrder() { - BaseResponse> baseResponse = spGetHttp.getBasicStatus(NEW_ALL_ORDER + ""); + BaseResponse> baseResponse = spGetHttp.getBasicStatus(NEW_ALL_ORDER + "", "3"); List pageSimpleResponse = baseResponse != null ? baseResponse.getData() : new ArrayList<>(); if (pageSimpleResponse != null) { List basicExportStatusEntities = pageSimpleResponse; @@ -1304,9 +1360,9 @@ public class HeartService { basicDownloadStatusEntity.setIdDatas(ConstantStatus.SYNC_DOWNLOAD_SCAN_ORDER); basicDownloadStatusEntity.setStatus(ConstantStatus.SYNC_STATUS_WAIT); //下载中 basicDownloadStatusEntity.setType(NEW_ALL_ORDER); + basicDownloadStatusEntity.setRemark(syncDataResponse.getSyncRemark()); basicDownloadStatusEntity.setScheduleType(1); basicDownloadService.insertDownloadStatus(basicDownloadStatusEntity); - StringBuffer remark = new StringBuffer(); if (CollUtil.isNotEmpty(syncDataResponse.getOrderEntities())) { try { @@ -1314,6 +1370,7 @@ public class HeartService { for (IoOrderEntity orderEntity : orderEntities) { orderEntity.setUpdateTime(null); orderEntity.setFromType(ConstantStatus.FROM_UDISP); + orderEntity.setProcessStatus(ConstantStatus.ORDER_DEAL_POST); orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); IoOrderEntity temp = orderService.findByBillNo(orderEntity.getBillNo()); if (temp == null) { @@ -1329,29 +1386,15 @@ public class HeartService { } } - String logs = ""; - if (CollUtil.isNotEmpty(syncDataResponse.getOrderEntities())) - logs = logs + "单据:" + syncDataResponse.getOrderEntities().size() + "条\n"; - if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailBizEntities())) - logs = logs + "业务详情:" + syncDataResponse.getOrderDetailBizEntities().size() + "条\n"; - if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailCodeEntities())) - logs = logs + "单据扫码详情:" + syncDataResponse.getOrderDetailCodeEntities().size() + "条\n"; - if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailResultEntities())) - logs = logs + "单据结果详情:" + syncDataResponse.getOrderDetailResultEntities().size() + "条\n"; - if (CollUtil.isNotEmpty(syncDataResponse.getCodeEntities())) - logs = logs + "单据条码信息:" + syncDataResponse.getCodeEntities().size() + "条\n"; - remark.append(logs); } catch (Exception e) { e.printStackTrace(); } } - spGetHttp.postBasicStatus(basicExportStatusEntity.getId()); - + spGetHttp.finishTask(basicExportStatusEntity.getId()); basicDownloadStatusEntity.setUpdateTime(new Date()); basicDownloadStatusEntity.setEndTime(new Date()); - basicDownloadStatusEntity.setRemark(remark.toString()); basicDownloadStatusEntity.setStatus(StatusEnum.SUCCESS.getCode()); basicDownloadService.updateDownloadStatus(basicDownloadStatusEntity); @@ -1365,7 +1408,7 @@ public class HeartService { // 下载最近更新国家库数据-上级服务 @Transactional(propagation = Propagation.NESTED) public void dlAllDiProducts() { - BaseResponse> baseResponse = spGetHttp.getBasicStatus(NEW_ALL_UDIS); + BaseResponse> baseResponse = spGetHttp.getBasicStatus(NEW_ALL_UDIS, "3"); List pageSimpleResponse = baseResponse.getData(); if (pageSimpleResponse != null) { List basicExportStatusEntities = pageSimpleResponse; @@ -1414,11 +1457,17 @@ public class HeartService { remark.append("产品信息:").append(spSyncUdiResponse.getProductInfoEntityList().size()).append("条\n"); } batchSession.close(); - spGetHttp.postBasicStatus(basicExportStatusEntity.getId()); - +// spGetHttp.postBasicStatus(basicExportStatusEntity.getId()); + spGetHttp.finishTask(basicExportStatusEntity.getId()); basicDownloadStatusEntity.setUpdateTime(new Date()); basicDownloadStatusEntity.setEndTime(new Date()); basicDownloadStatusEntity.setRemark(remark.toString()); + try { + String fileFullPath = writeFile(filePrefix, NEW_ALL_UDIS, JSONUtil.toJsonStr(response.getData())); + basicDownloadStatusEntity.setCacheFilePath(fileFullPath); + } catch (IOException e) { + throw new RuntimeException(e); + } basicDownloadStatusEntity.setStatus(StatusEnum.SUCCESS.getCode()); basicDownloadService.updateDownloadStatus(basicDownloadStatusEntity); } @@ -1476,6 +1525,8 @@ public class HeartService { String taskId = bean.getTaskId(); if (StrUtil.isNotBlank(taskId)) { //插入下载记录 + cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(bean.getFileContent()); + String remark = jsonObject.getStr(Constant.SYNC_REMARK); BasicDownloadStatusEntity basicDownloadStatusEntity = new BasicDownloadStatusEntity(); basicDownloadStatusEntity.setId(CustomUtil.getId()); basicDownloadStatusEntity.setTaskId(taskId); @@ -1483,6 +1534,7 @@ public class HeartService { basicDownloadStatusEntity.setUpdateTime(new Date()); basicDownloadStatusEntity.setEndTime(new Date()); basicDownloadStatusEntity.setIdDatas(exportType.getKey()); + basicDownloadStatusEntity.setRemark(remark); basicDownloadStatusEntity.setStatus(StatusEnum.SUCCESS.getCode()); //下载完成 basicDownloadStatusEntity.setType(exportType.getRemark()); basicDownloadStatusEntity.setScheduleType(1); @@ -1781,6 +1833,7 @@ public class HeartService { List orderInvoiceEntities = syncDataResponse.getOrderInvoiceEntities(); for (IoOrderInvoiceEntity orderInvoiceEntity : orderInvoiceEntities) { if (orderInvoiceEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { + orderInvoiceEntity.setId(null); orderInvoiceService.insertInvoice(orderInvoiceEntity); } } diff --git a/src/main/java/com/glxp/api/task/SyncHeartTask.java b/src/main/java/com/glxp/api/task/SyncHeartTask.java index 932e4b435..3c288962a 100644 --- a/src/main/java/com/glxp/api/task/SyncHeartTask.java +++ b/src/main/java/com/glxp/api/task/SyncHeartTask.java @@ -60,7 +60,7 @@ public class SyncHeartTask implements SchedulingConfigurer { //定时上传最近更新基础数据至上游轮询时间 - long timeInterval1 = syncDataSetEntity.getSyncTime() * 60 * 1000L; + long timeInterval1 = syncDataSetEntity.getSyncTime() * 6 * 1000L; long curTime1 = System.currentTimeMillis(); Long lastTime1 = (Long) redisUtil.get("SPS_SYNC_UPLOAD_DATA"); if (lastTime1 == null) { @@ -86,7 +86,7 @@ public class SyncHeartTask implements SchedulingConfigurer { //定时上传最近更新单据数据至上游轮询时间 - long timeInterval2 = syncDataSetEntity.getOrderSyncTime() * 60 * 1000L; + long timeInterval2 = syncDataSetEntity.getOrderSyncTime() * 6 * 1000L; long curTime2 = System.currentTimeMillis(); Long lastTime2 = (Long) redisUtil.get("SPS_SYNC_UPLOAD_ORDER"); if (lastTime2 == null) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a4c7e80ec..80e18f1ee 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: test + active: dev jmx: enabled: false servlet: diff --git a/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml b/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml index 7847c6588..e02c36df3 100644 --- a/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml +++ b/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml @@ -47,9 +47,9 @@ insert into auth_space (code, `name`, type, invStorageCode, - invWarehouseCode, `status`, createTime, - updateTime, `createUser`, updateUser, - remark) + invWarehouseCode, `status`, createTime, + updateTime, `createUser`, updateUser, + remark) values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{invStorageCode,jdbcType=VARCHAR}, #{invWarehouseCode,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, @@ -255,9 +255,9 @@ insert into auth_space - (code, `name`, type, invStorageCode, invWarehouseCode, `status`, createTime, updateTime, - `createUser`, updateUser, remark) - values + (code, `name`, type, invStorageCode, invWarehouseCode, `status`, createTime, updateTime, + `createUser`, updateUser, remark) + values (#{item.code,jdbcType=VARCHAR}, #{item.name,jdbcType=VARCHAR}, #{item.type,jdbcType=VARCHAR}, #{item.invStorageCode,jdbcType=VARCHAR}, @@ -269,13 +269,14 @@ - select s.*, w.name invStorageName, iws.name invSubStorageName from auth_space s - left join auth_dept w on s.invStorageCode = w.code - left join auth_warehouse iws on s.invWarehouseCode = iws.code + left join auth_dept w on s.invStorageCode = w.code + left join auth_warehouse iws on s.invWarehouseCode = iws.code AND s.invStorageCode = #{invStorageCode} @@ -318,8 +319,8 @@ select - + from auth_space @@ -401,7 +402,8 @@ - select * FROM auth_warehouse WHERE id = #{id} - select * FROM auth_warehouse WHERE parentCode = #{parentCode} @@ -73,9 +73,9 @@ @@ -319,9 +320,9 @@ resultType="com.glxp.api.entity.auth.InvWarehouseEntity"> select auth_warehouse.*, auth_dept.`name` AS warehouseName from auth_warehouse - INNER JOIN - auth_dept - on auth_warehouse.parentId = auth_dept.code + INNER JOIN + auth_dept + on auth_warehouse.parentId = auth_dept.code AND auth_dept.pcode = #{subordinateCode} @@ -345,8 +346,8 @@ b.name parentName, a.parentCode from auth_warehouse a - left join auth_dept b on a.parentId = b.code - left join auth_warehouse_user c on a.code = c.code + left join auth_dept b on a.parentId = b.code + left join auth_warehouse_user c on a.code = c.code AND c.userId = #{userId} @@ -368,8 +369,8 @@ auth_warehouse.parentCode, auth_dept.name warehouseName from auth_warehouse - inner join auth_dept on auth_warehouse.parentId = auth_dept.code - LEFT join auth_warehouse_user on auth_warehouse.code = auth_warehouse_user.code + inner join auth_dept on auth_warehouse.parentId = auth_dept.code + LEFT join auth_warehouse_user on auth_warehouse.code = auth_warehouse_user.code AND auth_warehouse_user.userId = #{userId} @@ -405,12 +406,18 @@ - with recursive table_a as ( - select * from auth_warehouse ta where parentCode = #{pcode} - union all - select tb.* from auth_warehouse tb inner join table_a on table_a.code = tb.parentCode - ) - select * from table_a + select * + from auth_warehouse ta + where parentCode = #{pcode} + union all + select tb.* + from auth_warehouse tb + inner join table_a on table_a.code = tb.parentCode + ) + select * + from table_a diff --git a/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml b/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml index f1d68927e..e67ccd237 100644 --- a/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml +++ b/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml @@ -2,19 +2,19 @@ - - select * from productinfo + select * + from productinfo AND tyshxydm = #{tyshxydm} - AND cpmctymc LIKE concat(#{cpmctymc},'%') + AND cpmctymc LIKE concat(#{cpmctymc}, '%') - AND nameCode LIKE concat(#{nameCode},'%') + AND nameCode LIKE concat(#{nameCode}, '%') AND uuid = #{uuid} - - = DATE_FORMAT(#{updateTime}, '%Y-%m-%d %H:%i:%S') ]]> + + = DATE_FORMAT(#{updateTime}, '%Y-%m-%d %H:%i:%S') + ]]> GROUP BY cpmctymc @@ -94,23 +99,26 @@ - select * from productinfo where - uuid in ( + select * + from productinfo where + uuid in ( #{item} @@ -137,27 +146,27 @@ - - SELECT * FROM productinfo + SELECT * + FROM productinfo AND tyshxydm = #{tyshxydm} - AND cpmctymc LIKE concat(#{cpmctymc},'%') + AND cpmctymc LIKE concat(#{cpmctymc}, '%') - AND nameCode LIKE concat(#{nameCode},'%') + AND nameCode LIKE concat(#{nameCode}, '%') AND uuid = #{uuid} @@ -191,72 +200,73 @@ @@ -368,24 +378,23 @@ - REPLACE - INTO productinfo - ( - id,nameCode,packRatio,packLevel,bhxjsl, - bhzxxsbzsl,zxxsbzbhsydysl,bhxjcpbm,bzcj,thirdProductNo,addType,deviceRecordKey,isUseDy,thirdProductName, - cpmctymc,cplb,flbm,ggxh,qxlb,tyshxydm,ylqxzcrbarmc,zczbhhzbapzbh,ylqxzcrbarywmc,uuid,sjcpbm,versionNumber - ,diType,scbssfbhph,scbssfbhxlh,scbssfbhscrq,scbssfbhsxrq, - ybbm,spmc,cphhhbh,cpms,cpbsbmtxmc,isNewest,updateTime,cplx,hchzsb -,sfwblztlcp,cgzmraqxgxx,sfbjwycxsy,zdcfsycs,sfwwjbz,syqsfxyjxmj,qtxxdwzlj,mjfs - ) - values - ( - #{id}, - #{nameCode}, - #{packRatio}, - #{packLevel}, - #{bhxjsl}, - #{bhzxxsbzsl}, - #{zxxsbzbhsydysl}, - #{bhxjcpbm}, - #{bzcj}, - #{thirdProductNo}, - #{addType}, - #{deviceRecordKey}, - #{isUseDy}, - #{thirdProductName}, - #{cpmctymc}, - #{cplb}, - #{flbm}, - #{ggxh}, - #{qxlb}, - #{tyshxydm}, - #{ylqxzcrbarmc}, - #{zczbhhzbapzbh}, - #{ylqxzcrbarywmc}, - #{uuid}, - #{sjcpbm}, - #{versionNumber}, - #{diType}, - #{scbssfbhph}, - #{scbssfbhxlh}, - #{scbssfbhscrq}, - #{scbssfbhsxrq}, - #{ybbm}, - #{spmc}, - #{cphhhbh}, - #{cpms}, - #{cpbsbmtxmc}, - #{isNewest}, - #{updateTime}, - #{cplx}, - #{hchzsb}, - #{sfwblztlcp}, - #{cgzmraqxgxx}, - #{sfbjwycxsy}, - #{zdcfsycs}, - #{sfwwjbz}, - #{syqsfxyjxmj}, - #{qtxxdwzlj}, - #{mjfs} - ) + INTO productinfo + (id, nameCode, packRatio, packLevel, bhxjsl, + bhzxxsbzsl, zxxsbzbhsydysl, bhxjcpbm, bzcj, thirdProductNo, addType, deviceRecordKey, isUseDy, + thirdProductName, + cpmctymc, cplb, flbm, ggxh, qxlb, tyshxydm, ylqxzcrbarmc, zczbhhzbapzbh, ylqxzcrbarywmc, uuid, sjcpbm, + versionNumber + , diType, scbssfbhph, scbssfbhxlh, scbssfbhscrq, scbssfbhsxrq, + ybbm, spmc, cphhhbh, cpms, cpbsbmtxmc, isNewest, updateTime, cplx, hchzsb + , sfwblztlcp, cgzmraqxgxx, sfbjwycxsy, zdcfsycs, sfwwjbz, syqsfxyjxmj, qtxxdwzlj, mjfs) + values (#{id}, + #{nameCode}, + #{packRatio}, + #{packLevel}, + #{bhxjsl}, + #{bhzxxsbzsl}, + #{zxxsbzbhsydysl}, + #{bhxjcpbm}, + #{bzcj}, + #{thirdProductNo}, + #{addType}, + #{deviceRecordKey}, + #{isUseDy}, + #{thirdProductName}, + #{cpmctymc}, + #{cplb}, + #{flbm}, + #{ggxh}, + #{qxlb}, + #{tyshxydm}, + #{ylqxzcrbarmc}, + #{zczbhhzbapzbh}, + #{ylqxzcrbarywmc}, + #{uuid}, + #{sjcpbm}, + #{versionNumber}, + #{diType}, + #{scbssfbhph}, + #{scbssfbhxlh}, + #{scbssfbhscrq}, + #{scbssfbhsxrq}, + #{ybbm}, + #{spmc}, + #{cphhhbh}, + #{cpms}, + #{cpbsbmtxmc}, + #{isNewest}, + #{updateTime}, + #{cplx}, + #{hchzsb}, + #{sfwblztlcp}, + #{cgzmraqxgxx}, + #{sfbjwycxsy}, + #{zdcfsycs}, + #{sfwwjbz}, + #{syqsfxyjxmj}, + #{qtxxdwzlj}, + #{mjfs}) REPLACE INTO productinfo - ( - id,nameCode,packRatio,packLevel,bhxjsl, - bhzxxsbzsl,zxxsbzbhsydysl,bhxjcpbm,bzcj,thirdProductNo,addType,deviceRecordKey,isUseDy,thirdProductName, - cpmctymc,cplb,flbm,ggxh,qxlb,tyshxydm,ylqxzcrbarmc,zczbhhzbapzbh,ylqxzcrbarywmc,uuid,sjcpbm,versionNumber - ,diType,scbssfbhph,scbssfbhxlh,scbssfbhscrq,scbssfbhsxrq, - ybbm,spmc,cphhhbh,cpms,cpbsbmtxmc,isNewest,updateTime,cplx,hchzsb - ,sfwblztlcp,cgzmraqxgxx,sfbjwycxsy,zdcfsycs,sfwwjbz,syqsfxyjxmj,qtxxdwzlj,mjfs - ) values + (id, nameCode, packRatio, packLevel, bhxjsl, + bhzxxsbzsl, zxxsbzbhsydysl, bhxjcpbm, bzcj, thirdProductNo, addType, deviceRecordKey, isUseDy, + thirdProductName, + cpmctymc, cplb, flbm, ggxh, qxlb, tyshxydm, ylqxzcrbarmc, zczbhhzbapzbh, ylqxzcrbarywmc, uuid, sjcpbm, + versionNumber + , diType, scbssfbhph, scbssfbhxlh, scbssfbhscrq, scbssfbhsxrq, + ybbm, spmc, cphhhbh, cpms, cpbsbmtxmc, isNewest, updateTime, cplx, hchzsb + , sfwblztlcp, cgzmraqxgxx, sfbjwycxsy, zdcfsycs, sfwwjbz, syqsfxyjxmj, qtxxdwzlj, mjfs) values - - - ( - #{item.id}, - #{item.nameCode}, - #{item.packRatio}, - #{item.packLevel}, - #{item.bhxjsl}, - #{item.bhzxxsbzsl}, - #{item.zxxsbzbhsydysl}, - #{item.bhxjcpbm}, - #{item.bzcj}, - #{item.thirdProductNo}, - #{item.addType}, - #{item.deviceRecordKey}, - #{item.isUseDy}, - #{item.thirdProductName}, - #{item.cpmctymc}, - #{item.cplb}, - #{item.flbm}, - #{item.ggxh}, - #{item.qxlb}, - #{item.tyshxydm}, - #{item.ylqxzcrbarmc}, - #{item.zczbhhzbapzbh}, - #{item.ylqxzcrbarywmc}, - #{item.uuid}, - #{item.sjcpbm}, - #{item.versionNumber}, - #{item.diType}, - #{item.scbssfbhph}, - #{item.scbssfbhxlh}, - #{item.scbssfbhscrq}, - #{item.scbssfbhsxrq}, - #{item.ybbm}, - #{item.spmc}, - #{item.cphhhbh}, - #{item.cpms}, - #{item.cpbsbmtxmc}, - #{item.isNewest}, - #{item.updateTime},#{item.cplx},#{item.hchzsb},#{item.sfwblztlcp},#{item.cgzmraqxgxx},#{item.sfbjwycxsy},#{item.zdcfsycs} - ,#{item.sfwwjbz},#{item.syqsfxyjxmj},#{item.qtxxdwzlj},#{item.mjfs} - ) + (#{item.id}, + #{item.nameCode}, + #{item.packRatio}, + #{item.packLevel}, + #{item.bhxjsl}, + #{item.bhzxxsbzsl}, + #{item.zxxsbzbhsydysl}, + #{item.bhxjcpbm}, + #{item.bzcj}, + #{item.thirdProductNo}, + #{item.addType}, + #{item.deviceRecordKey}, + #{item.isUseDy}, + #{item.thirdProductName}, + #{item.cpmctymc}, + #{item.cplb}, + #{item.flbm}, + #{item.ggxh}, + #{item.qxlb}, + #{item.tyshxydm}, + #{item.ylqxzcrbarmc}, + #{item.zczbhhzbapzbh}, + #{item.ylqxzcrbarywmc}, + #{item.uuid}, + #{item.sjcpbm}, + #{item.versionNumber}, + #{item.diType}, + #{item.scbssfbhph}, + #{item.scbssfbhxlh}, + #{item.scbssfbhscrq}, + #{item.scbssfbhsxrq}, + #{item.ybbm}, + #{item.spmc}, + #{item.cphhhbh}, + #{item.cpms}, + #{item.cpbsbmtxmc}, + #{item.isNewest}, + #{item.updateTime}, #{item.cplx}, #{item.hchzsb}, #{item.sfwblztlcp}, #{item.cgzmraqxgxx}, + #{item.sfbjwycxsy}, #{item.zdcfsycs} + , #{item.sfwwjbz}, #{item.syqsfxyjxmj}, #{item.qtxxdwzlj}, #{item.mjfs}) @@ -534,7 +539,8 @@ - DELETE FROM productinfo WHERE thirdProductNo in + DELETE + FROM productinfo WHERE thirdProductNo in #{item} @@ -543,44 +549,117 @@ UPDATE productinfo - nameCode=#{nameCode}, - packRatio=#{packRatio}, - packLevel=#{packLevel}, - bhxjsl=#{bhxjsl}, - bhzxxsbzsl=#{bhzxxsbzsl}, - zxxsbzbhsydysl=#{zxxsbzbhsydysl}, - bhxjcpbm=#{bhxjcpbm}, - bzcj=#{bzcj}, - thirdProductNo=#{thirdProductNo}, - addType=#{addType}, - deviceRecordKey=#{deviceRecordKey}, - isUseDy=#{isUseDy}, - thirdProductName=#{thirdProductName}, - cpmctymc=#{cpmctymc}, - cplb=#{cplb}, - flbm=#{flbm}, - ggxh=#{ggxh}, - qxlb=#{qxlb}, - tyshxydm=#{tyshxydm}, - ylqxzcrbarmc=#{ylqxzcrbarmc}, - ylqxzcrbarywmc=#{ylqxzcrbarywmc}, - uuid=#{uuid}, - sjcpbm=#{sjcpbm}, - versionNumber=#{versionNumber}, - diType=#{diType}, - isNewest=#{isNewest}, - updateTime=#{updateTime}, - cplx=#{cplx}, - hchzsb=#{hchzsb}, - sfwblztlcp=#{sfwblztlcp}, - cgzmraqxgxx=#{cgzmraqxgxx}, - sfbjwycxsy=#{sfbjwycxsy}, - zdcfsycs=#{zdcfsycs}, - sfwwjbz=#{sfwwjbz}, - syqsfxyjxmj=#{syqsfxyjxmj}, - - qtxxdwzlj=#{qtxxdwzlj}, - mjfs=#{mjfs}, + + nameCode=#{nameCode}, + + + packRatio=#{packRatio}, + + + packLevel=#{packLevel}, + + + bhxjsl=#{bhxjsl}, + + + bhzxxsbzsl=#{bhzxxsbzsl}, + + + zxxsbzbhsydysl=#{zxxsbzbhsydysl}, + + + bhxjcpbm=#{bhxjcpbm}, + + + bzcj=#{bzcj}, + + + thirdProductNo=#{thirdProductNo}, + + + addType=#{addType}, + + + deviceRecordKey=#{deviceRecordKey}, + + + isUseDy=#{isUseDy}, + + + thirdProductName=#{thirdProductName}, + + + cpmctymc=#{cpmctymc}, + + + cplb=#{cplb}, + + + flbm=#{flbm}, + + + ggxh=#{ggxh}, + + + qxlb=#{qxlb}, + + + tyshxydm=#{tyshxydm}, + + + ylqxzcrbarmc=#{ylqxzcrbarmc}, + + + ylqxzcrbarywmc=#{ylqxzcrbarywmc}, + + + uuid=#{uuid}, + + + sjcpbm=#{sjcpbm}, + + + versionNumber=#{versionNumber}, + + + diType=#{diType}, + + + isNewest=#{isNewest}, + + + updateTime=#{updateTime}, + + + cplx=#{cplx}, + + + hchzsb=#{hchzsb}, + + + sfwblztlcp=#{sfwblztlcp}, + + + cgzmraqxgxx=#{cgzmraqxgxx}, + + + sfbjwycxsy=#{sfbjwycxsy}, + + + zdcfsycs=#{zdcfsycs}, + + + sfwwjbz=#{sfwwjbz}, + + + syqsfxyjxmj=#{syqsfxyjxmj}, + + + qtxxdwzlj=#{qtxxdwzlj}, + + + mjfs=#{mjfs}, + WHERE id = #{id} @@ -588,29 +667,69 @@ UPDATE productinfo - scbssfbhph=#{scbssfbhph}, - scbssfbhxlh=#{scbssfbhxlh}, - scbssfbhscrq=#{scbssfbhscrq}, - scbssfbhsxrq=#{scbssfbhsxrq}, - ybbm=#{ybbm}, - spmc=#{spmc}, - cphhhbh=#{cphhhbh}, - cpms=#{cpms}, - cpbsbmtxmc=#{cpbsbmtxmc}, - isNewest=#{isNewest}, - updateTime=#{updateTime}, - cplx=#{cplx}, - hchzsb=#{hchzsb}, - - sfwblztlcp=#{sfwblztlcp}, - cgzmraqxgxx=#{cgzmraqxgxx}, - sfbjwycxsy=#{sfbjwycxsy}, - zdcfsycs=#{zdcfsycs}, - sfwwjbz=#{sfwwjbz}, - syqsfxyjxmj=#{syqsfxyjxmj}, - - qtxxdwzlj=#{qtxxdwzlj}, - mjfs=#{mjfs}, + + scbssfbhph=#{scbssfbhph}, + + + scbssfbhxlh=#{scbssfbhxlh}, + + + scbssfbhscrq=#{scbssfbhscrq}, + + + scbssfbhsxrq=#{scbssfbhsxrq}, + + + ybbm=#{ybbm}, + + + spmc=#{spmc}, + + + cphhhbh=#{cphhhbh}, + + + cpms=#{cpms}, + + + cpbsbmtxmc=#{cpbsbmtxmc}, + + + isNewest=#{isNewest}, + + + updateTime=#{updateTime}, + + + cplx=#{cplx}, + + + hchzsb=#{hchzsb}, + + + sfwblztlcp=#{sfwblztlcp}, + + + cgzmraqxgxx=#{cgzmraqxgxx}, + + + sfbjwycxsy=#{sfbjwycxsy}, + + + zdcfsycs=#{zdcfsycs}, + + + sfwwjbz=#{sfwwjbz}, + + + syqsfxyjxmj=#{syqsfxyjxmj}, + + + qtxxdwzlj=#{qtxxdwzlj}, + + + mjfs=#{mjfs}, + WHERE uuid = #{uuid} @@ -620,7 +739,8 @@ + + delete from inv_prein_product_detail @@ -74,49 +155,46 @@ - - - + select ipd.code, + ipd.relId, + ipd.batchNo, + ipd.serialNo, + ipd.invSpaceCode, + ipd.invCode, + bp.cpmctymc productName, + bp.ggxh, + bp.measname, + bp.zczbhhzbapzbh, + bp.manufactory, + (select name from auth_space s where s.code = ipd.invSpaceCode) invSpaceName, + (select name from basic_corp bc where bc.erpId = ipd.supId) supName + from inv_prein_product_detail ipd + left join basic_udirel bu on bu.id = ipd.relId + left join basic_products bp on bp.uuid = bu.uuid - - AND code = #{code} - - - AND mainAction = #{mainAction} - - - AND action = #{action} - - - and supId = #{supId} - - - AND relId = #{relId} - - - AND nameCode like concat('%', #{nameCode}, '%') - - - AND orderId = #{orderId} - - - AND deptCode = #{deptCode} - - AND invCode = #{invCode} + AND ipd.invCode = #{invCode} - AND invSpaceCode = #{invSpaceCode} + AND ipd.invSpaceCode = #{invSpaceCode} - - AND batchNo = #{batchNo} + + AND ipd.code = #{code} - - AND batchNo is null + + AND ipd.orderId = #{orderId} - group by + group by ipd.id + + + update inv_prein_product_detail + set invSpaceCode = #{invSpaceCode} + where id in + + #{item} + + diff --git a/src/main/resources/mybatis/mapper/inv/InvPreProductDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDao.xml index 7958b1a06..6dcb9fe21 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDao.xml @@ -3,32 +3,32 @@ select ipp.* from inv_pre_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 + 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 bp.diType = 1 diff --git a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml index 1dc755be7..e3d056d52 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml @@ -1,6 +1,86 @@ + + + select ipd.code, + ipd.relId, + ipd.batchNo, + ipd.serialNo, + ipd.invSpaceCode, + ipd.invCode, + bp.cpmctymc productName, + bp.ggxh, + bp.measname, + bp.zczbhhzbapzbh, + bp.manufactory, + (select name from auth_space s where s.code = ipd.invSpaceCode) invSpaceName, + (select name from basic_corp bc where bc.erpId = ipd.supId) supName + from inv_pre_product_detail ipd + left join basic_udirel bu on bu.id = ipd.relId + left join basic_products bp on bp.uuid = bu.uuid + + + AND ipd.invCode = #{invCode} + + + AND ipd.invSpaceCode = #{invSpaceCode} + + + AND ipd.code = #{code} + + + AND ipd.orderId = #{orderId} + + + group by ipd.id + + + + update inv_pre_product_detail + set invSpaceCode = #{invSpaceCode} + where id in + + #{item} + + diff --git a/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml index 9633c6fcc..45109277a 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml @@ -134,4 +134,5 @@ + diff --git a/src/main/resources/mybatis/mapper/inv/invProductDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDao.xml index f4807a093..708fd49b3 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDao.xml @@ -6,34 +6,34 @@ select bp.cpmctymc, - bp.nameCode, - bp.ylqxzcrbarmc, - bp.zczbhhzbapzbh, - bc.name supName, - bp.ggxh, - aw.name invName, - ip.batchNo, - ip.relIdFk, - ip.productionDate, - ip.expireDate, - ip.customerId, - ip.supId, - sum(ip.inCount) inCount, - sum(ip.outCount) outCount, - sum(ip.reCount) reCount + bp.nameCode, + bp.ylqxzcrbarmc, + bp.zczbhhzbapzbh, + bc.name supName, + bp.ggxh, + aw.name invName, + ip.batchNo, + ip.relIdFk, + ip.productionDate, + ip.expireDate, + ip.customerId, + ip.supId, + sum(ip.inCount) inCount, + sum(ip.outCount) outCount, + sum(ip.reCount) reCount from inv_product ip - inner join basic_udirel bu on ip.relIdFk = bu.id - inner join basic_products bp on bu.uuid = bp.uuid - left join basic_corp bc on ip.supId = bc.erpId - left join auth_warehouse aw on aw.code = ip.invCode + inner join basic_udirel bu on ip.relIdFk = bu.id + inner join basic_products bp on bu.uuid = bp.uuid + left join basic_corp bc on ip.supId = bc.erpId + left join auth_warehouse aw on aw.code = ip.invCode bp.diType = 1 @@ -150,13 +150,13 @@ select ip.* from inv_product ip - left join inv_product_detail ipd on ip.relIdFk = ipd.relId - and ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty') - and ip.deptCode = ipd.deptCode - and ip.invCode = ipd.invCode + left join inv_product_detail ipd on ip.relIdFk = ipd.relId + and ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty') + and ip.deptCode = ipd.deptCode + and ip.invCode = ipd.invCode AND ip.relIdFk = #{relId} @@ -208,22 +208,22 @@ select ip.relIdFk, - ip.deptCode, - ip.invCode, - ipd.invSpaceCode, - ip.batchNo, - ip.productionDate, - ip.expireDate, - ip.supId, - ip.inCount, - ip.outCount, - ip.reCount + ip.deptCode, + ip.invCode, + ipd.invSpaceCode, + ip.batchNo, + ip.productionDate, + ip.expireDate, + ip.supId, + ip.inCount, + ip.outCount, + ip.reCount from inv_product ip - left join inv_product_detail ipd - on ip.relIdFk = ipd.relId and ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty') + left join inv_product_detail ipd + on ip.relIdFk = ipd.relId and ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty') AND ip.invCode = #{invCode} @@ -276,10 +276,10 @@ select ip.id, - ip.nameCode, - bp.cpmctymc, - ip.relIdFk, - bp.ggxh, - ip.batchNo, - ip.productionDate, - ip.expireDate, - bp.ylqxzcrbarmc, - bp.zczbhhzbapzbh, - sum(ip.inCount) as inCount, - sum(ip.outCount) as outCount, - sum(ip.reCount) as reCount, - ip.customerId, - basic_corp.name supName, - ip.supId, - auth_dept.name deptName, - auth_warehouse.name invName, - ip.deptCode, - ip.invCode + ip.nameCode, + bp.cpmctymc, + ip.relIdFk, + bp.ggxh, + ip.batchNo, + ip.productionDate, + ip.expireDate, + bp.ylqxzcrbarmc, + bp.zczbhhzbapzbh, + sum(ip.inCount) as inCount, + sum(ip.outCount) as outCount, + sum(ip.reCount) as reCount, + ip.customerId, + basic_corp.name supName, + ip.supId, + auth_dept.name deptName, + auth_warehouse.name invName, + ip.deptCode, + ip.invCode from inv_product ip - inner join basic_udirel on ip.relIdFk = basic_udirel.id - inner join basic_products bp on basic_udirel.uuid = bp.uuid - left join basic_corp on ip.supId = basic_corp.erpId - left join auth_dept on auth_dept.code = ip.deptCode - left join auth_warehouse on auth_warehouse.code = ip.invCode - left join inv_product_detail ipd on ip.invCode = ipd.invCode and ip.relIdFk = ipd.relId and - ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty') + inner join basic_udirel on ip.relIdFk = basic_udirel.id + inner join basic_products bp on basic_udirel.uuid = bp.uuid + left join basic_corp on ip.supId = basic_corp.erpId + left join auth_dept on auth_dept.code = ip.deptCode + left join auth_warehouse on auth_warehouse.code = ip.invCode + left join inv_product_detail ipd on ip.invCode = ipd.invCode and ip.relIdFk = ipd.relId and + ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty') bp.diType = 1 diff --git a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml index 4a7ee4e18..af68d03ce 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml @@ -3,6 +3,86 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + - select * from basic_export_status + select * + from basic_export_status - AND id LIKE concat('%',#{id},'%') + AND id LIKE concat('%', #{id}, '%') - + and status = #{status} - + and `type` = #{type} - + and idDatas = #{idDatas} - + and scheduleType = #{scheduleType} - and #{syncTime} >= startTime and #{syncTime} <= endTime + and #{syncTime} >= startTime + and #{syncTime} <= endTime order by updateTime desc @@ -33,32 +34,50 @@ replace - INTO basic_export_status(id,idDatas,status,type,updateTime,scheduleType,startTime,endTime,remark,cacheFilePath) - values( - #{id}, - #{idDatas}, - #{status}, - #{type}, - #{updateTime}, - #{scheduleType}, - #{startTime}, - #{endTime}, - #{remark}, - #{cacheFilePath} - ) + INTO basic_export_status(id, idDatas, status, type, updateTime, scheduleType, startTime, endTime, + remark, cacheFilePath) + values (#{id}, + #{idDatas}, + #{status}, + #{type}, + #{updateTime}, + #{scheduleType}, + #{startTime}, + #{endTime}, + #{remark}, + #{cacheFilePath}) UPDATE basic_export_status - idDatas=#{idDatas}, - status=#{status}, - type=#{type}, - updateTime=#{updateTime}, - scheduleType=#{scheduleType}, - startTime=#{startTime}, - endTime=#{endTime}, - remark=#{remark}, + + idDatas=#{idDatas}, + + + status=#{status}, + + + type=#{type}, + + + updateTime=#{updateTime}, + + + scheduleType=#{scheduleType}, + + + startTime=#{startTime}, + + + endTime=#{endTime}, + + + remark=#{remark}, + + + cacheFilePath=#{cacheFilePath}, + WHERE id = #{id} @@ -69,11 +88,14 @@ - Delete From basic_export_status - where date(startTime) <= date(DATE_SUB(NOW(),INTERVAL 30 day)) + Delete + From basic_export_status + where date(startTime) <= date(DATE_SUB(NOW(), INTERVAL 30 day)) - delete from basic_export_status where date_format(#{date}, '%Y-%m-%d') >= date_format(startTime, '%Y-%m-%d') + delete + from basic_export_status + where date_format(#{date}, '%Y-%m-%d') >= date_format(startTime, '%Y-%m-%d')