diff --git a/src/main/java/com/glxp/api/constant/BasicProcessStatus.java b/src/main/java/com/glxp/api/constant/BasicProcessStatus.java index 35e92dc09..2139f78e0 100644 --- a/src/main/java/com/glxp/api/constant/BasicProcessStatus.java +++ b/src/main/java/com/glxp/api/constant/BasicProcessStatus.java @@ -25,9 +25,10 @@ public class BasicProcessStatus { public static final int BASIC_THIRD_PRODUCTS = 4; //往来单位 public static final int BASIC_THIRD_CORP = 5; //往来单位 public static final int BASIC_THIRD_ORDER = 6; //往来单位 - public static final int NEW_ALL_DATA = 7; //所有最新数据 - public static final int NEW_ALL_BUS = 8; - public static final int NEW_ALL_ORDER = 9; + public static final String NEW_ALL_DATA = "7"; //所有最新数据 + public static final String NEW_ALL_BUS = "8"; + public static final String NEW_ALL_ORDER = "9"; + public static final String ALL_BUS_ORDER = "11"; public static final int NEW_ALL_DI = 10; public static final int SCHEDULE_NORMAL = 1; //常规任务 diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index 31334301d..e2b6a5d55 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -231,17 +231,24 @@ public class Constant { */ public static final String ORDER_STATUS_AUDITED = "audited"; + /** * 单据-供应商已审核 */ public static final String ORDER_STATUS_SUP_SEARCH = "supSearch"; + public static final String ORDER_STATUS_INVOICE = "supInvoice"; + + public static final String ORDER_STATUS_INCODE = "supInCode"; + /**前端页面查询相关单据类型标识*/ /** * 送货管理界面: supDelivery + * 审核送货单 supDelAudit + * 查询出入库单 supInout * 到货单管理界面: supArrival * 退货单管理界面: supReturned * 采购入库单界面: supPurchase @@ -254,9 +261,7 @@ public class Constant { public static final String ORDER_ACTION_PRE_DETAIL = "preDetail"; 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"; + public static final String ORDER_ACTION_SUP_INOUT = "supInout"; } diff --git a/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java b/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java index bbca6a452..dcdd1952c 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBusTypeChangeController.java @@ -2,9 +2,11 @@ package com.glxp.api.controller.basic; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.Log; 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.BusinessType; import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; import com.glxp.api.req.basic.FilterBusTypeChangeRequest; import com.glxp.api.req.system.DeleteRequest; @@ -58,6 +60,7 @@ public class BasicBusTypeChangeController { * @return */ @PostMapping("/basic/bustype/change/insert") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse insertBusType(@RequestBody @Valid BasicBusTypeChangeEntity basicBusTypeChangeEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -79,6 +82,7 @@ public class BasicBusTypeChangeController { * @return */ @PostMapping("/basic/bustype/change/update") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateBusType(@RequestBody @Valid BasicBusTypeChangeEntity basicBusTypeChangeEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -100,6 +104,7 @@ public class BasicBusTypeChangeController { * @return */ @PostMapping("/basic/bustype/change/delete") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse delBussinessType(@RequestBody @Valid DeleteRequest deleteRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); diff --git a/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java b/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java index 821d0a10c..b9165de93 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBusTypePreController.java @@ -3,9 +3,11 @@ package com.glxp.api.controller.basic; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.Log; 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.BusinessType; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; import com.glxp.api.entity.auth.InvWarehouseEntity; @@ -119,6 +121,7 @@ public class BasicBusTypePreController { * @return */ @PostMapping("/spms/busTypePre/remove") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse removeBuTypePre(@RequestBody BasicBusTypePreEntity basicBusTypePreEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -140,6 +143,7 @@ public class BasicBusTypePreController { * @return */ @PostMapping("/spms/busTypePre/delete") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse deleteBusTypePre(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -157,6 +161,7 @@ public class BasicBusTypePreController { * @return */ @PostMapping("/spms/busTypePre/update") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateBusTypePre(@RequestBody BasicBusTypePreEntity basicBusTypePreEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -165,7 +170,7 @@ public class BasicBusTypePreController { //判断是否重复添加 boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity); if (result) { - return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加!"); + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!"); } basicBusTypePreService.updateBusChangeType(basicBusTypePreEntity); @@ -183,6 +188,7 @@ public class BasicBusTypePreController { * @return */ @PostMapping("/spms/busTypePre/insert") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse insertBusTypePre(@RequestBody BasicBusTypePreEntity basicBusTypePreEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -191,7 +197,7 @@ public class BasicBusTypePreController { //判断是否重复添加 boolean result = basicBusTypePreService.verifyExists(basicBusTypePreEntity); if (result) { - return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "重复添加!"); + return ResultVOUtils.error(ResultEnum.DATA_REPEAT, "原单据类型已存在,不允许重复添加!"); } if (StrUtil.isNotBlank(basicBusTypePreEntity.getDefaultInvCode())) { diff --git a/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java b/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java index e2022691d..bc7dd1bc8 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicBussinessTypeController.java @@ -6,9 +6,12 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; 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.BusinessType; +import com.glxp.api.constant.ConstantType; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.req.basic.BusNoUserRequest; @@ -116,6 +119,7 @@ public class BasicBussinessTypeController extends BaseController { * @return */ @PostMapping(value = "/udiwms/bussinessType/insert") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse insertBussinessType(@RequestBody @Valid BussinessTypeSaveRequest bussinessTypeSaveRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); @@ -144,6 +148,7 @@ public class BasicBussinessTypeController extends BaseController { * @return */ @PostMapping("/udiwms/bussinessType/update") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateBussinessType(@RequestBody BussinessTypeSaveRequest bussinessTypeSaveRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -171,9 +176,6 @@ public class BasicBussinessTypeController extends BaseController { public BaseResponse filterJoinByUser(FilterBussinessTypeRequest bussinessTypeFilterRequest, BindingResult bindingResult) { - if (bindingResult.hasErrors()) { - return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); - } if (StrUtil.isNotEmpty(bussinessTypeFilterRequest.getVueType())) { List bussinessTypeEntities = basicBussinessTypeService.findByVueType(bussinessTypeFilterRequest.getVueType()); @@ -208,6 +210,7 @@ public class BasicBussinessTypeController extends BaseController { * @return */ @PostMapping("/udiwms/bussinessType/delete") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse deleteBussinessType(@RequestBody DeleteRequest deleteRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -350,4 +353,40 @@ public class BasicBussinessTypeController extends BaseController { return ResultVOUtils.success(pageSimpleResponse); } + + @AuthRuleAnnotation("") + @GetMapping("/udiwms/busType/change/origin") + public BaseResponse changeOrigins(FilterBussinessTypeRequest bussinessTypeFilterRequest, + BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + bussinessTypeFilterRequest.setEnable(true); + + List bussinessTypeEntities; + bussinessTypeEntities = basicBussinessTypeService.filterList(bussinessTypeFilterRequest); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setList(bussinessTypeEntities); + return ResultVOUtils.success(pageSimpleResponse); + } + + + @AuthRuleAnnotation("") + @GetMapping("/udiwms/busType/change/target") + public BaseResponse changeTarget(FilterBussinessTypeRequest bussinessTypeFilterRequest, + BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + bussinessTypeFilterRequest.setEnable(true); + bussinessTypeFilterRequest.setMainAction(ConstantType.TYPE_PUT); + List bussinessTypeEntities; + bussinessTypeEntities = basicBussinessTypeService.filterList(bussinessTypeFilterRequest); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setList(bussinessTypeEntities); + return ResultVOUtils.success(pageSimpleResponse); + } + } diff --git a/src/main/java/com/glxp/api/controller/basic/BasicInCodeController.java b/src/main/java/com/glxp/api/controller/basic/BasicInCodeController.java index 2547ae79a..754e5d7ea 100644 --- a/src/main/java/com/glxp/api/controller/basic/BasicInCodeController.java +++ b/src/main/java/com/glxp/api/controller/basic/BasicInCodeController.java @@ -1,12 +1,13 @@ package com.glxp.api.controller.basic; - import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; 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.BusinessType; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.entity.inout.IoOrderEntity; @@ -47,7 +48,7 @@ public class BasicInCodeController { public BaseResponse filterOrder(FilterOrderRequest filterOrderRequest) { - List ioOrderEntityList=ioOrderService.filterList(filterOrderRequest); + List ioOrderEntityList = ioOrderService.filterList(filterOrderRequest); PageInfo pageInfo = new PageInfo<>(ioOrderEntityList); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); @@ -60,7 +61,7 @@ public class BasicInCodeController { @GetMapping("/udiwms/stock/order/detail/filter") public BaseResponse filterStockOrderDetail(FilterOrderDetailBizRequest filterOrderDetailBizRequest) { - List ioOrderDetailBizResponseList=ioOrderDetailBizService.filterList(filterOrderDetailBizRequest); + List ioOrderDetailBizResponseList = ioOrderDetailBizService.filterList(filterOrderDetailBizRequest); PageInfo pageInfo = new PageInfo<>(ioOrderDetailBizResponseList); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); @@ -70,17 +71,18 @@ public class BasicInCodeController { } @PostMapping("/udiwms/stock/order/addOrderPrint") - public BaseResponse addOrderPrint(@RequestBody invInnerOrderprintReques invInnerOrderprintReques){ - - if(invInnerOrderprintReques.getOrderIdFk()!=null){ - Boolean falg=invInnerOrderPrintService.addInCodeList(invInnerOrderprintReques.getOrderIdFk(),invInnerOrderprintReques.isChack()); - if(!falg){ - return ResultVOUtils.error(999,"生成失败!"); - } - }else{ - return ResultVOUtils.error(999,"参数错误!"); + @Log(title = "单据管理", businessType = BusinessType.INSERT) + public BaseResponse addOrderPrint(@RequestBody invInnerOrderprintReques invInnerOrderprintReques) { + + if (invInnerOrderprintReques.getOrderIdFk() != null) { + Boolean falg = invInnerOrderPrintService.addInCodeList(invInnerOrderprintReques.getOrderIdFk(), invInnerOrderprintReques.isChack()); + if (!falg) { + return ResultVOUtils.error(999, "生成失败!"); + } + } else { + return ResultVOUtils.error(999, "参数错误!"); } - return ResultVOUtils.success(); + return ResultVOUtils.success(); } } diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeLostController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeLostController.java index 483cfd805..fcaecac82 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeLostController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeLostController.java @@ -1,21 +1,18 @@ package com.glxp.api.controller.inout; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; 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.constant.BusinessType; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.inout.IoCodeLostEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; -import com.glxp.api.req.inout.FilterOrderDetailResultRequest; import com.glxp.api.res.PageSimpleResponse; -import com.glxp.api.res.inout.AcceptOrderResponse; import com.glxp.api.res.inout.IoCodeLostResponse; -import com.glxp.api.res.inout.IoOrderDetailResultResponse; import com.glxp.api.service.inout.IoCodeLostService; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; @@ -35,8 +32,6 @@ public class IoCodeLostController extends BaseController { @Resource IoCodeLostService codeLostService; - - @AuthRuleAnnotation("") @PostMapping("warehouse/inout/getCodeLost") public BaseResponse getCodeLost(@RequestBody @Valid IoCodeLostEntity ioCodeLostEntity, BindingResult bindingResult) { @@ -54,6 +49,7 @@ public class IoCodeLostController extends BaseController { @AuthRuleAnnotation("") @PostMapping("warehouse/inout/updateCodeLost") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateCodeLost(@RequestBody @Valid IoCodeLostEntity ioCodeLostEntity, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java index 6a5226328..b05a57677 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderController.java @@ -5,9 +5,11 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; 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.BusinessType; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.controller.BaseController; @@ -82,6 +84,10 @@ public class IoOrderController extends BaseController { if (StrUtil.isNotBlank(filterOrderRequest.getVueType())) { orderService.setActions(filterOrderRequest); } + + if (StrUtil.isNotEmpty(filterOrderRequest.getSupInoivceSearch())) { + orderService.setInvoiceFiltes(filterOrderRequest); + } String customerId = getCustomerId(); if (!customerId.equals("110")) { filterOrderRequest.setFromCorp(customerId); @@ -108,6 +114,7 @@ public class IoOrderController extends BaseController { //新增业务-立即提交 @AuthRuleAnnotation("") @PostMapping("warehouse/inout/submitBiz") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse submitBiz(@RequestBody AddOrderRequest addOrderRequest) { //校验单据是否已完成 @@ -142,6 +149,7 @@ public class IoOrderController extends BaseController { //新增扫码单据-立即提交 @AuthRuleAnnotation("") @PostMapping("warehouse/inout/submitCodes") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse submitCodes(@RequestBody AddOrderRequest addOrderRequest) { //校验单据是否已完成 @@ -164,6 +172,7 @@ public class IoOrderController extends BaseController { //新增业务单据,新增扫码单据,等待校验-草稿保存 @AuthRuleAnnotation("") @PostMapping("warehouse/inout/saveOrderWeb") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse saveOrderWeb(@RequestBody AddOrderRequest addOrderRequest) { IoOrderEntity orderEntity = new IoOrderEntity(); if (StrUtil.isEmpty(addOrderRequest.getAction())) @@ -193,6 +202,7 @@ public class IoOrderController extends BaseController { //等待校验-立即提交 @AuthRuleAnnotation("") @PostMapping("warehouse/inout/submitOrderWeb") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse submitOrderWeb(@RequestBody AddOrderRequest addOrderRequest) { //校验单据是否已完成 @@ -209,11 +219,11 @@ public class IoOrderController extends BaseController { if (StrUtil.isNotEmpty(errMsg)) { - return ResultVOUtils.error(500, "单据校验提交失败,请检查后重新提交!"); + return ResultVOUtils.error(500, errMsg); } errMsg = checkInoutService.codeOrderCheck(orderDetailCodeEntities, orderDetailBizEntities); if (StrUtil.isNotEmpty(errMsg)) { - return ResultVOUtils.error(500, "单据校验提交失败,请检查后重新提交!"); + return ResultVOUtils.error(500, errMsg); } saveOrderWeb(addOrderRequest); IoOrderEntity orderEntity = orderService.findByBillNo(addOrderRequest.getBillNo()); @@ -241,6 +251,7 @@ public class IoOrderController extends BaseController { //未校验单据删除 @AuthRuleAnnotation("") @PostMapping("udiwms/inout/order/delete") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse deletById(@RequestBody DeleteRequest deleteRequest) { orderService.deleteByBillNo(deleteRequest.getBillNo()); orderDetailBizService.deleteByOrderId(deleteRequest.getBillNo()); @@ -254,6 +265,7 @@ public class IoOrderController extends BaseController { //已验收单据删除、单据编辑删除等 @AuthRuleAnnotation("") @PostMapping("udiwms/inout/order/finish/delete") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse deleteById(@RequestBody DeleteRequest deleteRequest) { List delBillNos = new ArrayList<>(); if (CollUtil.isNotEmpty(deleteRequest.getBillNos())) { @@ -276,6 +288,7 @@ public class IoOrderController extends BaseController { //单据编辑,条码减一 @AuthRuleAnnotation("") @PostMapping("udiwms/inout/code/finish/delete") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse deleteCodeById(@RequestBody IoCodeEntity codeEntity) { orderService.deleteInvCode(codeEntity.getOrderId(), codeEntity.getCode()); return ResultVOUtils.success("删除成功!"); @@ -284,6 +297,7 @@ public class IoOrderController extends BaseController { //已验收单据撤回 @AuthRuleAnnotation("") @GetMapping("/udiwms/inout/order/received/rollback") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse rollbackOrder(String billNo) { if (StrUtil.isBlank(billNo)) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); @@ -307,6 +321,7 @@ public class IoOrderController extends BaseController { //已校验单据撤回到等待处理 @AuthRuleAnnotation("") @GetMapping("/udiwms/inout/order/unReceive/rollback") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse rollUnReceivebackOrder(String billNo) { if (StrUtil.isBlank(billNo)) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); @@ -437,6 +452,7 @@ public class IoOrderController extends BaseController { * @return */ @PostMapping("/udiwms/inout/order/updateOrderInfo") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateOrderInfo(@RequestBody OrderEditRequest orderEditRequest) { if (null == orderEditRequest || CollUtil.isEmpty(orderEditRequest.getOrderIds())) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); @@ -472,6 +488,17 @@ public class IoOrderController extends BaseController { return orderService.submitToThrSys(billNo); } + @PostMapping("/udiwms/inout/order/updateOrderDetailBiz") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) + public BaseResponse updateOrderDetailBiz(@RequestBody IoOrderDetailBizEntity ioOrderDetailBizEntity) { + if (null == ioOrderDetailBizEntity) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } +// ioOrderDetailBizEntity.setCheckFileName(ioOrderDetailBizEntity.getCheckFileName().substring(0,ioOrderDetailBizEntity.getCheckFileName().length() - 4)); + orderDetailBizService.updateOrderDetailBiz(ioOrderDetailBizEntity); + return ResultVOUtils.success(); + } + @Resource GennerOrderUtils gennerOrderUtils; @Resource @@ -550,5 +577,4 @@ public class IoOrderController extends BaseController { orderService.update(originOrder); return ResultVOUtils.success(); } - } diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java index 215e49b3c..10c8e5ab7 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailBizController.java @@ -5,9 +5,11 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; 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.BusinessType; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.controller.BaseController; @@ -16,6 +18,8 @@ import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.*; import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.purchase.PurOrderDetailEntity; +import com.glxp.api.entity.purchase.PurOrderEntity; import com.glxp.api.entity.purchase.SupProductEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.entity.thrsys.ThrOrderDetailEntity; @@ -31,6 +35,9 @@ import com.glxp.api.res.inout.IoOrderInvoiceResponse; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.*; import com.glxp.api.service.inout.*; +import com.glxp.api.service.purchase.PurOrderDetailService; +import com.glxp.api.service.purchase.PurOrderService; +import com.glxp.api.service.purchase.SupCertService; import com.glxp.api.service.purchase.SupProductService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.service.thrsys.ThrOrderDetailService; @@ -98,15 +105,16 @@ public class IoOrderDetailBizController extends BaseController { SupProductService supProductService; @Resource SystemParamConfigService systemParamConfigService; + @Resource + SupCertService supCertService; //录入业务单据详情 @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/addBizProduct") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse addBizProduct(@RequestBody AddBizProductReqeust addBizProductReqeust) { SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("vail_product_cert"); - boolean isVailCert = false; - if (systemParamConfigEntity != null) - isVailCert = systemParamConfigEntity.getParamValue().equals("1") ? true : false; + boolean isVailCert = systemParamConfigEntity.getParamValue().equals("1") ? true : false; AuthAdmin authAdmin = getUser(); if (addBizProductReqeust.getRelId() == null && CollUtil.isEmpty(addBizProductReqeust.getDatas())) return ResultVOUtils.error(500, "未选择产品信息"); @@ -188,6 +196,7 @@ public class IoOrderDetailBizController extends BaseController { //修改业务单据详情 @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/updateBizProduct") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateBizProduct(@RequestBody IoOrderDetailBizEntity orderDetailBizEntity) { boolean isExit = orderDetailBizService.isExit(orderDetailBizEntity.getBindRlFk(), orderDetailBizEntity.getBatchNo(), orderDetailBizEntity.getId(), orderDetailBizEntity.getOrderIdFk()); if (isExit) { @@ -207,6 +216,7 @@ public class IoOrderDetailBizController extends BaseController { //选入第三方单据至业务单据 @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/addThrOrder") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse addThrOrder(@RequestBody ThrOrderEntity thrOrderRequest) { ThrOrderEntity thrOrderEntity = thrOrderService.findById(thrOrderRequest.getId()); @@ -332,6 +342,7 @@ public class IoOrderDetailBizController extends BaseController { //选入领用单据至业务单据 @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/addReceiveOrder") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse addReceiveOrder(@RequestBody PurReceiveEntity purReceiveEntity, BindingResult bindingResult) { @@ -392,8 +403,74 @@ public class IoOrderDetailBizController extends BaseController { } + @Resource + PurOrderService purOrderService; + @Resource + PurOrderDetailService purOrderDetailService; + + //选入领用单据至业务单据 + @AuthRuleAnnotation("") + @PostMapping("/udiwms/inout/order/addPurOrder") + @Log(title = "单据管理", businessType = BusinessType.INSERT) + public BaseResponse addPurOrder(@RequestBody PurOrderEntity purOrderEntity, + BindingResult bindingResult) { + + if (bindingResult.hasErrors()) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); + } + purOrderEntity = purOrderService.selectById(purOrderEntity.getId()); + List purOrderDetailEntities = purOrderDetailService.findByOrderId(purOrderEntity.getId() + ""); + BasicBusTypeChangeEntity basicBusTypeChangeEntity = basicBusTypeChangeService.selectByOriginAction(purOrderEntity.getBillType()); + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(basicBusTypeChangeEntity.getTargetAction()); + + AuthAdmin authAdmin = getUser(); + //创建单据 + IoOrderEntity orderEntity = new IoOrderEntity(); + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); + orderEntity.setBillNo(orderNo); + orderEntity.setCreateUser(authAdmin.getId() + ""); + orderEntity.setCreateTime(new Date()); + orderEntity.setUpdateUser(authAdmin.getId() + ""); + orderEntity.setUpdateTime(new Date()); + orderEntity.setCustomerId(authAdmin.getCustomerId() + ""); + orderEntity.setCorpOrderId(purOrderEntity.getBillNo()); + orderEntity.setAction(bussinessTypeEntity.getAction()); + orderEntity.setMainAction(bussinessTypeEntity.getMainAction()); + orderEntity.setDeptCode(purOrderEntity.getDeptCode()); + orderEntity.setInvCode(purOrderEntity.getInvCode()); + orderEntity.setFromReceiveBillNo(purOrderEntity.getBillNo()); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE); + orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_DRAFT); + orderEntity.setFromType(ConstantStatus.FROM_RECEIVE); + orderEntity.setOrderType(ConstantStatus.ORDER_TYPE_BIZ); + orderEntity.setBusType(bussinessTypeEntity.getBusType()); + orderService.insertOrder(orderEntity); + for (PurOrderDetailEntity purReceiveDetailEntity : purOrderDetailEntities) { + IoOrderDetailBizEntity ioOrderDetailBizEntity = new IoOrderDetailBizEntity(); + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(purReceiveDetailEntity.getProductId().longValue()); + ioOrderDetailBizEntity.setOrderIdFk(orderEntity.getBillNo()); + ioOrderDetailBizEntity.setBindRlFk(udiRelevanceResponse.getId()); + ioOrderDetailBizEntity.setUuidFk(udiRelevanceResponse.getUuid()); + ioOrderDetailBizEntity.setNameCode(udiRelevanceResponse.getNameCode()); + ioOrderDetailBizEntity.setCoName(udiRelevanceResponse.getCpmctymc()); + ioOrderDetailBizEntity.setCertCode(udiRelevanceResponse.getZczbhhzbapzbh()); + ioOrderDetailBizEntity.setYlqxzcrbarmc(udiRelevanceResponse.getYlqxzcrbarmc()); + ioOrderDetailBizEntity.setManufacturer(udiRelevanceResponse.getManufactory()); + ioOrderDetailBizEntity.setMeasname(udiRelevanceResponse.getMeasname()); + ioOrderDetailBizEntity.setSpec(udiRelevanceResponse.getGgxh()); + ioOrderDetailBizEntity.setPrice(udiRelevanceResponse.getPrice()); + ioOrderDetailBizEntity.setSupId(purReceiveDetailEntity.getSupId()); + ioOrderDetailBizEntity.setCount(purReceiveDetailEntity.getCount()); + orderDetailBizService.insert(ioOrderDetailBizEntity); + } + return ResultVOUtils.success("选入成功!"); + + } + + @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/order/delBizProduct") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse delBizProduct(@RequestBody DeleteRequest deleteRequest) { return orderDetailBizService.deleteById(Integer.parseInt(deleteRequest.getId())) > 0 ? ResultVOUtils.success("删除成功!") : ResultVOUtils.error(500, "删除失败"); } @@ -424,6 +501,7 @@ public class IoOrderDetailBizController extends BaseController { @AuthRuleAnnotation("") @PostMapping("/udiwms/inout/biz/updateBind") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateBindSup(@RequestBody BizBindUpdateRequest bizBindUpdateRequest) { @@ -447,6 +525,7 @@ public class IoOrderDetailBizController extends BaseController { * @return */ @GetMapping("/udiwms/inout/biz/deleteById") + @Log(title = "发票管理", businessType = BusinessType.DELETE) public BaseResponse deleteById(Integer id) { return ResultVOUtils.success(ioOrderInvoiceService.deleteByInvId(id)); @@ -461,6 +540,7 @@ public class IoOrderDetailBizController extends BaseController { */ @PostMapping("/udiwms/inout/biz/updateById") + @Log(title = "发票管理", businessType = BusinessType.UPDATE) public BaseResponse deleteById(@RequestBody IoOrderInvoiceRequest ioOrderInvoiceRequest) { return ResultVOUtils.success(ioOrderInvoiceService.updateByInvId(ioOrderInvoiceRequest)); @@ -469,20 +549,17 @@ public class IoOrderDetailBizController extends BaseController { @PostMapping("/udiwms/inout/biz/insertInvoice") - public BaseResponse insertInvoice(@RequestBody List list) { - if (CollUtil.isEmpty(list)) { - return ResultVOUtils.error(500, "请选入产品!"); - } - for (IoOrderDetailResultEntity ioOrderDetailResultEntity : list) { - IoOrderInvoiceEntity ioOrderInvoiceEntity = new IoOrderInvoiceEntity(); - ioOrderInvoiceEntity.setOrderIdFk(ioOrderDetailResultEntity.getOrderIdFk()); - ioOrderInvoiceEntity.setBindRlFk(ioOrderDetailResultEntity.getBindRlFk() + ""); - ioOrderInvoiceEntity.setBatchNo(ioOrderDetailResultEntity.getBatchNo()); - ioOrderInvoiceEntity.setProductDate(ioOrderDetailResultEntity.getProductDate()); - ioOrderInvoiceEntity.setExpireDate(ioOrderDetailResultEntity.getExpireDate()); - boolean b = ioOrderInvoiceService.insertInvoice(ioOrderInvoiceEntity); - } - + @Log(title = "发票管理", businessType = BusinessType.INSERT) + public BaseResponse insertInvoice(@RequestBody IoOrderDetailBizEntity ioOrderDetailBizEntity) { + + IoOrderInvoiceEntity ioOrderInvoiceEntity = new IoOrderInvoiceEntity(); + ioOrderInvoiceEntity.setOrderIdFk(ioOrderDetailBizEntity.getOrderIdFk()); + ioOrderInvoiceEntity.setBindRlFk(ioOrderDetailBizEntity.getBindRlFk() + ""); + ioOrderInvoiceEntity.setBatchNo(ioOrderDetailBizEntity.getBatchNo()); + ioOrderInvoiceEntity.setProductDate(ioOrderDetailBizEntity.getProductDate()); + ioOrderInvoiceEntity.setExpireDate(ioOrderDetailBizEntity.getExpireDate()); + ioOrderInvoiceEntity.setBizIdFk(ioOrderDetailBizEntity.getId()); + boolean b = ioOrderInvoiceService.insertInvoice(ioOrderInvoiceEntity); return ResultVOUtils.success("成功"); diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java index 4cbe8ec0f..29e81d7fb 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderDetailResultController.java @@ -7,6 +7,7 @@ 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.ConstantType; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; @@ -73,9 +74,15 @@ public class IoOrderDetailResultController extends BaseController { orderDetailResultRequest.setActions(actions); List list = orderDetailResultService.filterOrderList(orderDetailResultRequest); -// for (IoOrderDetailResultResponse orderDetailResultResponse : list) { -// if(orderDetailResultResponse.get) -// } + for (IoOrderDetailResultResponse orderDetailResultResponse : list) { + if (orderDetailResultResponse.getMainAction().equals(ConstantType.TYPE_OUT)) { + orderDetailResultResponse.setOutCount(orderDetailResultResponse.getReCount()); + orderDetailResultResponse.setInCount(0); + } else { + orderDetailResultResponse.setOutCount(0); + orderDetailResultResponse.setInCount(orderDetailResultResponse.getReCount()); + } + } PageInfo pageInfo = new PageInfo<>(list); return ResultVOUtils.page(pageInfo); } diff --git a/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java b/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java index 51bab05f9..37cbb6f85 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java @@ -5,9 +5,11 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; 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.BusinessType; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.controller.BaseController; @@ -16,16 +18,20 @@ import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.EntrustReceEntity; import com.glxp.api.entity.inout.*; import com.glxp.api.entity.system.SystemParamConfigEntity; +import com.glxp.api.http.sync.SpGetHttpClient; import com.glxp.api.req.inout.FilterOrderDetailResultRequest; import com.glxp.api.req.inout.ReviewFinishRequest; +import com.glxp.api.req.inout.ReviewSpmsRequest; import com.glxp.api.req.inout.UpdateExportStatusRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.inout.AcceptOrderResponse; import com.glxp.api.res.inout.IoOrderDetailResultResponse; +import com.glxp.api.res.sync.SpsSyncOrderResponse; import com.glxp.api.service.auth.AuthAdminService; import com.glxp.api.service.basic.EntrustReceService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inout.*; +import com.glxp.api.service.sync.HeartService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.GennerOrderUtils; @@ -109,6 +115,7 @@ public class IoOrderReviewController extends BaseController { //前端二次审核 @AuthRuleAnnotation("") @PostMapping("/spms/inout/order/web/updateStatus") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse webUpdateStatus(@RequestBody ReviewFinishRequest updateExportStatusRequest, BindingResult bindingResult) { @@ -133,6 +140,7 @@ public class IoOrderReviewController extends BaseController { //前端第三次验收 @AuthRuleAnnotation("") @PostMapping("/spms/inout/order/third/updateStatus") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse thirdUpdateStatus(@RequestBody ReviewFinishRequest updateExportStatusRequest, BindingResult bindingResult) { @@ -221,6 +229,7 @@ public class IoOrderReviewController extends BaseController { //手持终端验收完成后,更新订单状态 @AuthRuleAnnotation("") @PostMapping("/spms/inout/order/check/updateStatus") + @Log(title = "单据管理", businessType = BusinessType.UPDATE) public BaseResponse updateStatus(@RequestBody UpdateExportStatusRequest updateExportStatusRequest, BindingResult bindingResult) { AuthAdmin authAdmin = null; @@ -291,6 +300,7 @@ public class IoOrderReviewController extends BaseController { supplementOrder.setFromType(ConstantStatus.FROM_REVIEW); supplementOrder.setMainAction(bussinessTypeEntity.getMainAction()); supplementOrder.setAction(bussinessTypeEntity.getAction()); + orderEntity.setBusType(bussinessTypeEntity.getBusType()); //复制码表 List supplementCodes = new ArrayList<>(); warehouseEntities.forEach( @@ -366,6 +376,7 @@ public class IoOrderReviewController extends BaseController { return false; } + //前端页面清空,重新验收 @AuthRuleAnnotation("") @PostMapping("/udiwms/stock/order/acceptClear") public BaseResponse acceptClear(@RequestBody AcceptOrderResponse acceptOrderEntity) { @@ -388,17 +399,24 @@ public class IoOrderReviewController extends BaseController { orderService.update(orderEntity); redisUtil.del(ConstantStatus.REDIS_BILLNO + orderEntity.getBillNo()); redisUtil.del(ConstantStatus.REDIS_BILLNO_CODES + orderEntity.getBillNo()); + + if (orderEntity.getFromType() == ConstantStatus.FROM_UDISP) { + ReviewFinishRequest reviewFinishRequest = new ReviewFinishRequest(); + reviewFinishRequest.setOrderId(orderEntity.getBillNo()); + spGetHttp.reviewOrder(reviewFinishRequest); + } + //验收完成->进入流程 ioCheckInoutService.checkSecond(orderEntity); return ResultVOUtils.success("更新成功"); } - //前端第三次验收 + //前端第二次次验收 public BaseResponse thirdUpdateReview(AuthAdmin authAdmin, IoOrderEntity orderEntity) { orderEntity.setStatus(ConstantStatus.ORDER_STATUS_CHECK_REW); orderEntity.setReviewUser(authAdmin.getId() + ""); orderEntity.setUpdateTime(new Date()); - orderEntity.setAuditTime(new Date()); + orderEntity.setCheckTime(new Date()); orderEntity.setDeliveryStatus(ConstantStatus.ORDER_DELIVERY_STATUS_ED); orderService.update(orderEntity); redisUtil.del(ConstantStatus.REDIS_BILLNO + orderEntity.getBillNo()); @@ -408,4 +426,66 @@ public class IoOrderReviewController extends BaseController { return ResultVOUtils.success("更新成功"); } + + @Resource + HeartService heartService; + @Resource + SpGetHttpClient spGetHttp; + + // 新增扫码验收单,本地不存在拉去自助平台待验收单 + @AuthRuleAnnotation("") + @PostMapping("/udiwms/order/reviewSpms") + public BaseResponse reviewSpms(@RequestBody ReviewSpmsRequest reviewSpmsRequest) { + + String billNo = reviewSpmsRequest.getBillNo(); + if (StrUtil.isEmpty(reviewSpmsRequest.getBillNo())) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + AcceptOrderResponse acceptOrderEntity = new AcceptOrderResponse(); + acceptOrderEntity.setBillNo(billNo); + List datas = (List) redisUtil.get(ConstantStatus.REDIS_BILLNO + billNo); + if (CollUtil.isNotEmpty(datas)) { + acceptOrderEntity.setOrderDetailEntities(datas); + acceptOrderEntity.setExitAccept(true); + } else { + FilterOrderDetailResultRequest filterOrderDetailResultRequest = new FilterOrderDetailResultRequest(); + filterOrderDetailResultRequest.setOrderIdFk(billNo); + List orderDetailResultResponses = orderDetailResultService.filterList(filterOrderDetailResultRequest); + //本地已存在,则直接返回 + if (CollUtil.isNotEmpty(orderDetailResultResponses)) { + acceptOrderEntity.setOrderDetailEntities(orderDetailResultResponses); + acceptOrderEntity.setExitAccept(false); + } else { + //获取自助平台待审核单据,并插入到数据库 + BaseResponse baseResponse = spGetHttp.getReviewOrder(reviewSpmsRequest); + if (baseResponse.getCode() == 20000) { + SpsSyncOrderResponse spsSyncOrderResponse = baseResponse.getData(); + List orderEntities = spsSyncOrderResponse.getOrderEntities(); + if (CollUtil.isNotEmpty(orderEntities)) { + IoOrderEntity orderEntity = orderEntities.get(0); + orderEntity.setUpdateTime(null); + orderEntity.setFromType(ConstantStatus.FROM_UDISP); + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); + IoOrderEntity temp = orderService.findByBillNo(orderEntity.getBillNo()); + if (temp == null) { + orderEntity.setId(null); + orderService.insertOrder(orderEntity); + heartService.insetOrderDb(spsSyncOrderResponse, orderEntity); + } + FilterOrderDetailResultRequest tempRequest = new FilterOrderDetailResultRequest(); + tempRequest.setOrderIdFk(billNo); + List detailResultResponses = orderDetailResultService.filterList(tempRequest); + if (CollUtil.isNotEmpty(detailResultResponses)) { + acceptOrderEntity.setOrderDetailEntities(detailResultResponses); + acceptOrderEntity.setExitAccept(false); + } + } + } else { + return ResultVOUtils.error(500, baseResponse.getMessage()); + } + } + } + return ResultVOUtils.success(acceptOrderEntity); + } + } diff --git a/src/main/java/com/glxp/api/controller/inout/ioCodeRelController.java b/src/main/java/com/glxp/api/controller/inout/ioCodeRelController.java index 24e735322..712a089b3 100644 --- a/src/main/java/com/glxp/api/controller/inout/ioCodeRelController.java +++ b/src/main/java/com/glxp/api/controller/inout/ioCodeRelController.java @@ -3,18 +3,16 @@ package com.glxp.api.controller.inout; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; -import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.annotation.Log; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.BusinessType; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.inout.IoCodeRelEntity; import com.glxp.api.req.inout.IoOrderRelRequest; -import com.glxp.api.req.purchase.PurApplyRequest; import com.glxp.api.res.PageSimpleResponse; -import com.glxp.api.res.inout.IoCodeLostResponse; import com.glxp.api.res.inout.IoCodeRelResponse; -import com.glxp.api.res.purchase.PurApplyResponse; import com.glxp.api.service.basic.UdiProductService; import com.glxp.api.service.inout.IoCodeRelService; import com.glxp.api.util.udi.FilterUdiUtils; @@ -69,6 +67,7 @@ public class ioCodeRelController { } @GetMapping("/udi/ioCode/Rel/checkLowProduct") + @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse checkLowProduct(String upCode, String lowCode) { UdiProductEntity udiProductEntity = new UdiProductEntity(); @@ -131,6 +130,7 @@ public class ioCodeRelController { @GetMapping("/udi/ioCode/Rel/del") + @Log(title = "单据管理", businessType = BusinessType.DELETE) public BaseResponse del(String code, String parentCode) { int count = ioCodeRelServicec.delIoCodeRel(code, parentCode); diff --git a/src/main/java/com/glxp/api/controller/inv/InvInnerOrderPrintController.java b/src/main/java/com/glxp/api/controller/inv/InvInnerOrderPrintController.java index 640fb22fe..6f6badb10 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvInnerOrderPrintController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvInnerOrderPrintController.java @@ -1,24 +1,18 @@ package com.glxp.api.controller.inv; -import cn.hutool.core.thread.ThreadUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; -import com.glxp.api.dao.inv.InvInnerOrderPdfTempDao; -import com.glxp.api.entity.inv.InvInnerOrderPrintEntity; import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; +import com.glxp.api.entity.inv.InvInnerOrderPrintEntity; import com.glxp.api.entity.system.SystemPDFModuleEntity; import com.glxp.api.entity.system.SystemPDFTemplateEntity; import com.glxp.api.req.inout.InspectionPDFTemplateRequest; import com.glxp.api.req.inv.*; import com.glxp.api.res.PageSimpleResponse; -import com.glxp.api.res.inv.innerOrderPrintRequest; -import com.glxp.api.service.auth.CustomerService; -import com.glxp.api.service.basic.UdiProductService; -import com.glxp.api.service.inv.InnerOrderDetailService; +import com.glxp.api.res.inv.InnerOrderPrintResponse; import com.glxp.api.service.inv.InvInnerOrderPdfTempService; import com.glxp.api.service.inv.InvInnerOrderPrintService; import com.glxp.api.service.inv.JaspaperService; @@ -29,7 +23,6 @@ import com.glxp.api.util.FileUtils; import com.glxp.api.util.JasperUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -40,7 +33,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @RestController public class InvInnerOrderPrintController { @@ -111,23 +107,23 @@ public class InvInnerOrderPrintController { SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(String.valueOf(systemPDFModuleEntity.getTemplateId())); if (systemPDFTemplateEntity == null) return null; - List printEntities = new ArrayList<>(); - List mStockPrintEntities = new ArrayList<>(); + List printEntities = new ArrayList<>(); + List mStockPrintEntities = new ArrayList<>(); FilterinnerOrderprintRequest filterinnerOrderprintRequest = new FilterinnerOrderprintRequest(); if (stockQRCodeTextPDFTemplateRequest.getOrderId() != null) { filterinnerOrderprintRequest.setSOrderId(stockQRCodeTextPDFTemplateRequest.getOrderId()); } else { filterinnerOrderprintRequest.setId(stockQRCodeTextPDFTemplateRequest.getQueryId()); } - List stockPrintEntities = invInnerOrderPrintService.filterJoinInnerPrint(filterinnerOrderprintRequest); + List stockPrintEntities = invInnerOrderPrintService.filterJoinInnerPrint(filterinnerOrderprintRequest); if (stockPrintEntities != null && stockPrintEntities.size() > 0) { mStockPrintEntities.addAll(stockPrintEntities); } - for (innerOrderPrintRequest innerOrderPrintRequest : mStockPrintEntities) { + for (InnerOrderPrintResponse innerOrderPrintRequest : mStockPrintEntities) { PdfPrintCountEntity pdfPrintCount = getCount(stockQRCodeTextPDFTemplateRequest.getCountList(), innerOrderPrintRequest); if (pdfPrintCount != null && pdfPrintCount.getRowCount() > 0) { for (int i = 0; i < pdfPrintCount.getRowCount(); i++) { - innerOrderPrintRequest clone = new innerOrderPrintRequest(); + InnerOrderPrintResponse clone = new InnerOrderPrintResponse(); BeanUtils.copyProperties(innerOrderPrintRequest, clone); printEntities.add(clone); } @@ -140,7 +136,7 @@ public class InvInnerOrderPrintController { if (!FileUtils.isFileExist(dirPath + "/pdfprint")) { new File(dirPath + "/pdfprint").mkdirs(); } - List> splits = CustomUtil.splitList(printEntities, 100); + List> splits = CustomUtil.splitList(printEntities, 100); int index = 0; List stockPrintTempEntities = new ArrayList<>(); for (int i = 0; i < splits.size(); i++) { @@ -179,7 +175,7 @@ public class InvInnerOrderPrintController { } - for (innerOrderPrintRequest innerOrderPrintRequest : mStockPrintEntities) { + for (InnerOrderPrintResponse innerOrderPrintRequest : mStockPrintEntities) { InvInnerOrderPrintEntity innerOrderPrintEntity = new InvInnerOrderPrintEntity(); innerOrderPrintEntity.setStatus(1); innerOrderPrintEntity.setId(innerOrderPrintRequest.getId()); @@ -189,7 +185,7 @@ public class InvInnerOrderPrintController { } - public PdfPrintCountEntity getCount(List countList, innerOrderPrintRequest innerOrderPrintRequest) { + public PdfPrintCountEntity getCount(List countList, InnerOrderPrintResponse innerOrderPrintRequest) { for (PdfPrintCountEntity pdfPrintCount : countList) { if (pdfPrintCount.getQueryId().equals(innerOrderPrintRequest.getId() + "")) { return pdfPrintCount; diff --git a/src/main/java/com/glxp/api/controller/sync/SyncDataSetController.java b/src/main/java/com/glxp/api/controller/sync/SyncDataSetController.java index c63e17bec..ebd61b96f 100644 --- a/src/main/java/com/glxp/api/controller/sync/SyncDataSetController.java +++ b/src/main/java/com/glxp/api/controller/sync/SyncDataSetController.java @@ -21,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 @@ -57,14 +58,21 @@ public class SyncDataSetController { ) { SyncDataSetEntity syncDataSetEntity = new SyncDataSetEntity(); BeanUtils.copyProperties(syncDataSetResponse, syncDataSetEntity); + syncDataSetEntity.setUpdateTime(new Date()); syncDataSetEntity.setId(1); List busTypes = syncDataSetResponse.getBusTypes(); - syncDataBustypeService.deleteAll(); + syncDataBustypeService.deleteAll(1); if (CollUtil.isNotEmpty(busTypes)) syncDataBustypeService.inserts(busTypes); - syncDataSetEntity.setBusTypes(null); + + List toInBusTypes = syncDataSetResponse.getToInBusTypes(); + syncDataBustypeService.deleteAll(2); + if (CollUtil.isNotEmpty(toInBusTypes)) + syncDataBustypeService.inserts(toInBusTypes); + if (CollUtil.isNotEmpty(syncDataSetResponse.getChangeBusTypes())) { + syncDataChangeBustypeService.deleteAll(); syncDataChangeBustypeService.inserts(syncDataSetResponse.getChangeBusTypes()); } @@ -77,6 +85,8 @@ public class SyncDataSetController { if (!b) { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } + + //todo 请立即同步至UDI管理系统 return ResultVOUtils.success(); } } diff --git a/src/main/java/com/glxp/api/dao/auth/InvWarehouseDao.java b/src/main/java/com/glxp/api/dao/auth/InvWarehouseDao.java index 62f0d8ec4..4b5a65a64 100644 --- a/src/main/java/com/glxp/api/dao/auth/InvWarehouseDao.java +++ b/src/main/java/com/glxp/api/dao/auth/InvWarehouseDao.java @@ -2,6 +2,7 @@ package com.glxp.api.dao.auth; import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; import com.glxp.api.req.auth.FilterInvSubWarehouseRequest; import com.glxp.api.req.auth.FilterInvWarehouseRequest; import com.glxp.api.res.auth.InvSubWarehouseResponse; @@ -95,4 +96,6 @@ public interface InvWarehouseDao extends BaseMapperPlus filterJoinByUser(FilterBussinessTypeRequest filterBussinessTypeRequest); + List filterJoinByInv(FilterBussinessTypeRequest filterBussinessTypeRequest); /** * 忽略已存在数据插入单据类型 @@ -71,4 +72,6 @@ public interface BasicBussinessTypeDao extends BaseMapperPlus selectbyNotAction(@Param("list") List list); } diff --git a/src/main/java/com/glxp/api/dao/inout/IoCodeRelMapper.java b/src/main/java/com/glxp/api/dao/inout/IoCodeRelMapper.java index 5391e6618..6e25c8691 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoCodeRelMapper.java +++ b/src/main/java/com/glxp/api/dao/inout/IoCodeRelMapper.java @@ -1,10 +1,8 @@ package com.glxp.api.dao.inout; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.glxp.api.entity.inout.IoCodeLostEntity; import com.glxp.api.entity.inout.IoCodeRelEntity; import com.glxp.api.req.inout.IoOrderRelRequest; -import com.glxp.api.res.inout.IoCodeLostResponse; import com.glxp.api.res.inout.IoCodeRelResponse; import org.apache.ibatis.annotations.Mapper; diff --git a/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java b/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java index 5c880c789..5815573e7 100644 --- a/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java +++ b/src/main/java/com/glxp/api/dao/inout/IoOrderDetailResultDao.java @@ -4,7 +4,7 @@ import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.inout.IoOrderDetailResultEntity; import com.glxp.api.req.inout.FilterOrderDetailResultRequest; import com.glxp.api.res.inout.IoOrderDetailResultResponse; -import org.apache.ibatis.annotations.Param; +import io.lettuce.core.dynamic.annotation.Param; import java.util.List; diff --git a/src/main/java/com/glxp/api/dao/inv/InvInnerOrderPrintDao.java b/src/main/java/com/glxp/api/dao/inv/InvInnerOrderPrintDao.java index 053580089..e4f317735 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvInnerOrderPrintDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvInnerOrderPrintDao.java @@ -3,7 +3,7 @@ package com.glxp.api.dao.inv; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inv.InvInnerOrderPrintEntity; import com.glxp.api.req.inv.FilterinnerOrderprintRequest; -import com.glxp.api.res.inv.innerOrderPrintRequest; +import com.glxp.api.res.inv.InnerOrderPrintResponse; import java.util.List; @@ -11,5 +11,5 @@ public interface InvInnerOrderPrintDao extends BaseMapper filterOrderPrintList(FilterinnerOrderprintRequest filterinnerOrderprintRequest); - List filterJoinInnerPrint(FilterinnerOrderprintRequest filterinnerOrderprintRequest); -} \ No newline at end of file + List filterJoinInnerPrint(FilterinnerOrderprintRequest filterinnerOrderprintRequest); +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvRemindSetDao.java b/src/main/java/com/glxp/api/dao/inv/InvRemindSetDao.java index f06e3d6e8..364d97955 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvRemindSetDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvRemindSetDao.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inv.InvRemindSetEntity; import com.glxp.api.req.inv.FilterInvRemindSetRequest; import com.glxp.api.res.inv.InvRemindSetResponse; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -19,4 +20,12 @@ public interface InvRemindSetDao extends BaseMapper { * @return */ List filterList(FilterInvRemindSetRequest filterInvRemindSetRequest); + + /** + * 根据库存ID查询预警设置信息 + * + * @param invId + * @return + */ + InvRemindSetResponse selectInfoByInvId(@Param("invId") Integer invId); } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java b/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java index 76001694e..cbf211f0a 100644 --- a/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/PurOrderDao.java @@ -1,15 +1,13 @@ package com.glxp.api.dao.purchase; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.dao.BaseMapperPlus; import com.glxp.api.entity.purchase.PurOrderEntity; import com.glxp.api.req.purchase.PurOrderRequest; -import com.glxp.api.req.purchase.PurPlanRequest; import com.glxp.api.res.purchase.PurOrderResponse; -import com.glxp.api.res.purchase.PurPlanResponse; import java.util.List; -public interface PurOrderDao extends BaseMapper { +public interface PurOrderDao extends BaseMapperPlus { List queryPageList(PurOrderRequest purPlanRequest); -} \ No newline at end of file +} diff --git a/src/main/java/com/glxp/api/dao/sync/SyncDataBustypeDao.java b/src/main/java/com/glxp/api/dao/sync/SyncDataBustypeDao.java index a13984d3d..fb8e39f20 100644 --- a/src/main/java/com/glxp/api/dao/sync/SyncDataBustypeDao.java +++ b/src/main/java/com/glxp/api/dao/sync/SyncDataBustypeDao.java @@ -1,17 +1,18 @@ package com.glxp.api.dao.sync; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.system.SyncDataBustypeEntity; +import com.glxp.api.entity.system.SyncDataChangeBustypesEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface SyncDataBustypeDao { +public interface SyncDataBustypeDao extends BaseMapper { List findAll(); - boolean deleteAll(); void inserts(@Param("syncDataBustypeEntities") List syncDataBustypeEntities); diff --git a/src/main/java/com/glxp/api/dao/thrsys/ThrBusTypeOriginDao.java b/src/main/java/com/glxp/api/dao/thrsys/ThrBusTypeOriginDao.java index e3d83826c..85b5b1c5b 100644 --- a/src/main/java/com/glxp/api/dao/thrsys/ThrBusTypeOriginDao.java +++ b/src/main/java/com/glxp/api/dao/thrsys/ThrBusTypeOriginDao.java @@ -14,7 +14,7 @@ import java.util.List; * 第三方单据类型表查询接口 */ @Mapper -public interface ThrBusTypeOriginDao extends BaseMapperPlus { +public interface ThrBusTypeOriginDao extends BaseMapperPlus { /** * 查询第三方单据类型列表 @@ -47,4 +47,4 @@ public interface ThrBusTypeOriginDao extends BaseMapperPlusSPMS 2:SPMS->UDI管理系统 } diff --git a/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java b/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java index 429f8ff0b..14e9f7400 100644 --- a/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java +++ b/src/main/java/com/glxp/api/entity/system/SyncDataSetEntity.java @@ -2,44 +2,60 @@ package com.glxp.api.entity.system; import lombok.Data; +import java.util.Date; + @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 basicThirdProducts; //第三方产品信息 - private boolean basicThirdCorp; //第三方往来信息 - private boolean basicThirdInv; //第三方仓库信息 - private boolean basicThirdBusOrder; //第三方业务单据 - private boolean orderScanFinish; //已完成单据 - private boolean dbDiProducts; //DI产品信息 + 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 boolean orderUnReceive; //未验收单据 - private boolean orderUnCheck; //待校验单据 - private String busTypes; //单据类型 - private String syncIp; - private boolean sysUser; - private boolean entrustAction; + 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 Integer orderSyncTime; - private Integer orderSyncDlTime; + private int supCert; //首营资质证书 - private boolean unCheckCert; - private boolean checkedCert; - private boolean companyCert; - private boolean manufacturerCert; - private boolean productCert; + 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 String orderSyncStart; private String basicSyncStart; + + private Date updateTime; + + + private int companyCert; + private int manufacturerCert; + private int productCert; + } 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 38f21c1cc..880668c46 100644 --- a/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java +++ b/src/main/java/com/glxp/api/http/sync/SpGetHttpClient.java @@ -8,14 +8,15 @@ import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.IOOrderStatusEntity; import com.glxp.api.entity.system.SyncDataSetEntity; +import com.glxp.api.req.inout.ReviewFinishRequest; +import com.glxp.api.req.inout.ReviewSpmsRequest; import com.glxp.api.req.sync.BasicExportStatusRequest; import com.glxp.api.req.sync.OrderStatusFilterRequest; import com.glxp.api.res.PageSimpleResponse; -import com.glxp.api.res.sync.DlOrderResponse; -import com.glxp.api.res.sync.SpsSyncBusOrderResponse; -import com.glxp.api.res.sync.SpsSyncOrderResponse; +import com.glxp.api.res.sync.*; import com.glxp.api.service.sync.SyncDataSetService; import com.glxp.api.util.OkHttpCli; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -32,24 +33,79 @@ public class SpGetHttpClient { @Resource SyncDataSetService syncDataSetService; + @Value("${API_KEY}") + private String apiKey; + @Value("${API_SECRET}") + private String apiSecret; + public String getIpUrl() { SyncDataSetEntity syncDataSetEntity = syncDataSetService.findSet(); return syncDataSetEntity.getSyncIp(); } + public String[] buildHeader() { + String[] headers = {"apiKey", apiKey, "apiSecret", apiSecret}; + return headers; + } + + //上传扫码单据 public BaseResponse postAllOrder(SpsSyncOrderResponse spsSyncOrderResponse) { String json = JSONUtil.toJsonStr(spsSyncOrderResponse); - String result = okHttpCli.doPostJson(getIpUrl() + "/orderApi/sps/sync/order/upload", json); + String result = okHttpCli.doPostJson(getIpUrl() + "/orderApi/sps/sync/order/upload", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); return response; } + //上传业务单据 public BaseResponse postAllBusOrder(SpsSyncBusOrderResponse spsSyncOrderResponse) { String json = JSONUtil.toJsonStr(spsSyncOrderResponse); - String result = okHttpCli.doPostJson(getIpUrl() + "/busOrderApi/sps/sync/busOrder/upload", json); + String result = okHttpCli.doPostJson(getIpUrl() + "/busOrderApi/sps/sync/busOrder/upload", json, buildHeader()); + BaseResponse response = + JSONObject.parseObject(result, new TypeReference>() { + }); + return response; + } + + + //上传单据类型 + public BaseResponse postAllBusType(SpsSyncBusResponse spsSyncBusResponse) { + String json = JSONUtil.toJsonStr(spsSyncBusResponse); + String result = okHttpCli.doPostJson(getIpUrl() + "/sps/sync/busType/upload", json, buildHeader()); + BaseResponse response = + JSONObject.parseObject(result, new TypeReference>() { + }); + return response; + } + + + //上传单据类型 + public BaseResponse postAllUser(SpsSyncDataResponse syncDataResponse) { + String json = JSONUtil.toJsonStr(syncDataResponse); + String result = okHttpCli.doPostJson(getIpUrl() + "/sps/sync/allUser/upload", json, buildHeader()); + BaseResponse response = + JSONObject.parseObject(result, new TypeReference>() { + }); + return response; + } + + + //获取自助平台验收单据---直连接口 + public BaseResponse getReviewOrder(ReviewSpmsRequest reviewSpmsRequest) { + String json = JSONUtil.toJsonStr(reviewSpmsRequest); + String result = okHttpCli.doPostJson(getIpUrl() + "/udiwms/order/getReviews", json, buildHeader()); + BaseResponse response = + JSONObject.parseObject(result, new TypeReference>() { + }); + return response; + } + + //验收自助平台单据--直连接口 + public BaseResponse reviewOrder(ReviewFinishRequest reviewFinishRequest) { + String json = JSONUtil.toJsonStr(reviewFinishRequest); + String result = okHttpCli.doPostJson(getIpUrl() + "/spms/inout/order/web/updateStatus", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); @@ -60,7 +116,7 @@ public class SpGetHttpClient { public BaseResponse> getOrderStatus() { Map paramMap = new HashMap<>(16); paramMap.put("status", 1 + ""); - String response = okHttpCli.doGet(getIpUrl() + "/spms/inout/order/status", paramMap); + String response = okHttpCli.doGet(getIpUrl() + "/spms/inout/order/status", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { @@ -77,7 +133,7 @@ public class SpGetHttpClient { public BaseResponse> getOrders(String orderId) { Map paramMap = new HashMap<>(16); paramMap.put("orderId", orderId); - String response = okHttpCli.doGet(getIpUrl() + "/spms/inout/order/dlByStatus", paramMap); + String response = okHttpCli.doGet(getIpUrl() + "/spms/inout/order/dlByStatus", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { @@ -95,7 +151,7 @@ public class SpGetHttpClient { orderStatusFilterRequest.setOrderId(orderId); orderStatusFilterRequest.setStatus(2); String json = JSONUtil.toJsonStr(orderStatusFilterRequest); - String result = okHttpCli.doPostJson(getIpUrl() + "/spms/inout/order/updateStatus", json); + String result = okHttpCli.doPostJson(getIpUrl() + "/spms/inout/order/updateStatus", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); @@ -107,7 +163,7 @@ public class SpGetHttpClient { Map paramMap = new HashMap<>(16); paramMap.put("type", type); paramMap.put("status", "3"); - String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap); + String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { @@ -144,7 +200,7 @@ public class SpGetHttpClient { paramMap.put("id", basicExportStatusRequest.getId()); if (basicExportStatusRequest.getScheduleType() != null) paramMap.put("scheduleType", basicExportStatusRequest.getScheduleType() + ""); - String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap); + String response = okHttpCli.doGet(getIpUrl() + "/spssync/basic/udiinfo/getStatus", paramMap, buildHeader()); try { BaseResponse> data = JSONObject.parseObject(response, new TypeReference>>() { @@ -158,12 +214,12 @@ public class SpGetHttpClient { } - public String getBasicData(String id, int type) { + public String getBasicData(String id, String type) { BasicExportStatusRequest basicExportStatusRequest = new BasicExportStatusRequest(); basicExportStatusRequest.setId(id); basicExportStatusRequest.setType(type); String json = JSONUtil.toJsonStr(basicExportStatusRequest); - String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/basic/udiinfo/downloadByStatus", json); + String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/basic/udiinfo/downloadByStatus", json, buildHeader()); return result; } @@ -172,7 +228,7 @@ public class SpGetHttpClient { BasicExportStatusRequest basicStatusFilterRequest = new BasicExportStatusRequest(); basicStatusFilterRequest.setId(id); String json = JSONUtil.toJsonStr(basicStatusFilterRequest); - String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/basic/udiinfo/deleteByStatus", json); + String result = okHttpCli.doPostJson(getIpUrl() + "/spssync/basic/udiinfo/deleteByStatus", json, buildHeader()); BaseResponse response = JSONObject.parseObject(result, new TypeReference>() { }); diff --git a/src/main/java/com/glxp/api/idc/controller/ConnectController.java b/src/main/java/com/glxp/api/idc/controller/ConnectController.java new file mode 100644 index 000000000..434eb64d0 --- /dev/null +++ b/src/main/java/com/glxp/api/idc/controller/ConnectController.java @@ -0,0 +1,35 @@ +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.idc.service.ConnectService; + + + + +/** + * 中继服务接口 + */ + +@RestController +public class ConnectController { + @Resource + ConnectService connectService; + + @RequestMapping(value = "/spssync/common/connect") + @ResponseBody + public BaseResponse connect(HttpServletRequest request, @RequestBody Map params) { + + return connectService.connectStatus(request,params); + } + +} diff --git a/src/main/java/com/glxp/api/idc/controller/DeleteController.java b/src/main/java/com/glxp/api/idc/controller/DeleteController.java new file mode 100644 index 000000000..913487f83 --- /dev/null +++ b/src/main/java/com/glxp/api/idc/controller/DeleteController.java @@ -0,0 +1,37 @@ +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 params) { + if(deleteService.syncDelete(params)) + return ResultVOUtils.success(); + return ResultVOUtils.error(9999, "失败"); + } + +} diff --git a/src/main/java/com/glxp/api/idc/controller/IdcController.java b/src/main/java/com/glxp/api/idc/controller/IdcController.java index fdd2e2529..ae07bdb9d 100644 --- a/src/main/java/com/glxp/api/idc/controller/IdcController.java +++ b/src/main/java/com/glxp/api/idc/controller/IdcController.java @@ -57,7 +57,14 @@ public class IdcController { return idcService.receive(request, content, files); } - + @RequestMapping(value = "/spssync/common/once") + @ResponseBody + public BaseResponse once(HttpServletRequest request,@RequestBody Map params) { + // + boolean isUpload = params.get("isUpload")!=null && params.get("isUpload").equals("1") ? true : false ; + return idcService.onceSync( params.get("tableName").toString(), isUpload); + } + //@Log("数据同步测试") @RequestMapping(value = "/spssync/common/test") public BaseResponse test(HttpServletRequest request, @RequestBody Map params) { @@ -78,7 +85,17 @@ public class IdcController { public BaseResponse download(HttpServletRequest request, @RequestBody Map params) { return idcService.download(request, params); } - + @RequestMapping(value = "/spssync/common/uploadStatus") + @ResponseBody + public BaseResponse uploadStatus(HttpServletRequest request, @RequestBody Map params) { + return idcService.uploadStatus(request, params); + } + + @RequestMapping(value = "/spssync/common/downloadStatus") + @ResponseBody + public BaseResponse downloadStatus(HttpServletRequest request, @RequestBody Map params) { + return idcService.downloadStatus(request, params); + } //@Log("数据同步任务根据任务ID,返回下载成功标记") @RequestMapping(value = "/spssync/common/success") @ResponseBody diff --git a/src/main/java/com/glxp/api/idc/service/ConnectService.java b/src/main/java/com/glxp/api/idc/service/ConnectService.java new file mode 100644 index 000000000..0b6f402c0 --- /dev/null +++ b/src/main/java/com/glxp/api/idc/service/ConnectService.java @@ -0,0 +1,12 @@ +package com.glxp.api.idc.service; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import com.glxp.api.common.res.BaseResponse; + +/*连通状态服务*/ +public interface ConnectService { + BaseResponse connectStatus(HttpServletRequest request,Map params); +} diff --git a/src/main/java/com/glxp/api/idc/service/DeleteService.java b/src/main/java/com/glxp/api/idc/service/DeleteService.java new file mode 100644 index 000000000..d8cfa8784 --- /dev/null +++ b/src/main/java/com/glxp/api/idc/service/DeleteService.java @@ -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 params); +} diff --git a/src/main/java/com/glxp/api/idc/service/IdcService.java b/src/main/java/com/glxp/api/idc/service/IdcService.java index 8bbf9cdf2..031d2f49c 100644 --- a/src/main/java/com/glxp/api/idc/service/IdcService.java +++ b/src/main/java/com/glxp/api/idc/service/IdcService.java @@ -9,27 +9,33 @@ import org.springframework.web.multipart.MultipartFile; import com.glxp.api.common.res.BaseResponse; + /*数据中继数据中心(接收)*/ public interface IdcService { - BaseResponse receive(HttpServletRequest request, String content,MultipartFile[] files); - + BaseResponse receiveJson(HttpServletRequest request,Map params); + BaseResponse uploadFile(HttpServletRequest request, + String content,MultipartFile[] files); BaseResponse send(Map params); BaseResponse send(String messageType,String tableName,Map params); BaseResponse taskList(HttpServletRequest request,Map params); - + BaseResponse download(HttpServletRequest request,Map params); - + BaseResponse uploadStatus(HttpServletRequest request,Map params); + BaseResponse downloadStatus(HttpServletRequest request,Map params); public void asyncFetchTask(); public void asyncFetchUdiTask(); + BaseResponse downlaodSuccess(HttpServletRequest request,Map params); - public void asyncIdcTask(); void asyncUdiTask(); void asyncSpsTask(); + void downloadFile(String fileName,HttpServletResponse response) ; + + BaseResponse onceSync(String tableName,boolean isUpload); } diff --git a/src/main/java/com/glxp/api/idc/service/impl/ConnectServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/ConnectServiceImpl.java new file mode 100644 index 000000000..6a599e4bf --- /dev/null +++ b/src/main/java/com/glxp/api/idc/service/impl/ConnectServiceImpl.java @@ -0,0 +1,84 @@ +package com.glxp.api.idc.service.impl; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.idc.DbDao; +import com.glxp.api.idc.service.ConnectService; +import com.glxp.api.idc.utils.IDCUtils; + + +/*连通检测*/ +@Service +public class ConnectServiceImpl implements ConnectService { + private static final Logger logger = LoggerFactory.getLogger(IdcServiceImpl.class); + @Resource + private DbDao dbDao; + private static String NUM_STRS = "⊙①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯"; + //⊙①②③④⑤⑥⑦⑧⑨⑩→⊗ + @Override + public BaseResponse connectStatus(HttpServletRequest request,Map params) { + int level = 0; + if(params.get("level")!=null) { + level = Integer.valueOf(params.get("level").toString()); + } else if(params.get("data")!=null) { + Map data = JSONObject.parseObject(JSON.toJSONString(params.get("data")), Map.class); + if(data.get("level")!=null) { + level = Integer.valueOf(data.get("level").toString()); + } + } + level++; + Map map = new HashMap(); + map.put("level", level); + Map config = new HashMap<>(); + try + { + if(level==0) { + config = dbDao.get("select syncIp as paramValue from sync_data_set limit 1"); + } else { + config = dbDao.get("select * from system_param_config where paramKey='upper_server_ip'"); + } + } catch (Exception ex) { + + } + String msg = "UDI管理系统"; + for(int i=1;i map = new HashMap<>(); + map.put("tableName", tableName); + map.put("uniqueValue", uniqueValue); + return syncDelete(map); + } + @Override + public boolean syncDelete(Map 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) { + + } + } +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/idc/service/impl/IdcServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/IdcServiceImpl.java index 9094acb82..94b802abe 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/IdcServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/IdcServiceImpl.java @@ -54,1125 +54,1363 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; - /*数据中继数据中心(接收)*/ @Slf4j @Service public class IdcServiceImpl implements IdcService { - private static final Logger logger = LoggerFactory.getLogger(IdcServiceImpl.class); - @Value("${file_path}") - private String filePath; - @Value("${back_file_path}") - private String backFilePath; + private static final Logger logger = LoggerFactory.getLogger(IdcServiceImpl.class); + @Value("${file_path}") + private String filePath; + @Value("${back_file_path}") + private String backFilePath; - @Value("${API_KEY}") + @Value("${API_KEY}") private String apiKey; @Value("${API_SECRET}") private String apiSecret; - /*同步表,格式:同步设置表列名/同步设置表列名(子表时设置,主表不设置)/主表唯一列(多列逗号分隔)/主表关联列/子表关联列/数据库实际表/时间列/图片或文件列/数据条件/说明*/ - private final String[] SYNC_TABLES= { - "entrustAction//basic_entrust_accept/id///updateTime///委托验收","basicProducts//basic_udirel/id///updateTime///耗材字典","/basicProducts/basic_products/id/uuid/uuid////耗材字典信息详情", - "/companyCert/company_product_relevance/id/customerId/unitFk/updateTime///供应商关联信息", - "basicCorp//basic_corp/id///updateTime///往来单位","typeThird//thr_bustype_origin/id///updateTime///第三方单据类型", - "basicThirdCorp//thr_corp/id///updateTime///第三方往来单位","//thr_dept/id///updateTime///第三方部门", - "//thr_inv_products/id///updateTime///第三方库存","basicThirdInv//thr_inv_warehouse/id//////第三方仓库", - "basicThirdBusOrder//thr_order/id///updateTime///第三方业务单据","/basicThirdBusOrder/thr_order_detail/orderIdFk/id/orderIdFk/updateTime///第三方单据详情", - "basicThirdProducts//thr_products/id///updateTime///第三方产品信息", - "//sup_cert_set/id///updateTime///供应商资质证书设置","companyCert//sup_company/customerId///updateTime///配送企业", - "manufacturerCert//sup_manufacturer/id///updateTime///生产企业","productCert//sup_product/id///updateTime///产品资质信息", - "/companyCert/sup_cert/id/customerId/customerId/updateTime/filePath/type=1/配送企业资质证书信息", - "/manufacturerCert/sup_cert/id/manufacturerId/manufacturerIdFk/updateTime/filePath/type=2/生产企业资质证书信息", - "/productCert/sup_cert/id/productId/productIdFk/updateTime/filePath/type=3/产品资质证书信息", - "//udicompany/id///updateTime///国际库医疗器械注册人信息"}; - //"dbDiProducts//productinfo/id///updateTime///DI产品信息", - //"basicInv/////////仓库字典", - //"typeBus/////////业务单据类型", - //"typeScan/////////扫码单据类型", - private int orderNum=0; - - @Resource + + private int orderNum = 0; + + @Resource private SystemParamConfigService systemParamConfigService; - @Resource - private JdbcTemplate jdbcTemplate; + @Resource + private JdbcTemplate jdbcTemplate; - @Resource - private DbDao dbDao; + @Resource + private DbDao dbDao; - @Resource + @Resource private ScheduledDao scheduledDao; - @Override - public BaseResponse taskList(HttpServletRequest request,Map params) { - Map map = new HashMap(); - map.put("sql", "select id as taskId from basic_export_status where receiveStatus='0'"); - List> list = dbDao.list(map); - return ResultVOUtils.success(list); - } - - @Override - public BaseResponse download(HttpServletRequest request,Map params) { - Map map = dbDao.get("select * from basic_export_status where id='"+params.get("taskId")+"'"); - if(map==null) - ResultVOUtils.error(9000, "下载任务不存在"); - if(!FileUtils.isFileExist(map.get("cacheFilePath").toString())) - ResultVOUtils.error(9000, "下载文件不存在"); - String json = FileUtils.readFileAll(map.get("cacheFilePath").toString()); - - JSONObject object = JSON.parseObject(json); - if(object==null) - ResultVOUtils.error(9000, "任务下载失败"); - if(object!=null&&object.getInteger("code")!=null) { - BaseResponse response = JSON.parseObject(json,BaseResponse.class); - return response; - } - - return ResultVOUtils.success(object); - } - - - /*UDI系统上传自助平台*/ - @Override + private String imagePath = "register/file/image2/"; + /*获取拉取任务列表*/ + @Override + public BaseResponse taskList(HttpServletRequest request, Map params) { + Map map = new HashMap(); + map.put("sql", "select id as taskId from basic_export_status where receiveStatus='0'"); + List> list = dbDao.list(map); + return ResultVOUtils.success(list); + } + + + /*下载任务*/ + @Override + public BaseResponse download(HttpServletRequest request, Map params) { + return statusFile(params, "basic_export_status"); + } + + @Override + public BaseResponse uploadStatus(HttpServletRequest request, Map params) { + return statusFile(params, "basic_upload_status"); + } + + @Override + public BaseResponse downloadStatus(HttpServletRequest request, Map params) { + return statusFile(params, "basic_download_status"); + } + + private BaseResponse statusFile(Map params, String tableName) { + String id = ""; + if (params.containsKey("taskId") && params.get("taskId") != null) { + id = params.get("taskId").toString(); + } else { + id = params.get("id").toString(); + } + + Map map = map = dbDao.get("select * from " + tableName + " where id='" + id + "'"); + + if (map == null) + return ResultVOUtils.error(9000, "下载任务不存在" + tableName); + if (!(map.get("cacheFilePath") != null && FileUtils.isFileExist(map.get("cacheFilePath").toString()))) + return ResultVOUtils.error(9000, "下载文件不存在-" + tableName); + String json = FileUtils.readFileAll(map.get("cacheFilePath").toString()); + + JSONObject object = JSON.parseObject(json); + if (object == null) + return ResultVOUtils.error(9000, "任务下载失败"); + if (object != null && object.getInteger("code") != null) { + BaseResponse response = JSON.parseObject(json, BaseResponse.class); + return response; + } + + return ResultVOUtils.success(object); + } + + + /*UDI系统上传自助平台*/ + @Override public void asyncUdiTask() { - logger.info("UDI管理系统同步任务开始--------"); - asyncDataTask(true); + logger.info("UDI管理系统同步任务开始--------"); + asyncDataTask(true); } + /*自助平台生成任务,不上传*/ - @Override + @Override public void asyncSpsTask() { - logger.info("自助平台同步任务开始--------"); - asyncDataTask(false); + logger.info("自助平台同步任务开始--------"); + asyncDataTask(false); + } + + /*UDI系统拉取前一级中继服务或自助平台数据*/ + @Async + @Override + public void asyncFetchUdiTask() { + fetchTask(false); } - - /*拉取前一级中继服务数据*/ - @Async - @Override - public void asyncFetchUdiTask() { - fetchTask(false); - } - @Async - @Override - public void asyncFetchTask() { - initTable(); - Map map = dbDao.get("select * from idc_var where code='system_type'"); - if(map==null) { - dbDao.save("insert into idc_var (code,content) values ('system_type','IDC')"); - } - fetchTask(true); - } - - - private void fetchTask(boolean isIdc) { - - String host = getNextHost(); - if(!isIdc) { - Map map = dbDao.get("select * from sync_data_set limit 1"); - if(map!=null&&map.get("syncIp")!=null) - host = map.get("syncIp").toString(); - } - logger.info("fetch from ip:"+host); - if(!StringUtils.isEmpty(host)) { - String result = post(host+"/spssync/common/list",null); - - if(IDCUtils.isJson(result)) { - JSONObject json = JSON.parseObject(result); - if(json!=null&&json.getInteger("code")==20000&&json.getString("data")!=null) { - List list = JSON.parseArray(json.getString("data"), Map.class); - if(list!=null) { - for(Map map:list) { - Map params = new HashMap(); - params.put("taskId", map.get("taskId")); - fetchData(host,params); - } - } - } - } - } - } - - @Async - @Override - public void asyncIdcTask() { - initTable(); - Map map = dbDao.get("select * from idc_var where code='system_type'"); - if(map==null) { - dbDao.save("insert into idc_var (code,content) values ('system_type','IDC')"); - } - } - - - private void asyncDataTask(boolean isUpload) { - initTable(); - Map map = dbDao.get("select * from sync_data_set limit 1"); - if(map!=null&&map.get("downstreamEnable")!=null&&map.get("downstreamEnable").toString().equals("1")) { - if(isUpload) { - if(!(map.get("syncIp")!=null&&!StringUtils.isEmpty(map.get("syncIp").toString()))) { - logger.error("中继服务地址未配置"); - return; - } - } - for(int i=0;i> keyList = dbDao.listKeyMysql(tnames[2]); - String keyColumn = keyList!=null&&keyList.size()>0 ? keyList.get(0).get("columnName").toString() : "id"; - Map map = new HashMap(); - String sqlWhere = ""; - if(!StringUtils.isEmpty(tnames[6])) { - sqlWhere+=" "+tnames[6]+">= cast('"+lastUpdateTime+"' as datetime)";// and date_add(cast('"+DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")+"' as datetime),INTERVAL 1 day)"; - sqlWhere+= " and not exists (select fkId from idc_record where type='"+tnames[2]+"' and fkId="+tnames[2]+"."+keyColumn+" and createTime>date_sub(now(),interval 15 MINUTE))"; - } else { - sqlWhere = "not exists (select fkId from idc_record where type='"+tnames[2]+"' and fkId="+tnames[2]+"."+keyColumn+")"; - map.put("isEnd", "1"); - } - map.put("sqlWhere", sqlWhere); - - map.put("tableKey", tnames[0]); - map.put("tableName", tnames[2]); - map.put("uniqueColumn", tnames[3]); - map.put("masterLinkColumn", tnames[4]); - map.put("subLinkColumn", tnames[5]); - map.put("filePathColumn", tnames[7]); - map.put("dataWhere", tnames[8]); - map.put("messageType", tnames[9]); - map.put("messageName", tnames[9]); - ScheduledRequest scheduledRequest = new ScheduledRequest(); - scheduledRequest.setCronName("sync"+WordUtils.capitalizeFully(tnames[2], new char[]{'_'}).replace("_", "")); - ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); - String cron = scheduledEntity!=null ? scheduledEntity.getCron() : ""; - - if(!StringUtils.isEmpty(cron)) { - CronSequenceGenerator cronSequenceGenerator = new CronSequenceGenerator(cron); - Date nextTimePoint = cronSequenceGenerator.next(DateUtil.parseDate(lastUpdateTime)); - sync = nextTimePoint.before(nowUpdateTime); - } - if(sync) { - if(syncMasterData(map,isUpload,syncIp)) { - setUpdateTime(tnames[2]+"."+tnames[0],DateUtil.formatDate(nowUpdateTime,"yyyy-MM-dd HH:mm:ss")); - } - } - } - } - - - - private String fetchData(String host,Map params) { - OkHttpClient client = new OkHttpClient().newBuilder() - .build(); - MediaType mediaType = MediaType.parse("application/json"); - RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(params)); - Request request = new Request.Builder() - .url(host+"/spssync/common/download") - .method("POST", body) - .addHeader("Content-Type", "application/json") - .build(); - String result = ""; - MultipartFile[] files = {}; - Date startTime = new Date(); - try { - boolean success=true; - Response response = client.newCall(request).execute(); - result = response.body().string(); - JSONObject json = JSONObject.parseObject(result); - - if(isLastLevel()) { - if(json.get("code")!=null&&json.getInteger("code")==20000) { - success = analyMiddle(host,json.getJSONObject("data"),files,false,true); - if(!success) - logger.info("fetchData-->解析失败"); - } else { - success = false; - } - syncAddTaskStatus(json.getJSONObject("data"),3,success,startTime,true); - } else { - if(json.get("code")!=null&&json.get("data")!=null) { - //logger.info("res1-->"+JSON.toJSONString(json)); - syncAddTaskStatus(json.getJSONObject("data"),0,success,startTime,true); - analyMiddle(host,json.getJSONObject("data"),files,false,false); - } - } - - if(success) { - String ret = post(host+"/spssync/common/success",params); - - } - - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - logger.error("fetchData-->"+e.getMessage()); - } - return result; - } - - private String post(String url,Map params) { - OkHttpClient client = new OkHttpClient().newBuilder() - .build(); - MediaType mediaType = MediaType.parse("application/json"); - RequestBody body = RequestBody.create(mediaType, ""); - if(params!=null) - body = RequestBody.create(mediaType,JSON.toJSONString(params)); - Request request = new Request.Builder() - .url(url) - .method("POST", body) - .addHeader("Content-Type", "application/json") - .build(); - String result = ""; - try { - Response response = client.newCall(request).execute(); - result = response.body().string(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return result; - } - - - public BaseResponse downlaodSuccess(HttpServletRequest request,Map params) { - String sql = "update basic_export_status set receiveStatus='1',endTime=now() where id='"+params.get("taskId")+"'"; - dbDao.update(sql); - return ResultVOUtils.success(); - } - /****/ - @Override - public BaseResponse receive(HttpServletRequest request, - String content,MultipartFile[] files) { - /*授权检查,后续完善*/ - String apiKey = request.getHeader("apiKey"); - String secretKey = request.getHeader("secretKey"); - /*******/ - JSONObject json = JSONObject.parseObject(content); - String filePathSlash = filePath.substring(filePath.length() -1).equals("/") ? "" : "/"; - String backFileSlash = backFilePath.substring(backFilePath.length() -1).equals("/") ? "" : "/"; - String datePath = DateUtil.formatDate(new Date(),"yyyy-MM-dd"); - String fileName =filePath +filePathSlash +datePath+"/"+json.getString("messageType")+"-"+json.getString("messageId")+".udi"; - String backFileName = backFilePath +backFileSlash +datePath+"/"+json.getString("messageType")+"-"+json.getString("messageId")+".udi"; - if(!FileUtils.makeDirectory( filePath +filePathSlash +datePath)) - IDCUtils.createDirectory(filePath +filePathSlash +datePath+"/"); - if(!FileUtils.makeDirectory(backFilePath +backFileSlash +datePath)) - IDCUtils.createDirectory(filePath +backFileSlash +datePath+"/"); - - FileUtils.SaveFileAs(content, fileName); + + /*中继服务拉取任务*/ + @Async + @Override + public void asyncFetchTask() { + initTable(); + Map map = dbDao.get("select * from idc_var where code='system_type'"); + if (map == null) { + dbDao.save("insert into idc_var (code,content) values ('system_type','IDC')"); + } + fetchTask(true); + } + + + /*任务拉取,isIdc 是否中继服务*/ + private void fetchTask(boolean isIdc) { + + String host = getNextHost(); + if (!isIdc) { + Map map = dbDao.get("select * from sync_data_set limit 1"); + if (map != null && map.get("syncIp") != null) + host = map.get("syncIp").toString(); + } + if (!StringUtils.isEmpty(host)) { + String result = IDCUtils.post(host + "/spssync/common/list", null); + if (IDCUtils.isJson(result)) { + JSONObject json = JSON.parseObject(result); + if (json != null && json.getInteger("code") == 20000 && json.getString("data") != null) { + List list = JSON.parseArray(json.getString("data"), Map.class); + if (list != null) { + for (Map map : list) { + Map params = new HashMap(); + params.put("taskId", map.get("taskId")); + fetchData(host, params); + } + } + } + } + //拉取失败文件 + fetchFailFile(host); + } + } + + + private void fetchFailFile(String host) { + Map map = new HashMap(); + map.put("sql", "select * from idc_file where createTime> list = dbDao.list(map); + for(int i=0;i map = dbDao.get("select * from sync_data_set limit 1"); + if (map != null && map.get("downstreamEnable") != null && map.get("downstreamEnable").toString().equals("1")) { + if (isUpload) { + if (!(map.get("syncIp") != null && !StringUtils.isEmpty(map.get("syncIp").toString()))) { + 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])&&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' where updateTime map = new HashMap(); + map.put("sql", sql); + List> list = dbDao.list(map); + ArrayList files = new ArrayList<>(); + for(int i=0;i 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 childList = JSONObject.parseArray(JSON.toJSONString(dataList.get(i).get("data"+k)), Map.class); + for(int x =0 ;x 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 count = new HashMap(); + 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 map = new HashMap(); + map.put("sql", "select * from idc_delete"); + map.put("sqlWhere", where); + map.put("limit", limit); + map.put("page", i * limit); + List> list = dbDao.list(map); + if(list!=null&&map.size()>0) { + List> data = new ArrayList<>(); + for(int k=0;i0 ? ","+key : key; + } + obj.put("uniqueColumn", uniqueColumn); + obj.put("operateMode", "D"); + data.add(obj); + } + Map msg = new HashMap(); + 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 + public BaseResponse onceSync(String tableName, boolean isUpload) { + String tnames = tableName.contains("/") ? tableName : "//" + tableName + "///////"; + String[] ts = tnames.split("/"); + String ip = ""; + Map map = dbDao.get("select * from sync_data_set limit 1"); + if (isUpload) { + if (!(map.get("syncIp") != null && !StringUtils.isEmpty(map.get("syncIp").toString()))) { + logger.error("中继服务地址未配置"); + return ResultVOUtils.error(9999, "中继服务地址未配置"); + } + ip = map.get("syncIp").toString(); + } + if (!StringUtils.isEmpty(ts[0])) { + if (!(map != null && map.get(ts[0]) != null && map.get(ts[0]).equals("1"))) + return ResultVOUtils.error(9999, "当前不允许生成"); + } + if (syncData(tnames, isUpload, ip)) + return ResultVOUtils.success(); + return ResultVOUtils.error(9999, "系统错误"); + } + + private boolean syncData(String t, boolean isUpload, String syncIp) { + boolean sync = true; + boolean result = false; + try { + String[] tnames = t.split("/"); + + String lastUpdateTime = getUpdateTime(tnames[2] + "." + tnames[0]+"."+tnames[1]); + Date nowUpdateTime = new Date(); +// if (!StringUtils.isEmpty(tnames[0])) { + + List> keyList = dbDao.listKeyMysql(tnames[2]); + String keyColumn = keyList != null && keyList.size() > 0 ? keyList.get(0).get("columnName").toString() : "id"; + Map map = new HashMap(); + String sqlWhere = ""; + String updateTimeColumn = tnames[6]; + if (StringUtils.isEmpty(updateTimeColumn)) { + Map tMap = dbDao.get("select column_name columnName from information_schema.columns where column_name='updateTime' and lower(table_name) = lower('" + tnames[0] + "') and table_schema = (select database()) limit 1"); + updateTimeColumn = tMap != null ? "updateTime" : ""; + } + + + if (!StringUtils.isEmpty(updateTimeColumn)) { + sqlWhere += " " + updateTimeColumn + " between cast('" + lastUpdateTime + "' as datetime) and cast('"+DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")+"' as datetime)"; + //sqlWhere += " and not exists (select fkId from idc_record where type='" + tnames[2] + "' and fkId=" + tnames[2] + "." + keyColumn + " and createTime>date_sub(now(),interval 15 MINUTE))"; + } else { + sqlWhere = "not exists (select fkId from idc_record where type='" + tnames[2] + "' and fkId=" + tnames[2] + "." + keyColumn + ")"; + map.put("isEnd", "1"); + } + map.put("sqlWhere", sqlWhere); + + map.put("tableKey", tnames[0]); + map.put("tableName", tnames[2]); + map.put("uniqueColumn", tnames[3]); + map.put("masterLinkColumn", tnames[4]); + map.put("subLinkColumn", tnames[5]); + map.put("filePathColumn", tnames[7]); + map.put("dataWhere", tnames[8]); + map.put("messageType", tnames[9]); + map.put("messageName", tnames[9]); + ScheduledRequest scheduledRequest = new ScheduledRequest(); + scheduledRequest.setCronName("sync" + WordUtils.capitalizeFully(tnames[2], new char[]{'_'}).replace("_", "")); + ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); + String cron = scheduledEntity != null ? scheduledEntity.getCron() : ""; + + if (!StringUtils.isEmpty(cron)) { + CronSequenceGenerator cronSequenceGenerator = new CronSequenceGenerator(cron); + Date nextTimePoint = cronSequenceGenerator.next(DateUtil.parseDate(lastUpdateTime)); + sync = nextTimePoint.before(nowUpdateTime); + } + if (sync) { + result = syncMasterData(map, isUpload, syncIp); + if (result) { + setUpdateTime(tnames[2] + "." + tnames[0]+"."+tnames[1], DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")); + } + } + //} + } catch (Exception ex) { + + } + return result; + } + + + private String fetchData(String host, Map params) { + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, JSON.toJSONString(params)); + Request request = new Request.Builder() + .url(host + "/spssync/common/download") + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + String result = ""; + MultipartFile[] files = {}; + Date startTime = new Date(); + try { + boolean success = true; + Response response = client.newCall(request).execute(); + result = response.body().string(); + JSONObject json = JSONObject.parseObject(result); + + if (isLastLevel()) { + if (json.get("code") != null && json.getInteger("code") == 20000) { + success = analyMiddle(host, json.getJSONObject("data"), files, false, true); + if (!success) + logger.info("fetchData-->解析失败"); + } else { + success = false; + } + 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, true, startTime, true,success); + analyMiddle(host, json.getJSONObject("data"), files, false, false); + } + } + + if (success) { + String ret = IDCUtils.post(host + "/spssync/common/success", params); + + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + logger.error("fetchData-->" + e.getMessage()); + } + return result; + } + + + public BaseResponse downlaodSuccess(HttpServletRequest request, Map params) { + String sql = "update basic_export_status set receiveStatus='1',endTime=now() where id='" + params.get("taskId") + "'"; + dbDao.update(sql); + return ResultVOUtils.success(); + } + + + @Override + public BaseResponse receiveJson(HttpServletRequest request, Map params) { + + return ResultVOUtils.success(); + } + + @Override + public BaseResponse uploadFile(HttpServletRequest request, + String content, MultipartFile[] files) { + return ResultVOUtils.success(); + } + + /****/ + @Override + public BaseResponse receive(HttpServletRequest request, + String content, MultipartFile[] files) { + /*授权检查,后续完善*/ + String apiKey = request.getHeader("apiKey"); + String secretKey = request.getHeader("secretKey"); + /*******/ + JSONObject json = JSONObject.parseObject(content); + String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/"; + String backFileSlash = backFilePath.substring(backFilePath.length() - 1).equals("/") ? "" : "/"; + String datePath = DateUtil.formatDate(new Date(), "yyyy-MM-dd"); + String fileName = filePath + filePathSlash + datePath + "/" + json.getString("messageType") + "-" + json.getString("messageId") + ".udi"; + String backFileName = backFilePath + backFileSlash + datePath + "/" + json.getString("messageType") + "-" + json.getString("messageId") + ".udi"; + if (!FileUtils.makeDirectory(filePath + filePathSlash + datePath)) + IDCUtils.createDirectory(filePath + filePathSlash + datePath + "/"); + if (!FileUtils.makeDirectory(backFilePath + backFileSlash + datePath)) + IDCUtils.createDirectory(filePath + backFileSlash + datePath + "/"); + if(!FileUtils.makeDirectory(filePath + filePathSlash + imagePath)) + IDCUtils.createDirectory(filePath + filePathSlash + imagePath); + FileUtils.SaveFileAs(content, fileName); FileUtils.SaveFileAs(content, backFileName); ArrayList saveFiles = new ArrayList<>(); Date startTime = new Date(); - if(files!=null) { - - int n=0; + if (files != null) { + + int n = 0; try { - for(MultipartFile file:files) { - String imageName = filePath +filePathSlash+"register/file/image2/"+file.getOriginalFilename(); - saveFiles.add(imageName); - - writeFile(file.getBytes(), filePath +filePathSlash+"register/file/image2/", file.getOriginalFilename()); - writeFile(file.getBytes(), backFilePath +backFileSlash+datePath+"register/file/image2/", file.getOriginalFilename()); - n++; - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + for (MultipartFile file : files) { + String imageName = filePath + filePathSlash + imagePath + file.getOriginalFilename(); + saveFiles.add(imageName); + + writeFile(file.getBytes(), filePath + filePathSlash + imagePath, file.getOriginalFilename()); + writeFile(file.getBytes(), backFilePath + backFileSlash + datePath + imagePath, file.getOriginalFilename()); + n++; + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } - + /*解析入库*/ boolean success = false; - if(isLastLevel()) { - success = analyMiddle("",json,files,true,true); - syncAddTaskStatus(json,2,success,startTime,true); - if(!success) { - - return ResultVOUtils.error(9000, "解析失败"); - } + if (isLastLevel()) { + success = analyMiddle("", json, files, true, true); + syncAddTaskStatus(json, 3, true, startTime, true,success); + if (!success) { + + return ResultVOUtils.error(9000, "解析失败"); + } + } else { + //需要转发 + if (isRelay()) { + String host = getNextHost(); + String result = relay(request.getHeader("reqNo"), content, saveFiles, host); + if (IDCUtils.isJson(result)) { + syncAddTaskStatus(json, 2, true, startTime, true,true); + BaseResponse object = JSON.parseObject(result, BaseResponse.class); + return object; + } else { + syncAddTaskStatus(json, 2, true, startTime, false,false); + return ResultVOUtils.error(9000, "转发失败"); + } + + } + } + return ResultVOUtils.success(); + } + + + /*数据同步,从数据库获取数据下发或上传下级中继服务*/ + @Override + public BaseResponse send(Map params) { + + return send(params.get("messageType").toString(), params.get("tableName").toString(), params); + + + } + + @Override + public BaseResponse send(String messageType, String tableName, Map params) { + + return ResultVOUtils.error(9999, ""); + } + + + @Override + public void downloadFile(String fileName, HttpServletResponse response) { + OutputStream os; + String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : fileName.substring(0, 1).equals("/") ? "" : "/"; + String sourceFileName = filePath +filePathSlash+imagePath +fileName; + try { + if (FileUtils.isFileExist(sourceFileName)) { + byte[] bytes = FileUtils.readFileByBytes(sourceFileName); + os = response.getOutputStream(); + os.write(bytes); + os.flush(); + os.close(); + } else { + logger.error("file not exists:"+sourceFileName); + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private void saveUploadStatus(Map params) { + Map map = new HashMap(); + map.putAll(params); + + Map columns = getColumn("basic_upload_status"); + String sql = "replace basic_upload_status " + DBAUtils.parseInsert(map, columns); + + dbDao.save(sql); + } + + private void saveExportStatus(Map params) { + Map map = new HashMap(); + map.putAll(params); + Map columns = getColumn("basic_export_status"); + String sql = "replace basic_export_status " + DBAUtils.parseInsert(map, columns); + + dbDao.save(sql); + } + + private void saveDownloadStatus(Map params) { + Map map = new HashMap(); + map.putAll(params); + + Map columns = getColumn("basic_download_status"); + String sql = "replace basic_download_status " + DBAUtils.parseInsert(map, columns); + + dbDao.save(sql); + } + + private void saveIdcLog(String messageType, String taskId, String content, int offset, int total) { + Map map = new HashMap(); + map.put("id", CustomUtil.getId()); + map.put("taskId", taskId); + map.put("orderNum", orderNum); + map.put("type", messageType); + map.put("createTime", new Date()); + map.put("content", content); + map.put("offset", offset); + map.put("total", total); + Map columns = getColumn("idc_log"); + String sql = "insert into idc_log " + DBAUtils.parseInsert(map, columns); + + dbDao.save(sql); + } + + + private boolean syncMasterData(Map params, boolean isUpload, String syncIp) { + boolean success = false; + String tableName = params.get("tableName").toString(); + String tableKey = params.get("tableKey").toString(); + String[] childs = new String[30]; + int childNum = -1; + /*子表*/ + String[] syncTables = TableUtils.syncTables(); + if (!StringUtils.isEmpty(tableKey)) { + for (String str : syncTables) { + if (str.contains("/" + tableKey + "/")) { + childNum++; + childs[childNum] = str; + } + } + } + Map table = dbDao.getMysql(tableName); + if (!(table != null && table.get("tableName") != null)) + return false; + String sql = "select count(*) from " + tableName; + Map column = getColumn(tableName); + + Map whereParams = new HashMap(); + whereParams.put("sqlWhere", params.get("sqlWhere")); + + String dataWhere = params.get("dataWhere")!=null ? params.get("dataWhere").toString() : ""; + Map map = new HashMap(); + String where = DBAUtils.convertWhere(column, whereParams, dataWhere); + sql += !StringUtils.isEmpty(where) ? " where " + where : ""; + map.put("sql", sql); + int total = dbDao.count(map); + + String isEnd = params.get("isEnd") != null ? params.get("isEnd").toString() : "0"; + int limit = 50; + ArrayList files = new ArrayList<>(); + + String filePathColumn = params.get("filePathColumn") != null ? params.get("filePathColumn").toString() : ""; + orderNum++; + String messageType = params.get("messageType").toString(); + saveIdcLog(messageType, "", tableName + ">" + where, 0, total); + String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/"; + + if (total > 0) { + success = true; + + whereParams.put("page", 0); + whereParams.put("limit", limit); + + List> keyList = dbDao.listKeyMysql(tableName); + String keyColumn = keyList != null && keyList.size() > 0 ? keyList.get(0).get("columnName").toString() : "id"; + for (int i = 0; i < Math.ceil(total / limit) + 1; i++) { + whereParams.replace("page", i * limit); + whereParams.replace("limit", limit); + Date startTime = new Date(); + Map data = getData(messageType, tableName, params, whereParams); + String recordSql = ""; + orderNum++; + saveIdcLog(messageType, "", tableName + ">" + where, i * limit, total); + if (data.get("data") != null) { + + List list = JSONObject.parseArray(JSON.toJSONString(data.get("data")), Map.class); + if (list != null && list.size() > 0) { + for (int m = 0; m < list.size(); m++) { + + if (!StringUtils.isEmpty(filePathColumn) && list.get(m).get(filePathColumn) != null) { + String fileNames = list.get(m).get(filePathColumn).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]); + } + } + recordSql += !StringUtils.isEmpty(recordSql) ? "," : ""; + recordSql += "('" + UUID.randomUUID().toString().replaceAll("-", "") + "','" + tableName + "','" + list.get(m).get(keyColumn) + "','" + isEnd + "',now())"; + + if (childNum > -1) { + for (int z = 0; z < childNum + 1; z++) { + String[] chidTnames = childs[z].split("/"); + if (!StringUtils.isEmpty(chidTnames[4]) && !StringUtils.isEmpty(chidTnames[5])) { + String keyValue = list.get(m).get(chidTnames[4]).toString(); + Map childMap = new HashMap<>(); + childMap.put(chidTnames[5], keyValue); + List> childList = getList(chidTnames[2], childMap); + list.get(m).put("tableName" + z, chidTnames[2]); + list.get(m).put("filePathColumn" + z, chidTnames[7]); + list.get(m).put("data" + z, childList); + if (!StringUtils.isEmpty(chidTnames[7]) && childList.size() > 0) { + for (int x = 0; x < childList.size(); x++) { + if (childList.get(i).get(chidTnames[7]) != null) { + String[] str = childList.get(i).get(chidTnames[7]).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]); + } + } + } + } + } + } + } + } + data.replace("data", list); + orderNum++; + + if (isUpload) { + String result = ""; + try { + result = relay("", JSON.toJSONString(data), files, syncIp); + } catch (Exception ex) { + + } + if (IDCUtils.isJson(result)) { + JSONObject json = JSON.parseObject(result); + if (json.getInteger("code") == 20000) { + if (!StringUtils.isEmpty(recordSql)) { + dbDao.save("insert into idc_record (id,type,fkId,isEnd,createTime) values " + recordSql); + } + saveIdcLog(messageType, "", tableName + ">success", i * limit, total); + } else { + success = false; + + saveIdcLog(messageType, "", tableName + ">" + result, i * limit, total); + } + } else { + success = false; + saveIdcLog(messageType, "", syncIp + ":" + tableName + ">fail:上传地址未连通", i * limit, total); + } + + } else { + if (!StringUtils.isEmpty(recordSql)) { + dbDao.save("insert into idc_record (id,type,fkId,isEnd,createTime) values " + recordSql); + } + saveIdcLog(messageType, "", tableName + ">success", i * limit, total); + } + syncAddTaskStatus(data, isUpload ? 1 : 0, true, startTime, isUpload,success); + } + } + } + + } + + return success; + } + + /*增加同步任务状态*/ + private void syncAddTaskStatus(Map json, int scheduleType, boolean success, Date startTime, + boolean isEnd,boolean isReceive) { + try { + String content = JSON.toJSONString(json); + String datePath = DateUtil.formatDate(new Date(), "yyyy-MM-dd"); + String fileName = filePath + datePath + "/" + json.get("messageType") + "-" + json.get("messageId") + ".udi"; + String backFileName = backFilePath + datePath + "/" + json.get("messageType") + "-" + json.get("messageId") + ".udi"; + if (!FileUtils.makeDirectory(filePath + datePath)) + IDCUtils.createDirectory(filePath + datePath + "/"); + if (!FileUtils.makeDirectory(backFilePath + datePath)) + IDCUtils.createDirectory(filePath + datePath + "/"); + + FileUtils.SaveFileAs(content, fileName); + FileUtils.SaveFileAs(content, backFileName); + + //type,transportType,superiorService,subordinateService,cacheFilePath + Map map = new HashMap<>(); + map.put("type", json.get("messageType")); + map.put("id", json.get("messageId")); + if (json.get("messageId") == null) + map.put("id", CustomUtil.getId()); + map.put("transportType", scheduleType == 0 ? "1" : "2"); + map.put("scheduleType", scheduleType); + 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) + map.put("endTime", new Date()); + if (scheduleType == 2) { + saveUploadStatus(map); + } else if (scheduleType == 3) { + saveDownloadStatus(map); + } else { + saveExportStatus(map); + } + } catch (Exception ex) { + logger.error(ex.getMessage()); + } + + } + + private boolean analyMiddle(String host, JSONObject jsonObject, MultipartFile[] files, boolean isUpload, + boolean isToDB) { + if (jsonObject.get("data") != null) { + String tableName = ""; + String uniqueColumn = ""; + String filePathColumn = ""; + Object object = jsonObject.get("data"); + List> list = new ArrayList<>(); + if (object instanceof List) { + list = jsonObject.getObject("data", List.class); + tableName = jsonObject.getString("tableName"); + uniqueColumn = jsonObject.getString("uniqueColumn"); + filePathColumn = jsonObject.getString("filePathColumn"); + } else { + JSONObject obj = jsonObject.getJSONObject("data"); + list = obj.getObject("data", List.class); + tableName = obj.getString("tableName"); + uniqueColumn = obj.getString("uniqueColumn"); + filePathColumn = obj.getString("filePathColumn"); + } + if (!StringUtils.isEmpty(tableName)) { + if (isToDB) { + return analyToDB(host, tableName, uniqueColumn, filePathColumn, list, isUpload); + } else { + //logger.info("files-->"+tableName); + return analyToFile(host, filePathColumn, list); + } + } else { + logger.error("数据格式错误:无数据标记"); + } + //图片处理 + } + return false; + } + + private boolean analyToFile(String host, String filePathColumn, List> list) { + + if (list != null && list.size() > 0) { + String[] files = new String[list.size()]; + //logger.info("filePathColumn-->"+filePathColumn); + for (int i = 0; i < list.size(); i++) { + if (!StringUtils.isEmpty(filePathColumn)) { + files[i] = list.get(i).get(filePathColumn) != null ? list.get(i).get(filePathColumn).toString() : ""; + logger.info("file-->"+files[i]); + } + for (int z = 0; z < 30; z++) { + if (list.get(i).get("data" + z) != null) { + if (list.get(i).get("filePathColumn" + z) != null) { + List> childList = (List>) list.get(i).get("data" + z); + analyToFile(host, list.get(i).get("filePathColumn" + z).toString(), childList); + } + } else { + break; + } + } + } + + batchDownloadFile(host, files); + } + return true; + } + /*解析到数据库*/ + + /*按表名解析数据到数据库,子表暂未处理*/ + private boolean analyToDB(String host, String tableName, String uniqueColumn, String + filePathColumn, List> list, boolean isUpload) { + + + String tName = DBAUtils.tableRealName(tableName); + String sql = "replace " + tName + "("; + String del = "delete from " + tName + " where "; + String upd = "update " + tName + " set "; + String[] keyColumn = new String[30]; + String[] keyDataType = new String[30]; + List> columnList = dbDao.listColumnsMysql(tName); + Map column = getColumn(tName); + boolean result = false; + int key = 0; + int col = 0; + for (int i = 0; i < columnList.size(); i++) { + if (col > 0) + sql += ","; + columnList.get(i).put("attrName", columnList.get(i).get("columnName")); + sql += "`"+columnList.get(i).get("columnName").toString()+"`"; + col++; + if (uniqueColumn != null && columnList.get(i).get("columnKey") != null && ("," + uniqueColumn + ",").contains("," + columnList.get(i).get("columnName") + ",")) { + keyColumn[key] = columnList.get(i).get("columnName").toString(); + keyDataType[key] = columnList.get(i).get("dataType").toString().contains("char") ? "C" : columnList.get(i).get("dataType").toString().contains("date") ? "D" : "N"; + key++; + } else { + if (columnList.get(i).get("columnKey") != null && !StringUtils.isEmpty(columnList.get(i).get("columnKey").toString()) && + ("PRI".contains(columnList.get(i).get("columnKey").toString()))) { + keyColumn[key] = columnList.get(i).get("columnName").toString(); + keyDataType[key] = columnList.get(i).get("dataType").toString().contains("char") ? "C" : columnList.get(i).get("dataType").toString().contains("date") ? "D" : "N"; + key++; + } + } + } + sql += ") values "; + + if (list != null && list.size() > 0) { + int n = 0; + int d = 0; + String[] files = new String[list.size()]; + for (int i = 0; i < list.size(); i++) { + String operateMode = list.get(i).get("operateMode") != null ? list.get(i).get("operateMode").toString() : "A"; + String updateWhere = ""; + String updateSet = ""; + if (!StringUtils.isEmpty(filePathColumn)) { + files[i] = list.get(i).get(filePathColumn) != null ? list.get(i).get(filePathColumn).toString() : ""; + } + + if ("A,D,U".contains(operateMode)) { + if(operateMode.equals("D")&&list.get(i).get("uniqueColumn")!=null) { + String[] ucs = list.get(i).get("uniqueColumn").toString().split(","); + for(String str:ucs) { + Map map = (Map) column.get(str); + String dataType = map.get("dataType").toString(); + updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " "; + 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); + } + + /*A 新增 U 更新*/ + if ("A,U".contains(operateMode)) { + sql += n > 0 ? "," : ""; + sql += "("; + int m = 0; + int h = 0; + for (int k = 0; k < columnList.size(); k++) { + String attrName = columnList.get(k).get("attrName"); + String value = list.get(i).get(attrName) != null ? list.get(i).get(attrName).toString() : ""; + value = DBAUtils.escape(value); + String dataType = columnList.get(k).get("dataType").toLowerCase().contains("char") || columnList.get(k).get("dataType").toLowerCase().contains("text") ? + "C" : columnList.get(k).get("dataType").toLowerCase().contains("date") ? "D" : "N"; + + sql += m > 0 ? "," : ""; + boolean ups = list.get(i).containsKey(attrName) ? true : false; + updateSet += ups && h > 0 ? "," : ""; + updateSet += ups ? columnList.get(k).get("columnName") + "=" : ""; + if (StringUtils.isEmpty(value)) { + sql += "null"; + updateSet += ups ? "null" : ""; + } else { + if (dataType.equals("C")) { + sql += "'" + value + "'"; + updateSet += ups ? "'" + value + "'" : ""; + } else if (dataType.equals("N")) { + sql += value; + updateSet += ups ? value : ""; + } else { + Date date = new Date(); + date = StringUtils.isNumeric(value) ? new Date(Long.valueOf(value)) : IDCUtils.parseDate(value); + String str = DateUtils.format(date, "yyyy-MM-dd HH:mm:ss"); + sql += "cast('" + str + "' as datetime)"; + updateSet += ups ? "cast('" + str + "' as datetime)" : ""; + } + } + m++; + if (operateMode.equals("U") && !StringUtils.isEmpty(updateSet) && !StringUtils.isEmpty(updateWhere)) + dbDao.update(upd + updateSet + " where " + updateWhere); + h += ups ? 1 : 0; + } + + sql += ")"; + n++; + } + + for (int m = 0; m < 30; m++) { + if (list.get(i).get("tableName" + m) != null && list.get(i).get("data" + m) != null) { + Object obj = list.get(i).get("data" + m); + List> chList = new ArrayList>(); + for (Object o : (List) obj) { + chList.add((Map) o); + } + analyToDB(host, list.get(i).get("tableName" + m).toString(), "", "", chList, isUpload); + } else { + break; + } + } + + } + if (n > 0) { + result = (dbDao.save(sql) > 0); + if (!result) + logger.error(tableName + "-->fetchSave Fail"); + } + batchDownloadFile(host, files); + } + return result; + } + + + /*转发下级或上级中继服务*/ + private String relay(String reqNo, String content, ArrayList files, String ip) { + String host = ip; + String result = ""; + if (StringUtils.isEmpty(reqNo)) + reqNo = UUID.randomUUID().toString(); + if (!StringUtils.isEmpty(host)) { + host += "/spssync/common/upload"; + OkHttpClient client = new OkHttpClient().newBuilder() + .connectTimeout(30, TimeUnit.SECONDS)//设置连接超时时间 + .readTimeout(30, TimeUnit.SECONDS)//设置读取超时时间 + .build(); + MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); + + MultipartBody.Builder builder = new MultipartBody.Builder(); + builder.setType(MultipartBody.FORM); + String fileType = "application/octet-stream"; + if (files != null && files.size() > 0) { + for (int i = 0; i < files.size(); i++) { + if (!StringUtils.isEmpty(files.get(i))) { + File file = new File(files.get(i)); + builder.addFormDataPart("files", files.get(i), + RequestBody.create(MediaType.parse(fileType), file)); + } + } + } + builder.addFormDataPart("content", content); + RequestBody body = builder.build(); + + Request req = new Request.Builder() + .url(host) + .method("POST", body) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .addHeader("format", "json") + .addHeader("apiKey", apiKey) + .addHeader("secretKey", apiSecret) + .addHeader("reqNo", reqNo) + .addHeader("timestamp", DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")) + .addHeader("Access-Control-Allow-Headers", "Authorization, Origin, X-Requested-With, Content-Type, Accept") + .build(); + try { + Response response = client.newCall(req).execute(); + result = response.body().string(); + log.info("result--->" + result); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } else { - //需要转发 - if(isRelay()) { - String host = getNextHost(); - String result = relay(request.getHeader("reqNo"),content,saveFiles,host); - if(IDCUtils.isJson(result)) { - syncAddTaskStatus(json,1,true,startTime,true); - BaseResponse object = JSON.parseObject(result,BaseResponse.class); - return object; - } else { - syncAddTaskStatus(json,1,false,startTime,false); - return ResultVOUtils.error(9000, "转发失败"); - } - - } + log.debug("未配置中继服务地址"); } - return ResultVOUtils.success(); - } - - - /*数据同步,从数据库获取数据下发或上传下级中继服务*/ - @Override - public BaseResponse send(Map params) { - - return send(params.get("messageType").toString(),params.get("tableName").toString(),params); - - - } - @Override - public BaseResponse send(String messageType,String tableName,Map params) { - - return ResultVOUtils.error(9999, ""); - } - - - @Override - public void downloadFile(String fileName,HttpServletResponse response) { - OutputStream os; - String filePathSlash = filePath.substring(filePath.length() -1).equals("/") ? "" : fileName.substring(0,1).equals("/") ? "" : "/"; - - try { - if(FileUtils.isFileExist(filePath+filePathSlash+fileName)) { - byte[] bytes = FileUtils.readFileByBytes(filePath+filePathSlash+fileName); - os = response.getOutputStream(); - os.write(bytes); - os.flush(); - os.close(); - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private void saveUploadStatus(Map params) { - Map map = new HashMap(); - map.putAll(params); - - Map columns = getColumn("basic_upload_status"); - String sql = "replace basic_upload_status "+DBAUtils.parseInsert(map, columns); - - dbDao.save(sql); - } - - private void saveExportStatus(Map params) { - Map map = new HashMap(); - map.putAll(params); - map.put("receiveStatus", "0"); - - - Map columns = getColumn("basic_export_status"); - String sql = "replace basic_export_status "+DBAUtils.parseInsert(map, columns); - - dbDao.save(sql); - } - private void saveDownloadStatus(Map params) { - Map map = new HashMap(); - map.put("receiveStatus", "0"); - map.putAll(params); - - Map columns = getColumn("basic_download_status"); - String sql = "replace basic_download_status "+DBAUtils.parseInsert(map, columns); - - dbDao.save(sql); - } - private void saveIdcLog(String messageType,String taskId,String content,int offset,int total) { - Map map = new HashMap(); - map.put("id", CustomUtil.getId()); - map.put("taskId", taskId); - map.put("orderNum", orderNum); - map.put("type", messageType); - map.put("createTime", new Date()); - map.put("content", content); - map.put("offset", offset); - map.put("total", total); - Map columns = getColumn("idc_log"); - String sql = "insert into idc_log "+DBAUtils.parseInsert(map, columns); - - dbDao.save(sql); - } - - - private boolean syncMasterData(Map params,boolean isUpload,String syncIp) { - boolean success=false; - String tableName = params.get("tableName").toString(); - String tableKey = params.get("tableKey").toString(); - String[] childs = new String[10]; - int childNum = -1; - /*子表*/ - for(String str:SYNC_TABLES) { - if(str.contains("/"+tableKey+"/")) { - childNum++; - childs[childNum] = str; - } - } - Map table = dbDao.getMysql(tableName); - if(!(table!=null&&table.get("tableName")!=null)) - return false; - String sql = "select count(*) from "+tableName; - Map column = getColumn(tableName); - - Map whereParams = new HashMap(); - whereParams.put("sqlWhere", params.get("sqlWhere")); - whereParams.put("dataWhere", params.get("dataWhere")); - - Map map = new HashMap(); - String where = DBAUtils.convertWhere(column,whereParams,""); - sql+=!StringUtils.isEmpty(where) ? " where "+where : ""; - map.put("sql", sql); - int total = dbDao.count(map); - - String isEnd = params.get("isEnd")!=null ? params.get("isEnd").toString() : "0"; - int limit = 50; - ArrayList files = new ArrayList<>(); - - String filePathColumn = params.get("filePathColumn")!=null ? params.get("filePathColumn").toString() : ""; - orderNum++; - String messageType = params.get("messageType").toString(); - saveIdcLog(messageType,"",tableName +">"+where,0,total); - String filePathSlash = filePath.substring(filePath.length() -1).equals("/") ? "" : "/"; - - if(total>0) { - success = true; - - whereParams.put("page", 0); - whereParams.put("limit", limit); - - List> keyList = dbDao.listKeyMysql(tableName); - String keyColumn = keyList!=null&&keyList.size()>0 ? keyList.get(0).get("columnName").toString() : "id"; - for(int i=0;i data = getData(messageType,tableName,params,whereParams); - String recordSql = ""; - orderNum++; - saveIdcLog(messageType,"",tableName +">"+where,i *limit,total); - if(data.get("data")!=null) { - - List list = JSONObject.parseArray(JSON.toJSONString(data.get("data")), Map.class); - if(list!=null&&list.size()>0) { - for(int m=0;m-1) { - for(int z=0;z childMap = new HashMap<>(); - childMap.put(chidTnames[5], keyValue); - List> childList = getList(chidTnames[2],childMap); - list.get(m).put("tableName"+z, chidTnames[2]); - list.get(m).put("filePathColumn"+z, chidTnames[7]); - list.get(m).put("data"+z, childList); - if(!StringUtils.isEmpty(chidTnames[7])&&childList.size()>0) { - for(int x=0;xsuccess",i *limit,total); - } else { - success = false; - - saveIdcLog(messageType,"",tableName +">"+result,i *limit,total); - } - } else { - success = false; - saveIdcLog(messageType,"",syncIp+":"+tableName +">fail:上传地址未连通",i *limit,total); - } - - } else { - if(!StringUtils.isEmpty(recordSql)) { - dbDao.save("insert into idc_record (id,type,fkId,isEnd,createTime) values "+recordSql); - } - saveIdcLog(messageType,"",tableName +">success",i *limit,total); - } - syncAddTaskStatus(data,isUpload ? 1 : 0 ,success,startTime,isUpload); - } - } - } - - } - - return success; - } - - /*增加同步任务状态*/ - private void syncAddTaskStatus(Map json,int scheduleType,boolean success,Date startTime,boolean isEnd) { - try - { - String content = JSON.toJSONString(json); - String datePath = DateUtil.formatDate(new Date(),"yyyy-MM-dd"); - String fileName = filePath +datePath+"/"+json.get("messageType")+"-"+json.get("messageId")+".udi"; - String backFileName = backFilePath +datePath+"/"+json.get("messageType")+"-"+json.get("messageId")+".udi"; - if(!FileUtils.makeDirectory( filePath +datePath)) - IDCUtils.createDirectory(filePath +datePath+"/"); - if(!FileUtils.makeDirectory(backFilePath +datePath)) - IDCUtils.createDirectory(filePath +datePath+"/"); - - FileUtils.SaveFileAs(content, fileName); - FileUtils.SaveFileAs(content, backFileName); - - //type,transportType,superiorService,subordinateService,cacheFilePath - Map map = new HashMap<>(); - map.put("type", json.get("messageType")); - map.put("id", json.get("messageId")); - if(json.get("id")==null) - map.put("id", CustomUtil.getId()); - map.put("transportType", scheduleType == 0 ? "1" : "2"); - map.put("scheduleType", scheduleType); - map.put("taskId", json.get("messageId")); - map.put("cacheFilePath", fileName); - map.put("status", success ? "1" : "0"); - map.put("startTime", startTime!=null ? startTime : new Date()); - map.put("updateTime", new Date()); - if(isEnd) - map.put("endTime", new Date()); - if(scheduleType==2) { - saveUploadStatus(map); - } else if (scheduleType==3) { - saveDownloadStatus(map); - } else { - saveExportStatus(map); - } - } catch (Exception ex) { - logger.error(ex.getMessage()); - } - - } - - private boolean analyMiddle(String host,JSONObject jsonObject,MultipartFile[] files,boolean isUpload,boolean isToDB) { - if(jsonObject.get("data")!=null) { - String tableName = ""; - String uniqueColumn = ""; - String filePathColumn = ""; - Object object = jsonObject.get("data"); - List> list = new ArrayList<>(); - if(object instanceof List) { - list = jsonObject.getObject("data", List.class); - tableName = jsonObject.getString("tableName"); - uniqueColumn = jsonObject.getString("uniqueColumn"); - filePathColumn = jsonObject.getString("filePathColumn"); - } else { - JSONObject obj = jsonObject.getJSONObject("data"); - list = obj.getObject("data", List.class); - tableName = obj.getString("tableName"); - uniqueColumn = obj.getString("uniqueColumn"); - filePathColumn = obj.getString("filePathColumn"); - } - if(!StringUtils.isEmpty(tableName)) { - if(isToDB) { - return analyToDB(host,tableName,uniqueColumn,filePathColumn,list,isUpload); - } else { - //logger.info("files-->"+tableName); - return analyToFile(host,filePathColumn,list); - } - } else { - logger.error("数据格式错误:无数据标记"); - } - //图片处理 - } - return false; - } - - private boolean analyToFile(String host,String filePathColumn,List> list) { - - if(list!=null&&list.size()>0) { - String[] files = new String[list.size()]; - //logger.info("filePathColumn-->"+filePathColumn); - for(int i=0;i"+files[i]); - } - for(int z=0;z<30;z++) { - if(list.get(i).get("data"+z)!=null) { - if(list.get(i).get("filePathColumn"+z)!=null) { - List> childList = (List>)list.get(i).get("data"+z); - analyToFile(host,list.get(i).get("filePathColumn"+z).toString(),childList); - } - } else { - break; - } - } - } - - batchDownloadFile(host,files); - } - return true; - } - /*解析到数据库*/ - - /*按表名解析数据到数据库,子表暂未处理*/ - private boolean analyToDB(String host,String tableName,String uniqueColumn,String filePathColumn,List> list,boolean isUpload) { - - String tName = DBAUtils.tableRealName(tableName); - String sql="replace "+tName +"("; - String del="delete from "+tName+" where "; - String upd="update "+tName+" set "; - String[] keyColumn=new String[30]; - String[] keyDataType=new String[30]; - List> columnList = dbDao.listColumnsMysql(tName); - boolean result = false; - int key=0; - int col=0; - for(int i=0;i0) - sql+=","; - columnList.get(i).put("attrName", columnList.get(i).get("columnName")); - sql+= columnList.get(i).get("columnName").toString() ; - col++; - if(uniqueColumn!=null&&columnList.get(i).get("columnKey")!=null&&(","+uniqueColumn+",").contains(","+columnList.get(i).get("columnName")+",")) { - keyColumn[key] = columnList.get(i).get("columnName").toString(); - keyDataType[key]=columnList.get(i).get("dataType").toString().contains("char") ? "C" : columnList.get(i).get("dataType").toString().contains("date") ? "D" : "N"; - key++; - } else { - if(columnList.get(i).get("columnKey")!=null&&!StringUtils.isEmpty(columnList.get(i).get("columnKey").toString())&& - ("PRI".contains(columnList.get(i).get("columnKey").toString()))) { - keyColumn[key] = columnList.get(i).get("columnName").toString(); - keyDataType[key]=columnList.get(i).get("dataType").toString().contains("char") ? "C" : columnList.get(i).get("dataType").toString().contains("date") ? "D" : "N"; - key++; - } - } - } - sql+=") values "; - - if(list!=null&&list.size()>0) { - int n = 0; - int d = 0; - String[] files = new String[list.size()]; - for(int i=0;i0 ? "," : ""; - sql+="("; - int m = 0; - int h = 0; - for(int k=0;k0 ? "," : ""; - boolean ups = list.get(i).containsKey(attrName) ? true : false ; - updateSet+=ups&&h>0 ? "," : ""; - updateSet+=ups ? columnList.get(k).get("columnName")+"=" : ""; - if(StringUtils.isEmpty(value)) { - sql+="null"; - updateSet+=ups ? "null" : ""; - } else { - if(dataType.equals("C")) { - sql+="'"+value+"'"; - updateSet+=ups ? "'"+value+"'" : ""; - } else if (dataType.equals("N")) { - sql+=value; - updateSet+=ups ? value : ""; - } else { - Date date = new Date(); - date = StringUtils.isNumeric(value) ? new Date(Long.valueOf(value)) : IDCUtils.parseDate(value); - String str = DateUtils.format(date, "yyyy-MM-dd HH:mm:ss"); - sql+="cast('"+str+"' as datetime)"; - updateSet+=ups ? "cast('"+str+"' as datetime)" : ""; - } - } - m++; - if(operateMode.equals("U")&&!StringUtils.isEmpty(updateSet)&&!StringUtils.isEmpty(updateWhere)) - dbDao.update(upd + updateSet+" where "+updateWhere); - h+=ups ? 1 : 0; - } - - sql+=")"; - n++; - } - - for(int m=0;m<30;m++) { - if(list.get(i).get("tableName"+m)!=null&&list.get(i).get("data"+m)!=null) { - Object obj = list.get(i).get("data"+m); - List> chList = new ArrayList>(); - for (Object o : (List) obj) { - chList.add((Map)o); - } - analyToDB(host,list.get(i).get("tableName"+m).toString(),"","",chList,isUpload); - } else { - break; - } - } - - } - if(n>0) { - result = (dbDao.save(sql)>0); - if(!result) - logger.error(tableName+"-->fetchSave Fail"); - } - batchDownloadFile(host,files); - } - return result; - } - - - /*转发下级或上级中继服务*/ - private String relay(String reqNo,String content,ArrayList files,String ip) { - String host = ip; - String result=""; - if(StringUtils.isEmpty(reqNo)) - reqNo = UUID.randomUUID().toString(); - if(!StringUtils.isEmpty(host)) { - host+="/spssync/common/upload" ; - OkHttpClient client = new OkHttpClient().newBuilder() - .connectTimeout(30, TimeUnit.SECONDS)//设置连接超时时间 - .readTimeout(30, TimeUnit.SECONDS)//设置读取超时时间 - .build(); - MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); - - MultipartBody.Builder builder = new MultipartBody.Builder(); - builder.setType(MultipartBody.FORM); - String fileType = "application/octet-stream"; - if(files!=null&&files.size()>0) { - for (int i = 0; i < files.size(); i++) { - if(!StringUtils.isEmpty(files.get(i))) { - File file = new File(files.get(i)); - builder.addFormDataPart("files",files.get(i), - RequestBody.create(MediaType.parse(fileType), file)); - } - } - } - builder.addFormDataPart("content", content); - RequestBody body = builder.build(); - - Request req = new Request.Builder() - .url(host) - .method("POST", body) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .addHeader("format", "json") - .addHeader("apiKey", apiKey) - .addHeader("secretKey", apiSecret) - .addHeader("reqNo", reqNo) - .addHeader("timestamp",DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")) - .addHeader("Access-Control-Allow-Headers", "Authorization, Origin, X-Requested-With, Content-Type, Accept") - .build(); - try { - Response response = client.newCall(req).execute(); - result=response.body().string(); - log.debug("result--->"+result); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } else { - log.debug("未配置中继服务地址"); - } - return result; - } - - /*下载文件*/ - private boolean batchDownloadFile(String syncIp,String[] files) { - boolean success = true; - for(String fileName:files) { - if(!StringUtils.isEmpty(fileName)) { - String[] str = fileName.split(","); - for(int i=0;i"+str[i]); - if(!signleDownloadFile(syncIp,str[i])) - success = false; - } - } - } - } - return success; - } - private boolean signleDownloadFile(String syncIp,String fileName) { - OkHttpClient client = new OkHttpClient().newBuilder() - .build();; - MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); - - RequestBody body = RequestBody.create(mediaType, "fileName="+fileName); - - Request request = new Request.Builder() - .url(syncIp+"/spssync/common/downloadFile") - .post(body) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .build(); - try { - Response result = client.newCall(request).execute(); - - - if (MediaType.parse("application/force-download").equals(result.body().contentType())) { - try (InputStream inputStream = result.body().byteStream()) { - String filePathSlash = filePath.substring(filePath.length() -1).equals("/") ? "" : "/"; - - FileOutputStream outputStream =new FileOutputStream(filePath +filePathSlash+fileName); - - byte b[]=new byte[1024]; - - int len=0; - - while ((len=inputStream.read(b))!=-1){ - - outputStream.write(b,0,len); - - } - - outputStream.flush(); - - - - } catch (Exception e) { - - - } - } - - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return true; - } - - /*获取转发服务地址,当前值允许单向,只使用参数upper_server_ip*/ - private String getNextHost() { - SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("upper_server_ip"); - String host = systemParamConfigEntity!=null ? systemParamConfigEntity.getParamValue() : ""; - host = !StringUtils.isEmpty(host)&&host.substring(host.length() -1).equals("/") ? host.substring(0,host.length() -1) : host; - return host; - } - - /*判断是否需要解析入库,中继服务只转发*/ - private boolean isLastLevel() { - Map map = dbDao.get("select * from idc_var where code='system_type'"); - return !(map!=null&&map.get("content")!=null&&map.get("content").toString().equals("IDC")) ; - } - - /*是否需要转发*/ - private boolean isRelay() { - String relayHost = getNextHost(); - return StringUtils.isEmpty(relayHost) ? false : true; - } - - - private List> getList(String tableName,Map params) { - String sql = "select "+tableName+".*,'A' as operateMode from "+tableName; - Map column = getColumn(tableName); - - String where = DBAUtils.convertWhere(column,params,""); - sql+=!StringUtils.isEmpty(where) ? " where "+where : ""; - Map map = new HashMap(); - map.putAll(params); - map.put("sql", sql); - List> list = dbDao.list(map); - return list; - } - /*由表名获取数据*/ - private Map getData(String messageType,String tableName,Map params,Map whereParams) { - List> list = getList(tableName,whereParams); - Map map = new HashMap(); - map.put("messageId", CustomUtil.getId()); - map.put("messageType", messageType); - map.put("apiCode", "common"); - map.put("tableName", DBAUtils.tableAliasName(tableName)); - map.put("uniqueColumn", params.get("uniqueColumn")); - map.put("filePathColumn", params.get("filePathColumn")); - map.put("sendTime", new Date()); - map.put("version", "1.0"); - map.put("total", list.size()); - map.put("data", list); - return map; - } - - - - - private SystemParamConfigEntity getSystemParamConfig(String paramKey,String paramName,String defaultValue,String paramExplain) { - SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey(paramKey); - if(systemParamConfigEntity==null||(systemParamConfigEntity!=null&&StringUtils.isEmpty(systemParamConfigEntity.getParamKey()))) { - systemParamConfigEntity = new SystemParamConfigEntity(); - systemParamConfigEntity.setParamKey(paramKey); - systemParamConfigEntity.setParamName(paramName); - systemParamConfigEntity.setParentId(0); - systemParamConfigEntity.setParamValue(defaultValue); - systemParamConfigEntity.setParamExplain(paramExplain); - systemParamConfigEntity.setParamStatus(1); - systemParamConfigEntity.setParamType(0); - systemParamConfigService.insert(systemParamConfigEntity); - } - return systemParamConfigEntity; - } - private void writeFile(byte[] file, String filePath, String fileName) throws Exception { - File targetFile = new File(filePath); - if (!targetFile.exists()) { - targetFile.mkdirs(); - } - FileOutputStream out = new FileOutputStream(filePath + fileName); - out.write(file); - out.flush(); - out.close(); - } - - - /*把列数据转Map*/ - private Map getColumn(String tableName) { - Map map = new HashMap(); - List> columnList = new ArrayList>(); - String columnKey=""; - String[] tnames = tableName.split(","); - for(String tname:tnames) { - columnList = dbDao.listColumnsMysql(tname); - if(columnList!=null&&columnList.size()>0) { - for(int i=0;i column = new HashMap(); - String dataType =columnList.get(i).get("dataType").toLowerCase().contains("char") || columnList.get(i).get("dataType").toLowerCase().contains("text")? - "C" : columnList.get(i).get("dataType").toLowerCase().contains("date") ? "D" : "N" ;; - String attrName = columnList.get(i).get("columnName").toString(); - if(map.get(attrName)==null) { - column.put("tableName", tname); - column.put("dataType", dataType); - column.put("columnName", columnList.get(i).get("columnName")); - if(columnList.get(i).get("columnKey")!=null) { - column.put("columnKey", columnList.get(i).get("columnKey")); - } else { - column.put("columnKey","N"); - } - if(map.get(attrName)!=null) { - map.put(tname.toLowerCase()+"."+attrName, column); - } else { - map.put(attrName, column); - } - } - } - } - } - return map; - } - - - private String getUpdateTime(String id) { - String updateTime = ""; - Map map = dbDao.get("select * from idc_status where id='"+id+"'"); - if(map!=null&&map.get("id")!=null) { - updateTime = DateUtil.formatDate(IDCUtils.parseDate(map.get("statusTime").toString()),"yyyy-MM-dd HH:mm:ss"); - } else { - //国家库数据 - if(id.equals("productinfo")) { - - } - updateTime = "2000-01-01 00:00:00"; - String sql = "insert into idc_status (id,statusTime) values ('"+id+"',cast('"+updateTime+"' as datetime))"; - dbDao.save(sql); - } - return updateTime; - } - private String setUpdateTime(String id,String updateTime) { - String sql = ""; - Map map = dbDao.get("select * from idc_status where id='"+id+"'"); - if(map!=null&&map.get("id")!=null) { - sql = "update idc_status set statusTime=cast('"+updateTime+"' as datetime) where id='"+id+"'"; - dbDao.update(sql); - } else { - sql = "insert into idc_status (id,statusTime) values ('"+id+"',cast('"+updateTime+"' as datetime))"; - dbDao.save(sql); - } - return updateTime; - } - private void initTable() { - alterTable("idc_var","create table idc_var (code varchar(60),content varchar(200),PRIMARY KEY (code))"); - alterTable("idc_status","create table idc_status (id varchar(100),statusTime datetime,PRIMARY KEY (id))"); - alterTable("idc_record","create table idc_record (id varchar(36),type varchar(60),fkId varchar(36),isEnd char(1),createTime datetime,primary key (id),INDEX i_idc_record_fk_id (fkId),INDEX i_idc_record_create_time (createTime))"); - alterTable("idc_log","create table idc_log (id varchar(36),orderNum int,taskId varchar(60),type varchar(60),content varchar(2000),offset int,total int,createTime datetime,PRIMARY KEY (id))"); - dbDao.delete("delete from idc_record where createTime map = dbDao.getMysql(tableName); - if(!(map!=null&&map.get("tableName")!=null)) { - jdbcTemplate.execute(sql); - } - - } - + return result; + } + + /*下载文件*/ + private boolean batchDownloadFile(String syncIp, String[] files) { + boolean success = true; + for (String fileName : files) { + if (!StringUtils.isEmpty(fileName)) { + String[] str = fileName.split(","); + for (int i = 0; i < str.length; i++) { + if (!StringUtils.isEmpty(str[i])) { + //logger.info("downloadFile-->"+str[i]); + if (!signleDownloadFile(syncIp, str[i])) + success = false; + } + } + } + } + return success; + } + + private boolean signleDownloadFile(String syncIp, String fileName) { + String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/"; + if(!FileUtils.makeDirectory(filePath + filePathSlash + imagePath)) + IDCUtils.createDirectory(filePath + filePathSlash + imagePath); + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + ; + MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); + + RequestBody body = RequestBody.create(mediaType, "fileName=" + fileName); + + Request request = new Request.Builder() + .url(syncIp + "/spssync/common/downloadFile") + .post(body) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .build(); + try { + Response result = client.newCall(request).execute(); + String msg = result!=null ? result.message().length()>200 ? result.message().substring(0,200) : result.message() : ""; + 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+"'"); + } + + } catch (Exception e) { + + + } + } + if(!(total>0)) { + String sql = "replace idc_file (filePath,createTime,msg) values ('"+fileName+"',now(),'"+msg+"')"; + executeSql(sql); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return true; + } + + /*获取转发服务地址,当前值允许单向,只使用参数upper_server_ip*/ + private String getNextHost() { + SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("upper_server_ip"); + String host = systemParamConfigEntity != null ? systemParamConfigEntity.getParamValue() : ""; + host = !StringUtils.isEmpty(host) && host.substring(host.length() - 1).equals("/") ? host.substring(0, host.length() - 1) : host; + return host; + } + + /*判断是否需要解析入库,中继服务只转发*/ + private boolean isLastLevel() { + Map map = dbDao.get("select * from idc_var where code='system_type'"); + return !(map != null && map.get("content") != null && map.get("content").toString().equals("IDC")); + } + + /*是否需要转发*/ + private boolean isRelay() { + String relayHost = getNextHost(); + return StringUtils.isEmpty(relayHost) ? false : true; + } + + + private List> getList(String tableName, Map params) { + String sql = "select " + tableName + ".*,'A' as operateMode from " + tableName; + Map column = getColumn(tableName); + + String where = DBAUtils.convertWhere(column, params, ""); + sql += !StringUtils.isEmpty(where) ? " where " + where : ""; + Map map = new HashMap(); + map.putAll(params); + map.put("sql", sql); + List> list = dbDao.list(map); + return list; + } + + /*由表名获取数据*/ + private Map getData(String messageType, String + tableName, Map params, Map whereParams) { + List> list = getList(tableName, whereParams); + Map map = new HashMap(); + map.put("messageId", CustomUtil.getId()); + map.put("messageType", messageType); + map.put("apiCode", "common"); + map.put("tableName", DBAUtils.tableAliasName(tableName)); + map.put("uniqueColumn", params.get("uniqueColumn")); + 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; + } + + + private SystemParamConfigEntity getSystemParamConfig(String paramKey, String paramName, String + defaultValue, String paramExplain) { + SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey(paramKey); + if (systemParamConfigEntity == null || (systemParamConfigEntity != null && StringUtils.isEmpty(systemParamConfigEntity.getParamKey()))) { + systemParamConfigEntity = new SystemParamConfigEntity(); + systemParamConfigEntity.setParamKey(paramKey); + systemParamConfigEntity.setParamName(paramName); + systemParamConfigEntity.setParentId(0); + systemParamConfigEntity.setParamValue(defaultValue); + systemParamConfigEntity.setParamExplain(paramExplain); + systemParamConfigEntity.setParamStatus(1); + systemParamConfigEntity.setParamType(0); + systemParamConfigService.insert(systemParamConfigEntity); + } + return systemParamConfigEntity; + } + + private void writeFile(byte[] file, String filePath, String fileName) throws Exception { + File targetFile = new File(filePath); + if (!targetFile.exists()) { + targetFile.mkdirs(); + } + FileOutputStream out = new FileOutputStream(filePath + fileName); + out.write(file); + out.flush(); + out.close(); + } + + + /*把列数据转Map*/ + private Map getColumn(String tableName) { + Map map = new HashMap(); + List> columnList = new ArrayList>(); + String columnKey = ""; + String[] tnames = tableName.split(","); + for (String tname : tnames) { + columnList = dbDao.listColumnsMysql(tname); + if (columnList != null && columnList.size() > 0) { + for (int i = 0; i < columnList.size(); i++) { + Map column = new HashMap(); + String dataType = columnList.get(i).get("dataType").toLowerCase().contains("char") || columnList.get(i).get("dataType").toLowerCase().contains("text") ? + "C" : columnList.get(i).get("dataType").toLowerCase().contains("date") ? "D" : "N"; + ; + String attrName = columnList.get(i).get("columnName").toString(); + if (map.get(attrName) == null) { + column.put("tableName", tname); + column.put("dataType", dataType); + column.put("columnName", columnList.get(i).get("columnName")); + if (columnList.get(i).get("columnKey") != null) { + column.put("columnKey", columnList.get(i).get("columnKey")); + } else { + column.put("columnKey", "N"); + } + if (map.get(attrName) != null) { + map.put(tname.toLowerCase() + "." + attrName, column); + } else { + map.put(attrName, column); + } + } + } + } + } + return map; + } + + + private String getUpdateTime(String id) { + String updateTime = ""; + Map map = dbDao.get("select * from idc_status where id='" + id + "'"); + if (map != null && map.get("id") != null) { + updateTime = DateUtil.formatDate(IDCUtils.parseDate(map.get("statusTime").toString()), "yyyy-MM-dd HH:mm:ss"); + } else { + //国家库数据 + if (id.equals("productinfo")) { + + } + updateTime = "2000-01-01 00:00:00"; + String sql = "insert into idc_status (id,statusTime) values ('" + id + "',cast('" + updateTime + "' as datetime))"; + dbDao.save(sql); + } + return updateTime; + } + + private String setUpdateTime(String id, String updateTime) { + String sql = ""; + Map map = dbDao.get("select * from idc_status where id='" + id + "'"); + if (map != null && map.get("id") != null) { + sql = "update idc_status set statusTime=cast('" + updateTime + "' as datetime) where id='" + id + "'"; + dbDao.update(sql); + } else { + sql = "insert into idc_status (id,statusTime) values ('" + id + "',cast('" + updateTime + "' as datetime))"; + dbDao.save(sql); + } + return updateTime; + } + + private void initTable() { + alterTable("idc_var", "create table idc_var (code varchar(60),content varchar(200),PRIMARY KEY (code))"); + alterTable("idc_status", "create table idc_status (id varchar(100),statusTime datetime,PRIMARY KEY (id))"); + alterTable("idc_record", "create table idc_record (id varchar(36),type varchar(60),fkId varchar(36),isEnd char(1),createTime datetime,primary key (id),INDEX i_idc_record_fk_id (fkId),INDEX i_idc_record_create_time (createTime))"); + alterTable("idc_log", "create table idc_log (id varchar(36),orderNum int,taskId varchar(60),type varchar(60),content varchar(2000),offset int,total int,createTime datetime,PRIMARY KEY (id))"); + alterTable("idc_file", "create table idc_file (filePath varchar(255),createTime datetime,PRIMARY KEY (filePath))"); + dbDao.delete("delete from idc_record where createTime map = dbDao.getMysql(tableName); + if (!(map != null && map.get("tableName") != null)) { + executeSql(sql); + } + + } + + + private void executeSql(String sql) { + try { + jdbcTemplate.execute(sql); + + } catch (Exception e) { + + } + } + } diff --git a/src/main/java/com/glxp/api/idc/utils/IDCUtils.java b/src/main/java/com/glxp/api/idc/utils/IDCUtils.java index faf755968..90987bb0a 100644 --- a/src/main/java/com/glxp/api/idc/utils/IDCUtils.java +++ b/src/main/java/com/glxp/api/idc/utils/IDCUtils.java @@ -1,14 +1,24 @@ package com.glxp.api.idc.utils; import java.io.File; +import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.alibaba.fastjson.JSON; + +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + @@ -129,4 +139,27 @@ public class IDCUtils { } } + + public static String post(String url, Map params) { + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody body = RequestBody.create(mediaType, ""); + if (params != null) + body = RequestBody.create(mediaType, JSON.toJSONString(params)); + Request request = new Request.Builder() + .url(url) + .method("POST", body) + .addHeader("Content-Type", "application/json") + .build(); + String result = ""; + try { + Response response = client.newCall(request).execute(); + result = response.body().string(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return result; + } } diff --git a/src/main/java/com/glxp/api/idc/utils/TableUtils.java b/src/main/java/com/glxp/api/idc/utils/TableUtils.java new file mode 100644 index 000000000..98838e2df --- /dev/null +++ b/src/main/java/com/glxp/api/idc/utils/TableUtils.java @@ -0,0 +1,50 @@ +package com.glxp.api.idc.utils; + +/** + * @author chenqf + */ +public class TableUtils { + /*同步表,格式:同步设置表列名/同步设置表列名(子表时设置,主表不设置)/主表唯一列(多列逗号分隔)/主表关联列/子表关联列/数据库实际表/时间列/图片或文件列/数据条件/说明*/ + private static final String[] SYNC_TABLES = { + + "typeThird//thr_bustype_origin/id///updateTime///第三方单据类型", + "basicThirdCorp//thr_corp/id///updateTime///第三方往来单位", + "//thr_dept/id///updateTime///第三方部门", + "//thr_inv_products/id///updateTime///第三方库存", + "basicThirdInv//thr_inv_warehouse/id//////第三方仓库", + "basicThirdBusOrder//thr_order/id///updateTime///第三方业务单据", + "/basicThirdBusOrder/thr_order_detail/orderIdFk/id/orderIdFk/updateTime///第三方单据详情", + "basicThirdProducts//thr_products/id///updateTime///第三方产品信息", + "basicType//basic_hosp_type/id///updateTime///物资字典分类", + "basicDept//auth_dept/id///updateTime///部门信息", + "basicInv//auth_warehouse/id///updateTime///仓库信息", + "typeBus//basic_bustype_change/id///updateTime///业务单据类型", + "typeScan//basic_bussiness_type/id///updateTime///扫码单据类型" + }; + + /** + * "entrustAction//basic_entrust_accept/id///updateTime///委托验收", + * "basicProducts//basic_udirel/id///updateTime///耗材字典", + * "/basicProducts/basic_products/id/uuid/uuid////耗材字典信息详情", + * "basicCorp//basic_corp/id///updateTime///往来单位", + * "//company_product_relevance/id///updateTime///供应商关联信息", + *

+ * "//sup_cert_set/id///updateTime///供应商资质证书设置", + * "companyCert//sup_company/customerId///updateTime///配送企业", + * "manufacturerCert//sup_manufacturer/id///updateTime///生产企业", + * "productCert//sup_product/id///updateTime///产品资质信息", + * "/companyCert/sup_cert/id/customerId/customerId/updateTime/filePath/type=1/配送企业资质证书信息", + * "/manufacturerCert/sup_cert/id/manufacturerId/manufacturerIdFk/updateTime/filePath/type=2/生产企业资质证书信息", + * "/productCert/sup_cert/id/productId/productIdFk/updateTime/filePath/type=3/产品资质证书信息", + * "//udicompany/id///updateTime///国际库医疗器械注册人信息", + */ + + + //"dbDiProducts//productinfo/id///updateTime///DI产品信息", + //"basicInv/////////仓库字典", + //"typeBus/////////业务单据类型", + //"typeScan/////////扫码单据类型", + public static String[] syncTables() { + return SYNC_TABLES; + } +} diff --git a/src/main/java/com/glxp/api/req/inout/FilterOrderDetailBizRequest.java b/src/main/java/com/glxp/api/req/inout/FilterOrderDetailBizRequest.java index a1652c694..ca65a7425 100644 --- a/src/main/java/com/glxp/api/req/inout/FilterOrderDetailBizRequest.java +++ b/src/main/java/com/glxp/api/req/inout/FilterOrderDetailBizRequest.java @@ -28,4 +28,6 @@ public class FilterOrderDetailBizRequest extends ListPageRequest { * 产品名称 */ private String productName; + + private Long bizIdFk; } diff --git a/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java b/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java index 9906eb77c..802f138d9 100644 --- a/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java +++ b/src/main/java/com/glxp/api/req/inout/FilterOrderRequest.java @@ -176,5 +176,11 @@ public class FilterOrderRequest extends ListPageRequest { private Integer busType; private Integer inCodeStatus; + private String relKey; + + //发票查询 + private String supInoivceSearch; + private List invoiceActions1; + private List invoiceActions2; } diff --git a/src/main/java/com/glxp/api/req/inout/FilterUploadOrderRequest.java b/src/main/java/com/glxp/api/req/inout/FilterUploadOrderRequest.java index 53e59dcdb..e108abbe7 100644 --- a/src/main/java/com/glxp/api/req/inout/FilterUploadOrderRequest.java +++ b/src/main/java/com/glxp/api/req/inout/FilterUploadOrderRequest.java @@ -46,4 +46,6 @@ public class FilterUploadOrderRequest extends ListPageRequest { */ private String submitStatus; + private Integer busType; + } diff --git a/src/main/java/com/glxp/api/req/inout/ReviewSpmsRequest.java b/src/main/java/com/glxp/api/req/inout/ReviewSpmsRequest.java new file mode 100644 index 000000000..da5ee232b --- /dev/null +++ b/src/main/java/com/glxp/api/req/inout/ReviewSpmsRequest.java @@ -0,0 +1,10 @@ +package com.glxp.api.req.inout; + +import lombok.Data; + +@Data +public class ReviewSpmsRequest { + + private String billNo; + +} diff --git a/src/main/java/com/glxp/api/req/inv/AddInvRemindSetRequest.java b/src/main/java/com/glxp/api/req/inv/AddInvRemindSetRequest.java index f27277960..4695124e1 100644 --- a/src/main/java/com/glxp/api/req/inv/AddInvRemindSetRequest.java +++ b/src/main/java/com/glxp/api/req/inv/AddInvRemindSetRequest.java @@ -2,6 +2,8 @@ package com.glxp.api.req.inv; import lombok.Data; +import java.util.List; + /** * 添加库存预警设置参数 */ @@ -64,5 +66,9 @@ public class AddInvRemindSetRequest { * 备注 */ private String remark; - + + /** + * 耗材字典ID集合 + */ + private List relIdList; } diff --git a/src/main/java/com/glxp/api/req/sync/BasicDownloadRequest.java b/src/main/java/com/glxp/api/req/sync/BasicDownloadRequest.java index ba4b52b65..633746900 100644 --- a/src/main/java/com/glxp/api/req/sync/BasicDownloadRequest.java +++ b/src/main/java/com/glxp/api/req/sync/BasicDownloadRequest.java @@ -8,7 +8,7 @@ public class BasicDownloadRequest extends ListPageRequest { private String id; private String taskId; //任务ID private Integer status; - private Integer type; + private String type; private String idDatas; private Integer scheduleType; public Integer createType; diff --git a/src/main/java/com/glxp/api/req/sync/BasicExportStatusRequest.java b/src/main/java/com/glxp/api/req/sync/BasicExportStatusRequest.java index 796cb7e0b..3d8b84677 100644 --- a/src/main/java/com/glxp/api/req/sync/BasicExportStatusRequest.java +++ b/src/main/java/com/glxp/api/req/sync/BasicExportStatusRequest.java @@ -7,7 +7,7 @@ import lombok.Data; public class BasicExportStatusRequest extends ListPageRequest { private String id; private Integer status; - private Integer type; + private String type; private String idDatas; private Integer scheduleType; public Integer createType; diff --git a/src/main/java/com/glxp/api/res/inout/IoOrderDetailResultResponse.java b/src/main/java/com/glxp/api/res/inout/IoOrderDetailResultResponse.java index a48c1bb2f..2c079da38 100644 --- a/src/main/java/com/glxp/api/res/inout/IoOrderDetailResultResponse.java +++ b/src/main/java/com/glxp/api/res/inout/IoOrderDetailResultResponse.java @@ -122,6 +122,10 @@ public class IoOrderDetailResultResponse { */ private int reCount; + private Integer inCount; + private Integer outCount; + + /** * 备注 */ @@ -152,5 +156,9 @@ public class IoOrderDetailResultResponse { */ private String remark5; private int acceptCount; + private String fromCorpName; + private String billTypeName; + private String mainAction; + } diff --git a/src/main/java/com/glxp/api/res/inv/InnerOrderPrintResponse.java b/src/main/java/com/glxp/api/res/inv/InnerOrderPrintResponse.java new file mode 100644 index 000000000..b3da96097 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InnerOrderPrintResponse.java @@ -0,0 +1,41 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +import java.util.Date; + +@Data +public class InnerOrderPrintResponse { + private Integer id; + private String udiRlIdFk; + private String udiCode; + private String nameCode; + private String cpmctymc; + private String batchNo; + private String productDate; + private String expireDate; + private String serialNo; + private String codeType; + private String thirdId; + private String thirdName; + private String printStatus; + private String ggxh; + private String ylqxzcrbarmc; + private String zczbhhzbapzbh; + private String warehouseName; + private String warehouseCode; + private String spaceCode; + private String spaceName; + private String thirdSysFk; + private String nnum; + private String genKeyFk; + + private String sOrderId; + private String sDetailId; + private Date updateTime; + + + private Integer count; + private String corpName; + +} diff --git a/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java b/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java index 1d9652841..510daf3f3 100644 --- a/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvRemindSetResponse.java @@ -80,4 +80,28 @@ public class InvRemindSetResponse { */ private String ggxh; + /** + * 低库存预警数量 + */ + private Integer lowStockNum; + + /** + * 库存积压预警数量 + */ + private Integer overStockNum; + + /** + * 近效期预警时间 + */ + private Integer recentDateTime; + + /** + * 近效期预警时间格式类型 1:天;2:小时 + */ + private Integer isDateBy; + + /** + * 状态 0:未启用 1:已启用 + */ + private Integer status; } diff --git a/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java b/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java new file mode 100644 index 000000000..3f05c8f1c --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java @@ -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 files; + private String updateTime; + +} diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncBusOrderResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncBusOrderResponse.java index ccb8df58a..775dc82ac 100644 --- a/src/main/java/com/glxp/api/res/sync/SpsSyncBusOrderResponse.java +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncBusOrderResponse.java @@ -6,10 +6,10 @@ import lombok.Data; import java.util.List; +//同步业务单据相关 @Data -public class SpsSyncBusOrderResponse { +public class SpsSyncBusOrderResponse extends BaseSyncResponse { - private String taskId; private List purOrderEntities; private List purOrderDetailEntities; diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncBusResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncBusResponse.java new file mode 100644 index 000000000..9a8006e23 --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncBusResponse.java @@ -0,0 +1,18 @@ +package com.glxp.api.res.sync; + +import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.basic.EntrustReceEntity; +import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; +import lombok.Data; + +import java.util.List; + +//同步单据类型相关 +@Data +public class SpsSyncBusResponse extends BaseSyncResponse { + + private List bussinessTypeEntities; + private List busTypeChangeEntities; + private List thrBusTypeOriginEntities; +} diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncConfigResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncConfigResponse.java new file mode 100644 index 000000000..7e38a29c6 --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncConfigResponse.java @@ -0,0 +1,30 @@ +package com.glxp.api.res.sync; + +import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; +import com.glxp.api.entity.basic.BasicBusTypePreEntity; +import com.glxp.api.entity.basic.EntrustReceEntity; +import com.glxp.api.entity.system.SystemPDFModuleEntity; +import com.glxp.api.entity.system.SystemPDFTemplateEntity; +import com.glxp.api.entity.system.SystemPDFTemplateRelevanceEntity; +import com.glxp.api.entity.system.SystemParamConfigEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class SpsSyncConfigResponse extends BaseSyncResponse { + + SystemParamConfigEntity systemParamConfigEntity; + List entrustReceEntities; + + // 模板相关 + List systemPDFModuleEntityList; + List systemPDFTemplateEntities; + List systemPDFTemplateRelevanceEntities; +// List sysPdfTemplateRelevanceBizEntities; +// List sysPdfTemplateRelevanceLabelEntities; +// List sysPdfTemplateRelevanceStatemenEntities; + + List basicBusTypePreEntities; + List basicBusTypeChangeEntities; +} diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java new file mode 100644 index 000000000..ca0a33fae --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java @@ -0,0 +1,32 @@ +package com.glxp.api.res.sync; + +import com.glxp.api.entity.auth.*; +import lombok.Data; + +import java.util.List; + +//同步用户信息相关 +@Data +public class SpsSyncDataResponse extends BaseSyncResponse { + + + //用户信息 + List authAdminList; + List invBusUserEntities; + + //部门信息 + List deptEntityList; + List deptUserEntities; + + + //仓库相关 + List invWarehouseEntities; + List warehouseBussinessTypeEntities; + List warehouseUserEntities; + + + //货位信息 + List invSpaces; + + +} diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncOrderResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncOrderResponse.java index c10f855c7..4af1e7aa7 100644 --- a/src/main/java/com/glxp/api/res/sync/SpsSyncOrderResponse.java +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncOrderResponse.java @@ -4,19 +4,15 @@ import com.glxp.api.entity.inout.*; import lombok.Data; import java.util.List; - +//同步扫码单据相关 @Data -public class SpsSyncOrderResponse { +public class SpsSyncOrderResponse extends BaseSyncResponse { - //同步任务ID - private String taskId; List orderEntities; List codeEntities; List orderDetailBizEntities; List orderDetailCodeEntities; List orderDetailResultEntities; - - - + List orderInvoiceEntities; } diff --git a/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java b/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java index c347850e3..7e1a53c83 100644 --- a/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java +++ b/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java @@ -10,41 +10,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 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 busTypes; //扫码单据类型 - private List changeBusTypes; //业务单据类型 - private List purTypeEntities; + private List busTypes; //UDI管理系统->SPMS单据类型 + private List toInBusTypes; //SPMS->UDI管理系统单据类型 + private List 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; } diff --git a/src/main/java/com/glxp/api/service/auth/InvWarehouseService.java b/src/main/java/com/glxp/api/service/auth/InvWarehouseService.java index 3aafad071..35dd24208 100644 --- a/src/main/java/com/glxp/api/service/auth/InvWarehouseService.java +++ b/src/main/java/com/glxp/api/service/auth/InvWarehouseService.java @@ -7,6 +7,7 @@ import com.glxp.api.res.auth.InvSubWarehouseResponse; import com.glxp.api.res.auth.InvWarehouseThirdSysResponse; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; public interface InvWarehouseService { @@ -82,5 +83,8 @@ public interface InvWarehouseService { * @return */ List findInvListByUser(FilterInvWarehouseRequest filterInvWarehouseRequest); - String selectParentIdByCode( String invCode); + + String selectParentIdByCode(String invCode); + + List findByLastTime(Date lastUpdateTime); } diff --git a/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java b/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java index 2fd487c45..b3144530d 100644 --- a/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java +++ b/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java @@ -3,10 +3,12 @@ package com.glxp.api.service.auth.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.auth.InvWarehouseDao; import com.glxp.api.dao.thrsys.ThrSystemDao; import com.glxp.api.entity.auth.InvWarehouseEntity; +import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.req.auth.FilterInvSubWarehouseRequest; import com.glxp.api.req.auth.FilterInvWarehouseRequest; @@ -20,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; @Service @@ -231,4 +234,9 @@ public class InvWarehouseServiceImpl implements InvWarehouseService { public String selectParentIdByCode(String invCode) { return invWarehouseDao.selectParentIdByCode(invCode); } + + @Override + public List findByLastTime(Date lastUpdateTime) { + return invWarehouseDao.selectList(new QueryWrapper().gt("updateTime", lastUpdateTime)); + } } diff --git a/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java b/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java index f629ab7db..39bfac036 100644 --- a/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java +++ b/src/main/java/com/glxp/api/service/basic/IBasicBusTypeChangeService.java @@ -1,9 +1,11 @@ package com.glxp.api.service.basic; import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.req.basic.FilterBusTypeChangeRequest; import com.glxp.api.res.basic.BasicBusTypeChangeResponse; +import java.util.Date; import java.util.List; /** @@ -51,4 +53,7 @@ public interface IBasicBusTypeChangeService { * @return */ boolean verifyExists(BasicBusTypeChangeEntity basicBusTypeChangeEntity); + + + List findByLastTime(Date lastUpdateTime); } diff --git a/src/main/java/com/glxp/api/service/basic/IBasicBussinessTypeService.java b/src/main/java/com/glxp/api/service/basic/IBasicBussinessTypeService.java index 3c1c0284e..6eb767322 100644 --- a/src/main/java/com/glxp/api/service/basic/IBasicBussinessTypeService.java +++ b/src/main/java/com/glxp/api/service/basic/IBasicBussinessTypeService.java @@ -4,6 +4,7 @@ import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.req.basic.FilterBussinessTypeRequest; import com.glxp.api.res.basic.BasicBussinessTypeResponse; +import java.util.Date; import java.util.List; /** @@ -21,6 +22,9 @@ public interface IBasicBussinessTypeService { List filterJoinByUser(FilterBussinessTypeRequest filterBussinessTypeRequest); + List filterJoinByInv(FilterBussinessTypeRequest filterBussinessTypeRequest); + + /** * 添加单据类型 * @@ -113,4 +117,8 @@ public interface IBasicBussinessTypeService { List findByVueType(String vueType); + + List selectbyNotAction(List list); + + List findByLastTime(Date lastUpdateTime); } diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java index 80f3f22c9..a37faad5a 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicBusTypeChangeServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.BasicBusTypeChangeDao; import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.req.basic.FilterBusTypeChangeRequest; import com.glxp.api.res.basic.BasicBusTypeChangeResponse; import com.glxp.api.service.auth.CustomerService; @@ -82,6 +83,11 @@ public class BasicBusTypeChangeServiceImpl implements IBasicBusTypeChangeService return false; } + @Override + public List findByLastTime(Date lastUpdateTime) { + return basicBusTypeChangeDao.selectList(new QueryWrapper().gt("updateTime", lastUpdateTime)); + } + private void setUpdateInfo(BasicBusTypeChangeEntity basicBusTypeChangeEntity) { Date now = new Date(); String userId = String.valueOf(customerService.getUserBean().getId()); diff --git a/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java index b64384827..3a942a9cb 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/BasicBussinessTypeServiceImpl.java @@ -13,6 +13,7 @@ import com.glxp.api.req.basic.FilterBussinessTypeRequest; import com.glxp.api.res.basic.BasicBussinessTypeResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.system.SystemParamConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -55,6 +56,11 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService return basicBussinessTypeDao.filterJoinByUser(filterBussinessTypeRequest); } + @Override + public List filterJoinByInv(FilterBussinessTypeRequest filterBussinessTypeRequest) { + return basicBussinessTypeDao.filterJoinByInv(filterBussinessTypeRequest); + } + @Override public boolean insertBussinessType(BasicBussinessTypeEntity bussinessTypeEntity) { //设置创建时间和更新时间数据 @@ -191,6 +197,10 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService return list; } + + @Resource + SystemParamConfigService systemParamConfigService; + @Override public List findByVueType(String vueType) { @@ -204,18 +214,38 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService case Constant.ORDER_ACTION_PRE_DETAIL: bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() - .eq("actionType", 3).eq("inStock", true)); + .eq("actionType", 3).eq("inStock", true).eq("enable", true)); break; case Constant.ORDER_ACTION_SUP_DELIVERY: - bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() - .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) - .eq("spUse", true).eq("inStock", false)); + //允许送货单直接入库变更库存,则不判断送货单是否入库 + String deliveryInstock = systemParamConfigService.selectValueByParamKey("deliveryInstock"); + if (StrUtil.isNotEmpty(deliveryInstock) && deliveryInstock.equals("1")) { + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) + .gt("spUse", 1).eq("enable", true)); + } else { + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) + .gt("spUse", 1).eq("inStock", false).eq("enable", true)); + } break; case Constant.ORDER_ACTION_SUP_INVOICE: bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) - .eq("spUse", true).eq("actionType", 1)); + .gt("spUse", 0).eq("actionType", 1).eq("enable", true)); + break; + + + case Constant.ORDER_ACTION_SUP_DELAUDIT: //供应商审核送货单 + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) + .gt("spUse", 1).eq("enable", true)); + break; + + case Constant.ORDER_ACTION_SUP_INOUT: //供应商查询出入库单 + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .gt("spUse", 0).eq("enable", true)); break; default: break; @@ -252,4 +282,13 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService bussinessTypeEntity.setUpdateTime(now); } + @Override + public List selectbyNotAction(List list) { + return basicBussinessTypeDao.selectbyNotAction(list); + } + + @Override + public List findByLastTime(Date lastUpdateTime) { + return basicBussinessTypeDao.selectList(new QueryWrapper().gt("updateTime", lastUpdateTime)); + } } diff --git a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java index 05ddcbca0..aaebf94be 100644 --- a/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoAddInoutService.java @@ -297,7 +297,8 @@ public class IoAddInoutService { public void genOrderDetailCode(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity) { List ioOrderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); - UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(codeTempEntity.getRelId()); + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(codeTempEntity.getRelId()); +// UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(codeTempEntity.getRelId()); if (CollUtil.isEmpty(ioOrderDetailCodeEntities)) { orderDetailCodeService.insert(buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse)); } else { diff --git a/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java b/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java index 48ace69dd..e64170fb4 100644 --- a/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; @@ -8,15 +9,14 @@ import com.glxp.api.constant.ConstantType; import com.glxp.api.entity.auth.InvWarehouseEntity; import com.glxp.api.entity.basic.BasicBusTypePreEntity; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; -import com.glxp.api.entity.inout.IoCodeEntity; -import com.glxp.api.entity.inout.IoCodeTempEntity; -import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.inout.*; import com.glxp.api.entity.inv.InvProductDetailEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; import com.glxp.api.service.auth.InvWarehouseService; import com.glxp.api.service.basic.IBasicBusTypePreService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inv.InvProductDetailService; +import com.glxp.api.service.inv.InvProductService; import com.glxp.api.service.system.SystemParamConfigService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; @@ -56,18 +56,21 @@ public class IoChangeInoutService { SystemParamConfigService systemParamConfigService; @Resource IoCodeTempService codeTempService; + @Resource + IoOrderInvoiceService ioOrderInvoiceService; + @Resource + IoOrderDetailBizService orderDetailBizService; public void changeOrder(IoOrderEntity orderEntity) { BasicBusTypePreEntity basicBusTypePreEntity = basicBusTypePreService.findByOriginAction(orderEntity.getAction()); List codeEnttities = codeService.findByOrderId(orderEntity.getBillNo()); - if (basicBusTypePreEntity != null) { - buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity); - } else { - //结束,不生成库存, - } + if (basicBusTypePreEntity != null) { + buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity, true); + } + //结束,不生成库存, } @@ -84,7 +87,7 @@ public class IoChangeInoutService { List codeEnttities = codeService.findByOrderId(orderEntity.getBillNo()); if (basicBusTypePreEntity.getSupplementAll()) {//全量补单 invProductDetailService.insertList(invProductDetailEntities); - buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity); + buildInOrder(basicBusTypePreEntity, codeEnttities, orderEntity, false); } else { //缺量补单 List inList = new ArrayList<>(); for (IoCodeEntity warehouseEntity : codeEnttities) { @@ -106,7 +109,7 @@ public class IoChangeInoutService { InvProductDetailEntity invProductDetailEntity = filterInvByCode(invProductDetailEntities, warehouseEntity.getCode()); invProductDetailService.insert(invProductDetailEntity); } - buildInOrder(basicBusTypePreEntity, inList, orderEntity); + buildInOrder(basicBusTypePreEntity, inList, orderEntity, false); } } @@ -138,7 +141,13 @@ public class IoChangeInoutService { } //生成单据 - public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List useInList, IoOrderEntity orderEntity) { + public void buildInOrder(BasicBusTypePreEntity bussinessChangeTypeEntity, List useInList, IoOrderEntity orderEntity, boolean isGenInovice) { + + + if (StrUtil.isEmpty(orderEntity.getRelKey())) { + orderEntity.setRelKey(UUID.fastUUID().toString(true)); + orderService.update(orderEntity); + } if (useInList.size() <= 0) { return; } @@ -173,7 +182,7 @@ public class IoChangeInoutService { if (bussinessChangeTypeEntity.getBeforeTime() != null) outOrder.setCreateTime(DateUtil.getBeforeDay(DateUtil.fromDate(orderEntity), bussinessChangeTypeEntity.getBeforeTime())); else - outOrder.setCreateTime(DateUtil.fromDate(orderEntity)); + outOrder.setCreateTime(new Date()); //不设,默认为当前时间 outOrder.setAction(targetBustypeEntity.getAction()); outOrder.setMainAction(targetBustypeEntity.getMainAction()); outOrder.setBusType(targetBustypeEntity.getBusType()); @@ -223,6 +232,8 @@ public class IoChangeInoutService { outOrder.setCreateUser(null); outOrder.setReviewUser(null); orderService.insertOrder(outOrder); + + //生成条码 List codeTempEntities = new ArrayList<>(); for (IoCodeEntity warehouseEntity : temps) { IoCodeTempEntity codeTempEntity = new IoCodeTempEntity(); @@ -234,20 +245,30 @@ public class IoChangeInoutService { codeTempEntities.add(codeTempEntity); } codeTempService.insertBatch(codeTempEntities); - - //根据单据设置状态 1:草稿 - if (bussinessChangeTypeEntity.getAuditStatus() != null) { - if (bussinessChangeTypeEntity.getAuditStatus() == 1) { - orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE); - orderService.update(orderEntity); - } else if (bussinessChangeTypeEntity.getAuditStatus() == 2 || bussinessChangeTypeEntity.getAuditStatus() == 3) { - addInoutService.dealProcess(outOrder); - if (!ioCheckInoutService.checkManual(outOrder.getBillNo())) { - ioCheckInoutService.check(outOrder.getBillNo()); + if (isGenInovice) { + //生成发票信息 + List invoiceEntities = ioOrderInvoiceService.findByBillNo(orderEntity.getBillNo()); + if (CollUtil.isNotEmpty(invoiceEntities)) { + for (IoOrderInvoiceEntity orderInvoiceEntity : invoiceEntities) { + orderInvoiceEntity.setOrderIdFk(outOrder.getBillNo()); + orderInvoiceEntity.setId(null); + orderInvoiceEntity.setBizIdFk(null); + orderInvoiceEntity.setUpdateTime(new Date()); + ioOrderInvoiceService.insertInvoice(orderInvoiceEntity); } } } + //根据单据设置状态 1:草稿 + if (bussinessChangeTypeEntity.getAuditStatus() == 1) { + orderEntity.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE); + orderService.update(orderEntity); + } else if (bussinessChangeTypeEntity.getAuditStatus() == 2 || bussinessChangeTypeEntity.getAuditStatus() == 3) { + addInoutService.dealProcess(outOrder); + if (!ioCheckInoutService.checkManual(outOrder.getBillNo())) { + ioCheckInoutService.check(outOrder.getBillNo()); + } + } } } diff --git a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java index eebb2bc26..a69045886 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -1,6 +1,7 @@ package com.glxp.api.service.inout; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.ConstantStatus; @@ -44,8 +45,6 @@ public class IoCheckInoutService { @Resource IoOrderDetailResultService orderDetailResultService; @Resource - InvPreinOrderService invPreinOrderService; - @Resource InvPreinDetailService invPreinDetailService; @Resource IoGenInvService genInvService; @@ -208,7 +207,7 @@ public class IoCheckInoutService { return "请先录入业务详情"; } - IoOrderDetailBizEntity bizEntity = orderDetailBizService.findByUnique(codeEntity.getOrderId(), codeEntity.getRelId(), codeEntity.getBatchNo()); + IoOrderDetailBizEntity bizEntity = orderDetailBizService.findByUnique(codeEntity.getOrderId(), codeEntity.getRelId(), codeEntity.getBatchNo(), codeEntity.getProduceDate(), codeEntity.getExpireDate()); if (bizEntity == null) { return "非此单产品!"; } @@ -237,28 +236,29 @@ public class IoCheckInoutService { orderService.update(orderEntity); return; } - - orderDetailBizService.deleteByOrderId(orderEntity.getBillNo()); - orderDetailResultService.deleteByOrderId(orderEntity.getBillNo()); - orderDetailCodeEntities.forEach(orderDetailCodeEntity -> - { - //生成业务单据 - IoOrderDetailBizEntity orderDetailBizEntity = new IoOrderDetailBizEntity(); - BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailBizEntity); - orderDetailBizEntity.setCount(orderDetailCodeEntity.getReCount()); - orderDetailBizEntity.setId(null); - orderDetailBizService.insert(orderDetailBizEntity); + if (orderEntity.getFromType() != ConstantStatus.FROM_UDISP) { + orderDetailBizService.deleteByOrderId(orderEntity.getBillNo()); + orderDetailResultService.deleteByOrderId(orderEntity.getBillNo()); + orderDetailCodeEntities.forEach(orderDetailCodeEntity -> + { + //生成业务单据 + IoOrderDetailBizEntity orderDetailBizEntity = new IoOrderDetailBizEntity(); + BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailBizEntity); + orderDetailBizEntity.setCount(orderDetailCodeEntity.getReCount()); + orderDetailBizEntity.setId(null); + orderDetailBizService.insert(orderDetailBizEntity); - //生成单据结果 - IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); - BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailResultEntity); - orderDetailResultEntity.setCount(orderDetailCodeEntity.getReCount()); - orderDetailResultEntity.setReCount(orderDetailCodeEntity.getReCount()); - orderDetailResultEntity.setId(null); - orderDetailResultService.insert(orderDetailResultEntity); + //生成单据结果 + IoOrderDetailResultEntity orderDetailResultEntity = new IoOrderDetailResultEntity(); + BeanUtils.copyProperties(orderDetailCodeEntity, orderDetailResultEntity); + orderDetailResultEntity.setCount(orderDetailCodeEntity.getReCount()); + orderDetailResultEntity.setReCount(orderDetailCodeEntity.getReCount()); + orderDetailResultEntity.setId(null); + orderDetailResultService.insert(orderDetailResultEntity); - }); + }); + } //临时表转正式表 List codeTempEntities = codeTempService.findByOrderId(orderEntity.getBillNo()); @@ -274,7 +274,7 @@ public class IoCheckInoutService { orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_POST); orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); -// genLostCode(orderEntity.getBillNo()); + genLostCode(orderEntity.getBillNo()); checkThird(orderEntity); } @@ -303,6 +303,7 @@ public class IoCheckInoutService { String errMsg = ""; //正向校验 for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + String msg = ""; for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null && checkBatchNo(bizEntity, codeEntity) == null @@ -314,15 +315,23 @@ public class IoCheckInoutService { bizEntity.setCheckSuccess(true); bizEntity.setScanCount(codeEntity.getReCount()); codeEntity.setCheckSuccess(true); + } else { + bizEntity.setScanCount(codeEntity.getReCount()); + bizEntity.setCheckSuccess(false); + msg = "数量不匹配"; } break; } } + if (StrUtil.isEmpty(msg) && !bizEntity.isCheckSuccess()) { + msg = "三期不匹配"; + } + bizEntity.setErrMsg(msg); } for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { if (!bizEntity.isCheckSuccess()) { - errMsg = errMsg + bizEntity.getCoName() + ";"; + errMsg = errMsg + bizEntity.getCoName() + bizEntity.getErrMsg() + ";"; } } @@ -380,7 +389,7 @@ public class IoCheckInoutService { orderEntity.setUpdateTime(new Date()); orderService.update(orderEntity); //生成缺失码 -// genLostCode(orderEntity.getBillNo()); + genLostCode(orderEntity.getBillNo()); checkThird(orderEntity); @@ -398,28 +407,36 @@ public class IoCheckInoutService { bizEntity.setCheckSuccess(false); } for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + String msg = ""; for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null && checkBatchNo(bizEntity, codeEntity) == null + && checkProductDate(bizEntity, codeEntity) == null + && checkExpireDate(bizEntity, codeEntity) == null ) { if (checkCount(bizEntity, codeEntity) == null) { + bizEntity.setCheckSuccess(true); codeEntity.setCheckSuccess(true); bizEntity.setScanCount(codeEntity.getReCount()); } else { + msg = "数量不匹配"; bizEntity.setScanCount(codeEntity.getReCount()); bizEntity.setCheckSuccess(false); } break; } } + if (StrUtil.isEmpty(msg) && !bizEntity.isCheckSuccess()) { + msg = "三期不匹配"; + } + bizEntity.setErrMsg(msg); } - for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { if (!bizEntity.isCheckSuccess()) { - errMsg = errMsg + bizEntity.getCoName() + ";"; + errMsg = errMsg + bizEntity.getCoName() + bizEntity.getErrMsg() + ";"; } } return errMsg; @@ -531,17 +548,21 @@ public class IoCheckInoutService { } for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + String msg = ""; for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { if (!bizEntity.isCheckSuccess() && !codeEntity.isCheckSuccess() && checkId(bizEntity, codeEntity) == null && checkBatchNo(bizEntity, codeEntity) == null + && checkProductDate(bizEntity, codeEntity) == null + && checkExpireDate(bizEntity, codeEntity) == null ) { - if (checkCount(bizEntity, codeEntity) == null) { + bizEntity.setCheckSuccess(true); codeEntity.setCheckSuccess(true); codeEntity.setOrderCount(bizEntity.getCount()); } else { + msg = "数量不匹配"; codeEntity.setCheckSuccess(false); codeEntity.setOrderCount(bizEntity.getCount()); } @@ -550,12 +571,16 @@ public class IoCheckInoutService { codeEntity.setCheckSuccess(false); } } + if (StrUtil.isEmpty(msg) && !codeEntity.isCheckSuccess()) { + msg = "三期不匹配"; + } + codeEntity.setErrMsg(msg); } String errMsg = ""; for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { if (!codeEntity.isCheckSuccess()) { - errMsg = errMsg + codeEntity.getCoName() + ";"; + errMsg = errMsg + codeEntity.getCoName() + codeEntity.getErrMsg() + ";"; } } return errMsg; @@ -633,7 +658,7 @@ public class IoCheckInoutService { if (orderEntity.getStatus() == ConstantStatus.ORDER_STATUS_CHECK_REW) { orderEntity.setDealStatus(ConstantStatus.ORDER_DEAL_REW); orderEntity.setUpdateTime(new Date()); - orderEntity.setAuditTime(new Date()); + orderEntity.setCheckTime(new Date()); orderService.update(orderEntity); checkSecond(orderEntity); } @@ -716,6 +741,11 @@ public class IoCheckInoutService { } } 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()) { @@ -723,6 +753,7 @@ public class IoCheckInoutService { 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()); //预验收不删除单号,方便后续查询 @@ -776,7 +807,6 @@ public class IoCheckInoutService { } } - //校验是否是不入库存单据 if (bussinessTypeEntity.isInStock()) { // if (bussinessTypeEntity.getBusType() == ConstantStatus.BUS_TYPE_NORMAL) { diff --git a/src/main/java/com/glxp/api/service/inout/IoCodeRelService.java b/src/main/java/com/glxp/api/service/inout/IoCodeRelService.java index c9215b341..9c04993ff 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCodeRelService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCodeRelService.java @@ -1,7 +1,6 @@ package com.glxp.api.service.inout; import com.glxp.api.entity.inout.IoCodeRelEntity; -import com.baomidou.mybatisplus.extension.service.IService; import com.glxp.api.req.inout.IoOrderRelRequest; import com.glxp.api.res.inout.IoCodeRelResponse; diff --git a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java index e4cce5b15..302e8404f 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -65,7 +65,6 @@ public class IoGenInvService { List codeEnttities = codeService.findByOrderId(orderId); //生成库存产品表 - List invProductEntities = new ArrayList<>(); for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) { InvProductEntity invProductEntity = invProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode()); if (invProductEntity == null) { diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java index b263bdaa2..ea8110db7 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderDetailBizService.java @@ -14,7 +14,7 @@ public interface IoOrderDetailBizService { List findByOrderId(String orderId); - List findByOrderIdAndNameCode(String orderId,boolean chack); + List findByOrderIdAndNameCode(String orderId, boolean chack); int insert(IoOrderDetailBizEntity orderDetailBizEntity); @@ -28,14 +28,16 @@ public interface IoOrderDetailBizService { boolean isExit(Long relId, String bacthNo, Integer ignoreId, String orderId); - IoOrderDetailBizEntity findByUnique(String orderId, Long relId, String bacthNo); + IoOrderDetailBizEntity findByUnique(String orderId, Long relId, String bacthNo, String productDate, String expireDate); List filterList(FilterOrderDetailBizRequest orderDetailBizRequest); - IoOrderDetailBizEntity selectByBatchNoAndBindRlFk(String batchNo,String bindRlFk); + IoOrderDetailBizEntity selectByBatchNoAndBindRlFk(String batchNo, String bindRlFk); List checkOrderList(String orderId); List filterListInv(FilterOrderDetailBizRequest orderDetailBizRequest); + Boolean updateOrderDetailBiz(IoOrderDetailBizEntity ioOrderDetailBizEntity); + } diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderInvoiceService.java b/src/main/java/com/glxp/api/service/inout/IoOrderInvoiceService.java index b483b537d..c2a593068 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderInvoiceService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderInvoiceService.java @@ -1,11 +1,15 @@ package com.glxp.api.service.inout; - import com.glxp.api.entity.inout.IoOrderInvoiceEntity; import com.glxp.api.req.inout.IoOrderInvoiceRequest; +import java.util.List; + public interface IoOrderInvoiceService { + + List findByBillNo(String billNo); + boolean deleteByInvId(Integer id); boolean updateByInvId(IoOrderInvoiceRequest ioOrderInvoiceRequest); diff --git a/src/main/java/com/glxp/api/service/inout/IoOrderService.java b/src/main/java/com/glxp/api/service/inout/IoOrderService.java index 21ff15af4..a288ee0bf 100644 --- a/src/main/java/com/glxp/api/service/inout/IoOrderService.java +++ b/src/main/java/com/glxp/api/service/inout/IoOrderService.java @@ -7,6 +7,7 @@ import com.glxp.api.req.inout.FilterUploadOrderRequest; import com.glxp.api.req.inout.OrderEditRequest; import com.glxp.api.res.inout.IoOrderResponse; +import java.util.Date; import java.util.List; public interface IoOrderService { @@ -14,8 +15,6 @@ public interface IoOrderService { List selectAll(); - List findByStatus(String action, Integer status); - List findAll(FilterOrderRequest filterOrderRequest); List isExitRepeat(String corpOrderId, String billNo); @@ -24,6 +23,8 @@ public interface IoOrderService { IoOrderEntity findByBillNo(String billNO); + List findByStatus(String action, Integer status, Date lastUpdateTime); + int insertOrder(IoOrderEntity orderEntity); int insertOrUpdate(IoOrderEntity orderEntity); @@ -78,6 +79,8 @@ public interface IoOrderService { List setActions(FilterOrderRequest filterOrderRequest); + void setInvoiceFiltes(FilterOrderRequest filterOrderRequest); + /** * 查询单号关联的所有单据数据 * diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java index 2f3f5f2ed..f93b06330 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderDetailBizServiceImpl.java @@ -38,14 +38,14 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { @Override public List findByOrderIdAndNameCode(String orderId, boolean chack) { - QueryWrapper ew=new QueryWrapper<>(); - if(StrUtil.isNotEmpty(orderId)){ - ew.eq("orderIdFk",orderId); + QueryWrapper ew = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(orderId)) { + ew.eq("orderIdFk", orderId); } // if(chack){ // ew.isNull("nameCode"); // } - List ioOrderDetailBizEntityList=ioOrderDetailBizDao.selectList(ew); + List ioOrderDetailBizEntityList = ioOrderDetailBizDao.selectList(ew); return ioOrderDetailBizEntityList; } @@ -84,9 +84,17 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { } @Override - public IoOrderDetailBizEntity findByUnique(String orderId, Long relId, String bacthNo) { - return ioOrderDetailBizDao.selectOne(new QueryWrapper().eq("orderIdFk", orderId).eq("bindRlFk", relId).eq(StrUtil.isNotEmpty(bacthNo), "batchNo", bacthNo) - .isNull(StrUtil.isEmpty(bacthNo), "batchNo")); + public IoOrderDetailBizEntity findByUnique(String orderId, Long relId, String bacthNo, String productDate, String expireDate) { + return ioOrderDetailBizDao.selectOne(new QueryWrapper() + .eq("orderIdFk", orderId).eq("bindRlFk", relId) + .eq(StrUtil.isNotEmpty(bacthNo), "batchNo", bacthNo) + .isNull(StrUtil.isEmpty(bacthNo), "batchNo") + .eq(StrUtil.isNotEmpty(productDate), "productDate", productDate) + .isNull(StrUtil.isEmpty(productDate), "productDate") + .eq(StrUtil.isNotEmpty(expireDate), "expireDate", expireDate) + .isNull(StrUtil.isEmpty(expireDate), "expireDate") + + ); } @Override @@ -102,14 +110,14 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { @Override public IoOrderDetailBizEntity selectByBatchNoAndBindRlFk(String batchNo, String bindRlFk) { - QueryWrapper ew=new QueryWrapper<>(); + QueryWrapper ew = new QueryWrapper<>(); if (StrUtil.isNotEmpty(batchNo)) { - ew.eq("batchNo",batchNo); + ew.eq("batchNo", batchNo); } if (StrUtil.isNotEmpty(bindRlFk)) { - ew.eq("bindRlFk",bindRlFk); + ew.eq("bindRlFk", bindRlFk); } - IoOrderDetailBizEntity ioOrderDetailBizEntity=ioOrderDetailBizDao.selectOne(ew); + IoOrderDetailBizEntity ioOrderDetailBizEntity = ioOrderDetailBizDao.selectOne(ew); return ioOrderDetailBizEntity; } @@ -133,4 +141,9 @@ public class IoOrderDetailBizServiceImpl implements IoOrderDetailBizService { return ioOrderDetailBizDao.filterListInv(orderDetailBizRequest); } + @Override + public Boolean updateOrderDetailBiz(IoOrderDetailBizEntity ioOrderDetailBizEntity) { + return ioOrderDetailBizDao.updateById(ioOrderDetailBizEntity) > 0; + } + } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderInvoiceServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderInvoiceServiceImpl.java index 5ef565054..e6c9f0166 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderInvoiceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderInvoiceServiceImpl.java @@ -1,14 +1,17 @@ package com.glxp.api.service.inout.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.dao.inout.IoOrderInvoiceMapper; import com.glxp.api.entity.inout.IoOrderInvoiceEntity; import com.glxp.api.req.inout.IoOrderInvoiceRequest; -import com.glxp.api.service.inout.IoOrderInvoiceService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; + +import com.glxp.api.service.inout.IoOrderInvoiceService; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.List; @Service @Transactional(rollbackFor = Exception.class) @@ -16,20 +19,26 @@ public class IoOrderInvoiceServiceImpl implements IoOrderInvoiceService { @Resource IoOrderInvoiceMapper ioOrderInvoiceMapper; + @Override + public List findByBillNo(String orderIdFk) { + return ioOrderInvoiceMapper.selectList(new QueryWrapper().eq("orderIdFk", orderIdFk)); + } + + @Override public boolean deleteByInvId(Integer id) { - return this.ioOrderInvoiceMapper.deleteById(id)>0; + return this.ioOrderInvoiceMapper.deleteById(id) > 0; } @Override public boolean updateByInvId(IoOrderInvoiceRequest ioOrderInvoiceRequest) { IoOrderInvoiceEntity ioOrderInvoiceEntity = new IoOrderInvoiceEntity(); - BeanUtils.copyProperties(ioOrderInvoiceRequest,ioOrderInvoiceEntity); - return this.ioOrderInvoiceMapper.updateById(ioOrderInvoiceEntity)>0; + BeanUtils.copyProperties(ioOrderInvoiceRequest, ioOrderInvoiceEntity); + return this.ioOrderInvoiceMapper.updateById(ioOrderInvoiceEntity) > 0; } @Override public boolean insertInvoice(IoOrderInvoiceEntity ioOrderInvoiceEntity) { - return ioOrderInvoiceMapper.insertInvoice(ioOrderInvoiceEntity); + return ioOrderInvoiceMapper.insert(ioOrderInvoiceEntity) > 0; } } diff --git a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java index f1f51c52a..7e94dd03f 100644 --- a/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inout/impl/IoOrderServiceImpl.java @@ -103,12 +103,6 @@ public class IoOrderServiceImpl implements IoOrderService { return orderDao.selectList(); } - @Override - public List findByStatus(String action, Integer status) { - return orderDao.selectList(new QueryWrapper().eq("action", action).eq("status", status)); - } - - @Override public List findAll(FilterOrderRequest filterOrderRequest) { QueryWrapper queryWrapper = new QueryWrapper() @@ -143,6 +137,11 @@ public class IoOrderServiceImpl implements IoOrderService { return orderDao.selectOne(new QueryWrapper().eq("billNo", billNO)); } + @Override + public List findByStatus(String action, Integer status, Date lastUpdateTime) { + return orderDao.selectList(new QueryWrapper().eq("action", action).eq("status", status).gt("updateTime", lastUpdateTime)); + } + @Override public int insertOrder(IoOrderEntity orderEntity) { orderEntity.setId(null); @@ -532,10 +531,6 @@ public class IoOrderServiceImpl implements IoOrderService { filterOrderRequest.setStatuses(Arrays.asList(5, 8)); filterOrderRequest.setDealStatuses(Arrays.asList(2)); break; - case Constant.ORDER_STATUS_WAIT_AUDITED: - filterOrderRequest.setStatuses(Arrays.asList(10)); - filterOrderRequest.setDealStatuses(Arrays.asList(3, 4)); - break; case Constant.ORDER_STATUS_AUDITED: filterOrderRequest.setStatuses(Arrays.asList(7)); filterOrderRequest.setDealStatuses(Arrays.asList(3, 4)); @@ -544,6 +539,20 @@ public class IoOrderServiceImpl implements IoOrderService { filterOrderRequest.setStatuses(Arrays.asList(5, 7)); filterOrderRequest.setDealStatuses(Arrays.asList(2, 3)); break; + + case Constant.ORDER_STATUS_INVOICE: + filterOrderRequest.setStatuses(Arrays.asList(5, 10, 7)); + filterOrderRequest.setDealStatuses(Arrays.asList(3, 4)); + break; + + case Constant.ORDER_STATUS_INCODE: + filterOrderRequest.setStatuses(Arrays.asList(1, 3, 5, 10, 7)); + filterOrderRequest.setDealStatuses(Arrays.asList(1, 2, 3, 4)); + break; + case Constant.ORDER_STATUS_WAIT_AUDITED: + filterOrderRequest.setStatuses(Arrays.asList(10, 7)); + filterOrderRequest.setDealStatuses(Arrays.asList(3, 4)); + break; default: break; } @@ -562,6 +571,25 @@ public class IoOrderServiceImpl implements IoOrderService { return actions; } + @Override + public void setInvoiceFiltes(FilterOrderRequest filterOrderRequest) { + List bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) + .eq("corpType", ConstantStatus.CORP_TYPE_OUT).eq("inStock", false) + .gt("spUse", 1).eq("actionType", 1).eq("enable", true)); + List actions1 = null; + actions1 = bussinessTypeEntities.stream().map(BasicBussinessTypeEntity::getAction).collect(Collectors.toList()); + filterOrderRequest.setInvoiceActions1(actions1); + + List bussinessTypeEntities2 = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("mainAction", ConstantType.TYPE_PUT).eq("corpType", ConstantStatus.CORP_TYPE_OUT) + .eq("inStock", true) + .gt("spUse", 0).eq("actionType", 1).eq("enable", true)); + List actions2 = null; + actions2 = bussinessTypeEntities2.stream().map(BasicBussinessTypeEntity::getAction).collect(Collectors.toList()); + filterOrderRequest.setInvoiceActions2(actions2); + } + @Override public List filterOrderTrace(String billNo) { IoOrderEntity order = orderDao.selectOne(new QueryWrapper().eq("billNo", billNo)); @@ -705,28 +733,31 @@ public class IoOrderServiceImpl implements IoOrderService { * @return */ private List getAllOrder(IoOrderEntity order) { - Set billNos = new HashSet<>(); - billNos.add(order.getBillNo()); - - getLinkedBillNo(order.getBillNo(), billNos); - - //去除本单的单据号 - Iterator iterator = billNos.iterator(); - while (iterator.hasNext()) { - if (iterator.next().equals(order.getBillNo())) { - iterator.remove(); - break; - } - } - - ArrayList orders = new ArrayList<>(); - if (CollUtil.isNotEmpty(billNos)) { - List list = orderDao.selectList(new QueryWrapper().in("billNo", billNos).orderByDesc("id")); - orders.addAll(list); - } +// Set billNos = new HashSet<>(); +// billNos.add(order.getBillNo()); + + + List orderEntities = orderDao.selectList(new QueryWrapper().eq("relKey", order.getRelKey())); + +// getLinkedBillNo(order.getBillNo(), billNos); +// +// //去除本单的单据号 +// Iterator iterator = billNos.iterator(); +// while (iterator.hasNext()) { +// if (iterator.next().equals(order.getBillNo())) { +// iterator.remove(); +// break; +// } +// } +// +// ArrayList orders = new ArrayList<>(); +// if (CollUtil.isNotEmpty(billNos)) { +// List list = orderDao.selectList(new QueryWrapper().in("billNo", billNos).orderByDesc("id")); +// orders.addAll(list); +// } //将查询入口单据放在第一位的顺序 - orders.add(0, order); - return orders; +// orders.add(0, order); + return orderEntities; } /** diff --git a/src/main/java/com/glxp/api/service/inv/InvInnerOrderPrintService.java b/src/main/java/com/glxp/api/service/inv/InvInnerOrderPrintService.java index 46b7200cf..6a659030a 100644 --- a/src/main/java/com/glxp/api/service/inv/InvInnerOrderPrintService.java +++ b/src/main/java/com/glxp/api/service/inv/InvInnerOrderPrintService.java @@ -1,11 +1,10 @@ package com.glxp.api.service.inv; import com.glxp.api.entity.inv.InvInnerOrderPrintEntity; -import com.glxp.api.req.inv.DeleteStPrintTempRequest; import com.glxp.api.req.inv.FilterinnerOrderprintRequest; import com.glxp.api.req.inv.InnerOrderQRCodeTextPDFTemplateRequest; import com.glxp.api.res.PageSimpleResponse; -import com.glxp.api.res.inv.innerOrderPrintRequest; +import com.glxp.api.res.inv.InnerOrderPrintResponse; import java.util.List; @@ -16,18 +15,15 @@ public interface InvInnerOrderPrintService { Boolean addOrderList(String orderIdFk); - Boolean addInCodeList(String orderIdFk,boolean check); + Boolean addInCodeList(String orderIdFk, boolean check); InvInnerOrderPrintEntity selectById(String id); - List filterJoinInnerPrint(FilterinnerOrderprintRequest filterinnerOrderprintRequest); + List filterJoinInnerPrint(FilterinnerOrderprintRequest filterinnerOrderprintRequest); Boolean updateOrder(InvInnerOrderPrintEntity invInnerOrderPrintEntity); PageSimpleResponse print(InnerOrderQRCodeTextPDFTemplateRequest innerOrderQRCodeTextPDFTemplateRequest); - - - } diff --git a/src/main/java/com/glxp/api/service/inv/InvRemindSetService.java b/src/main/java/com/glxp/api/service/inv/InvRemindSetService.java index 8f8507732..00bb6b1d9 100644 --- a/src/main/java/com/glxp/api/service/inv/InvRemindSetService.java +++ b/src/main/java/com/glxp/api/service/inv/InvRemindSetService.java @@ -45,4 +45,19 @@ public interface InvRemindSetService { */ BaseResponse deleteInvRemindSet(Integer id); + /** + * 根据库存ID查询生成库存预警设置的信息 + * + * @param invId + * @return + */ + BaseResponse getInfoByInvId(Integer invId); + + /** + * 批量添加库存预警设置 + * + * @param addInvRemindSetRequest + * @return + */ + BaseResponse batchAddInvRemindSet(AddInvRemindSetRequest addInvRemindSetRequest); } diff --git a/src/main/java/com/glxp/api/service/inv/JaspaperService.java b/src/main/java/com/glxp/api/service/inv/JaspaperService.java index 6d0fbaa0b..5298b22bc 100644 --- a/src/main/java/com/glxp/api/service/inv/JaspaperService.java +++ b/src/main/java/com/glxp/api/service/inv/JaspaperService.java @@ -4,7 +4,7 @@ package com.glxp.api.service.inv; import cn.hutool.core.thread.ThreadUtil; import com.glxp.api.dao.inv.InvInnerOrderPdfTempDao; import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; -import com.glxp.api.res.inv.innerOrderPrintRequest; +import com.glxp.api.res.inv.InnerOrderPrintResponse; import com.glxp.api.util.JasperUtils; import net.sf.jasperreports.engine.JRException; import org.springframework.beans.factory.annotation.Value; @@ -25,7 +25,7 @@ public class JaspaperService { private InvInnerOrderPdfTempDao innerOrderPdfTempDao; @Async - public void printPdfLocal(List> splits, List stockPrintTempEntities, String resource) { + public void printPdfLocal(List> splits, List stockPrintTempEntities, String resource) { ThreadUtil.execAsync(() -> { for (int i = 0; i < stockPrintTempEntities.size(); i++) { diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java index 9161b8ef2..3152c3cd7 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvInnerOrderPrintServiceImpl.java @@ -18,11 +18,9 @@ import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.inv.*; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; -import com.glxp.api.res.inv.InvCountOrderDetailResponse; -import com.glxp.api.res.inv.innerOrderPrintRequest; +import com.glxp.api.res.inv.InnerOrderPrintResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.UdiProductService; -import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.service.inv.InnerOrderDetailService; @@ -35,7 +33,6 @@ import com.glxp.api.util.CustomUtil; import com.glxp.api.util.FileUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -133,7 +130,7 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService } @Override - public List filterJoinInnerPrint(FilterinnerOrderprintRequest filterinnerOrderprintRequest) { + public List filterJoinInnerPrint(FilterinnerOrderprintRequest filterinnerOrderprintRequest) { if (filterinnerOrderprintRequest == null) { return Collections.emptyList(); } @@ -142,7 +139,7 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService PageHelper.offsetPage(offset, filterinnerOrderprintRequest.getLimit()); } - List data = invInnerOrderPrintDao.filterJoinInnerPrint(filterinnerOrderprintRequest); + List data = invInnerOrderPrintDao.filterJoinInnerPrint(filterinnerOrderprintRequest); return data; } @@ -161,8 +158,8 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(String.valueOf(systemPDFModuleEntity.getTemplateId())); if (systemPDFTemplateEntity == null) return null; - List printEntities = new ArrayList<>(); - List mStockPrintEntities = new ArrayList<>(); + List printEntities = new ArrayList<>(); + List mStockPrintEntities = new ArrayList<>(); FilterinnerOrderprintRequest filterStockprintRequest = new FilterinnerOrderprintRequest(); DeleteStPrintTempRequest deleteStPrintTempRequest = new DeleteStPrintTempRequest(); if (innerOrderQRCodeTextPDFTemplateRequest.getOrderId() != null) { @@ -175,27 +172,27 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService } innerOrderPdfTempService.delete(deleteStPrintTempRequest); - List stockPrintEntities = invInnerOrderPrintService.filterJoinInnerPrint(filterStockprintRequest); + List stockPrintEntities = invInnerOrderPrintService.filterJoinInnerPrint(filterStockprintRequest); if (stockPrintEntities != null && stockPrintEntities.size() > 0) { mStockPrintEntities.addAll(stockPrintEntities); } - for (innerOrderPrintRequest innerOrderPrintRequest : mStockPrintEntities) { - PdfPrintCountEntity pdfPrintCount = getCount(innerOrderQRCodeTextPDFTemplateRequest.getCountList(), innerOrderPrintRequest); + for (InnerOrderPrintResponse InnerOrderPrintResponse : mStockPrintEntities) { + PdfPrintCountEntity pdfPrintCount = getCount(innerOrderQRCodeTextPDFTemplateRequest.getCountList(), InnerOrderPrintResponse); if (pdfPrintCount != null && pdfPrintCount.getRowCount() > 0) { for (int i = 0; i < pdfPrintCount.getRowCount(); i++) { - innerOrderPrintRequest clone = new innerOrderPrintRequest(); - BeanUtils.copyProperties(innerOrderPrintRequest, clone); + InnerOrderPrintResponse clone = new InnerOrderPrintResponse(); + BeanUtils.copyProperties(InnerOrderPrintResponse, clone); printEntities.add(clone); } } else { - printEntities.add(innerOrderPrintRequest); + printEntities.add(InnerOrderPrintResponse); } } if (!FileUtils.isFileExist(dirPath + "/pdfprint")) { new File(dirPath + "/pdfprint").mkdirs(); } - List> splits = CustomUtil.splitList(printEntities, 100); + List> splits = CustomUtil.splitList(printEntities, 100); int index = 0; List stockPrintTempEntities = new ArrayList<>(); for (int i = 0; i < splits.size(); i++) { @@ -222,10 +219,10 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService innerOrderPdfTempService.insertStockPrintTempList(stockPrintTempEntities); - for (innerOrderPrintRequest innerOrderPrintRequest : mStockPrintEntities) { + for (InnerOrderPrintResponse InnerOrderPrintResponse : mStockPrintEntities) { InvInnerOrderPrintEntity innerOrderPrintEntity = new InvInnerOrderPrintEntity(); innerOrderPrintEntity.setStatus(ConstantStatus.PRINT_SUCCESS); - innerOrderPrintEntity.setId(innerOrderPrintRequest.getId()); + innerOrderPrintEntity.setId(InnerOrderPrintResponse.getId()); invInnerOrderPrintService.updateOrder(innerOrderPrintEntity); } PageInfo pageInfo; @@ -237,9 +234,9 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService return pageSimpleResponse; } - public PdfPrintCountEntity getCount(List countList, innerOrderPrintRequest innerOrderPrintRequest) { + public PdfPrintCountEntity getCount(List countList, InnerOrderPrintResponse InnerOrderPrintResponse) { for (PdfPrintCountEntity pdfPrintCount : countList) { - if (pdfPrintCount.getQueryId().equals(innerOrderPrintRequest.getId() + "")) { + if (pdfPrintCount.getQueryId().equals(InnerOrderPrintResponse.getId() + "")) { return pdfPrintCount; } } @@ -293,7 +290,7 @@ public class InvInnerOrderPrintServiceImpl implements InvInnerOrderPrintService innerOrderPrintEntity.setUdiCode(udiCode); invInnerOrderPrintDao.insert(innerOrderPrintEntity); } - orderEntity.setInCodeStatus(1);// + orderEntity.setInCodeStatus(0);// orderService.update(orderEntity); return true; } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvRemindSetServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvRemindSetServiceImpl.java index 0952aca82..d9bf72170 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvRemindSetServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvRemindSetServiceImpl.java @@ -1,12 +1,16 @@ package com.glxp.api.service.inv.impl; import cn.hutool.core.bean.BeanUtil; +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.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.dao.inv.InvRemindSetDao; +import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.inv.InvRemindSetEntity; import com.glxp.api.req.inv.AddInvRemindSetRequest; import com.glxp.api.req.inv.FilterInvRemindSetRequest; @@ -14,6 +18,10 @@ import com.glxp.api.res.inv.InvRemindSetResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.inv.InvRemindSetService; import lombok.extern.slf4j.Slf4j; +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; @@ -31,6 +39,10 @@ public class InvRemindSetServiceImpl implements InvRemindSetService { private InvRemindSetDao invRemindSetDao; @Resource private CustomerService customerService; + @Resource + private UdiRelevanceDao udiRelevanceDao; + @Resource + private SqlSessionFactory sqlSessionFactory; @Override public List filterList(FilterInvRemindSetRequest filterInvRemindSetRequest) { @@ -51,10 +63,31 @@ public class InvRemindSetServiceImpl implements InvRemindSetService { if (false == addInvRemindSetRequest.getLowStock() && false == addInvRemindSetRequest.getLackStock() && false == addInvRemindSetRequest.getOverStock() && false == addInvRemindSetRequest.getExpireDate() && false == addInvRemindSetRequest.getRecentDate()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!"); } - InvRemindSetEntity invRemindSetEntity = new InvRemindSetEntity(); - BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity); - setUpdateInfo(invRemindSetEntity); - invRemindSetDao.insert(invRemindSetEntity); + //查询此设置项是否已经存在,若已经存在,则直接覆盖,没有则新增 + InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper() + .eq("invCode", addInvRemindSetRequest.getInvCode()) + .eq(StrUtil.isNotBlank(addInvRemindSetRequest.getInvSpaceCode()), "invSpaceCode", addInvRemindSetRequest.getInvSpaceCode()) + .eq(StrUtil.isNotBlank(addInvRemindSetRequest.getRelId()), "relId", addInvRemindSetRequest.getRelId()) + ); + if (null == invRemindSetEntity) { + invRemindSetEntity = new InvRemindSetEntity(); + BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity); + verifySetParams(invRemindSetEntity); + setUpdateInfo(invRemindSetEntity); + invRemindSetDao.insert(invRemindSetEntity); + } else { + //设置预警参数设置 + invRemindSetEntity.setLackStock(addInvRemindSetRequest.getLackStock()); + invRemindSetEntity.setLowStock(addInvRemindSetRequest.getLowStock()); + invRemindSetEntity.setOverStock(addInvRemindSetRequest.getOverStock()); + invRemindSetEntity.setExpireDate(addInvRemindSetRequest.getExpireDate()); + invRemindSetEntity.setRecentDate(addInvRemindSetRequest.getRecentDate()); + + //校验预警参数是否符合开启条件 + verifySetParams(invRemindSetEntity); + setUpdateInfo(invRemindSetEntity); + invRemindSetDao.updateById(invRemindSetEntity); + } return ResultVOUtils.success("添加成功"); } @@ -63,6 +96,7 @@ public class InvRemindSetServiceImpl implements InvRemindSetService { if (false == invRemindSetEntity.getLowStock() && false == invRemindSetEntity.getLackStock() && false == invRemindSetEntity.getOverStock() && false == invRemindSetEntity.getExpireDate() && false == invRemindSetEntity.getRecentDate()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警设置至少开启一项预警!"); } + verifySetParams(invRemindSetEntity); setUpdateInfo(invRemindSetEntity); invRemindSetDao.updateById(invRemindSetEntity); return ResultVOUtils.success("更新成功"); @@ -77,6 +111,72 @@ public class InvRemindSetServiceImpl implements InvRemindSetService { return ResultVOUtils.success("删除成功"); } + @Override + public BaseResponse getInfoByInvId(Integer invId) { + InvRemindSetResponse response = invRemindSetDao.selectInfoByInvId(invId); + if (null != response) { + if (response.getIsDateBy() == 1 && null != response.getRecentDateTime()) { + //将近效期预警值由小时换算成天 + response.setRecentDateTime(response.getRecentDateTime() / 24); + } + return ResultVOUtils.success(response); + } + return ResultVOUtils.error(500, "未查询到指定的库存产品信息"); + } + + @Override + public BaseResponse batchAddInvRemindSet(AddInvRemindSetRequest addInvRemindSetRequest) { + if (CollUtil.isNotEmpty(addInvRemindSetRequest.getRelIdList())) { + //生成多条库存预警设置 + SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED); + addInvRemindSetRequest.getRelIdList().forEach(relId -> { + //查询此产品是否存在预警设置 + //查询此设置项是否已经存在,若已经存在,则直接覆盖,没有则新增 + InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper() + .eq("invCode", addInvRemindSetRequest.getInvCode()) + .eq(StrUtil.isNotBlank(addInvRemindSetRequest.getInvSpaceCode()), "invSpaceCode", addInvRemindSetRequest.getInvSpaceCode()) + .eq("relId", relId) + .eq(StrUtil.isNotBlank(addInvRemindSetRequest.getGgxh()), "ggxh", addInvRemindSetRequest.getGgxh()) + ); + if (null == invRemindSetEntity) { + invRemindSetEntity = new InvRemindSetEntity(); + BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity); + invRemindSetEntity.setRelId(relId); + verifySetParams(invRemindSetEntity); + setUpdateInfo(invRemindSetEntity); + invRemindSetDao.insert(invRemindSetEntity); + } else { + //校验预警参数是否符合开启条件 + verifySetParams(invRemindSetEntity); + setUpdateInfo(invRemindSetEntity); + invRemindSetDao.updateById(invRemindSetEntity); + } + }); + sqlSession.commit(); + sqlSession.close(); + } else { + //只选择了仓库货位信息,未选择产品列表,直接添加单条预警设置 + //查询有无相同设置,有则更新时间 + InvRemindSetEntity invRemindSetEntity = invRemindSetDao.selectOne(new QueryWrapper() + .eq("invCode", addInvRemindSetRequest.getInvCode()) + .eq(StrUtil.isNotBlank(addInvRemindSetRequest.getInvSpaceCode()), "invSpaceCode", addInvRemindSetRequest.getInvSpaceCode()) + .isNull("relId") + ); + if (null == invRemindSetEntity) { + invRemindSetEntity = new InvRemindSetEntity(); + BeanUtil.copyProperties(addInvRemindSetRequest, invRemindSetEntity); + invRemindSetEntity.setStatus(1); + setUpdateInfo(invRemindSetEntity); + invRemindSetDao.insert(invRemindSetEntity); + } else { + verifySetParams(invRemindSetEntity); + setUpdateInfo(invRemindSetEntity); + invRemindSetDao.updateById(invRemindSetEntity); + } + } + return ResultVOUtils.success("添加成功"); + } + /** * 设置创建更新信息 * @@ -93,4 +193,29 @@ public class InvRemindSetServiceImpl implements InvRemindSetService { invRemindSetEntity.setUpdateTime(date); } + /** + * 校验 + * + * @param invRemindSetEntity + */ + private void verifySetParams(InvRemindSetEntity invRemindSetEntity) { + //判断开启的预警设置,是否有设置对应的参数,若未设置,则修改状态为不启用 + if (null != invRemindSetEntity.getRelId()) { + UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectRemindParams(Long.valueOf(invRemindSetEntity.getRelId())); + if (null == udiRelevanceEntity) { + invRemindSetEntity.setStatus(0); + } else { + if (invRemindSetEntity.getLowStock() && null == udiRelevanceEntity.getLowStockNum()) { + invRemindSetEntity.setStatus(0); + } else if (invRemindSetEntity.getOverStock() && null == udiRelevanceEntity.getOverStockNum()) { + invRemindSetEntity.setStatus(0); + } else if (invRemindSetEntity.getRecentDate() && null == udiRelevanceEntity.getRecentDateTime()) { + invRemindSetEntity.setStatus(0); + } else { + invRemindSetEntity.setStatus(1); + } + } + } + } + } diff --git a/src/main/java/com/glxp/api/service/purchase/PurOrderService.java b/src/main/java/com/glxp/api/service/purchase/PurOrderService.java index 61d1b9b66..d30cbb2c3 100644 --- a/src/main/java/com/glxp/api/service/purchase/PurOrderService.java +++ b/src/main/java/com/glxp/api/service/purchase/PurOrderService.java @@ -1,8 +1,7 @@ package com.glxp.api.service.purchase; - -import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.entity.purchase.PurOrderEntity; import com.glxp.api.entity.purchase.PurPlanEntity; import com.glxp.api.req.purchase.PurOrderRequest; @@ -10,13 +9,19 @@ import com.glxp.api.req.purchase.PurPlanRequest; import com.glxp.api.res.purchase.PurOrderResponse; import com.glxp.api.res.purchase.PurPlanResponse; +import java.util.Date; import java.util.List; public interface PurOrderService { + + PurOrderEntity selectByBillNo(String billNo); + + PurOrderEntity selectById(Long id); + List queryPageList(PurOrderRequest purOrderRequest); - List findByStatus(String billType, Integer status); + List findByStatus(String billType, Integer status, Date lastUpdateTime); Boolean insert(PurOrderEntity purOrderEntity); diff --git a/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java index 3555e8d24..9030aadc1 100644 --- a/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/purchase/impl/PurOrderServiceImpl.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.purchase.PurOrderDao; import com.glxp.api.dao.purchase.PurPlanDao; -import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.inout.PurReceiveEntity; import com.glxp.api.entity.purchase.PurOrderEntity; import com.glxp.api.entity.purchase.PurPlanEntity; import com.glxp.api.req.purchase.PurOrderRequest; @@ -18,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Collections; +import java.util.Date; import java.util.List; @Service @@ -30,6 +31,16 @@ public class PurOrderServiceImpl implements PurOrderService { @Resource PurOrderDao purOrderDao; + @Override + public PurOrderEntity selectByBillNo(String billNo) { + return purOrderDao.selectOne(new QueryWrapper().eq("billNo", billNo)); + } + + @Override + public PurOrderEntity selectById(Long id) { + return purOrderDao.selectById(id); + } + @Override public List queryPageList(PurOrderRequest purOrderRequest) { if (purOrderRequest == null) { @@ -44,8 +55,8 @@ public class PurOrderServiceImpl implements PurOrderService { } @Override - public List findByStatus(String billType, Integer status) { - return purOrderDao.selectList(new QueryWrapper().eq("billType", billType).eq("status", status)); + public List findByStatus(String billType, Integer status, Date lastUpdateTime) { + return purOrderDao.selectList(new QueryWrapper().eq("billType", billType).eq("status", status).gt("updateTime", lastUpdateTime)); } @Override 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 8d65214e9..75cbb5c05 100644 --- a/src/main/java/com/glxp/api/service/sync/HeartService.java +++ b/src/main/java/com/glxp/api/service/sync/HeartService.java @@ -6,6 +6,11 @@ import java.util.List; import javax.annotation.Resource; +import com.glxp.api.dao.inout.*; +import com.glxp.api.entity.inout.*; +import com.glxp.api.res.sync.SpsSyncBusResponse; +import com.glxp.api.res.sync.SpsSyncDataResponse; +import com.glxp.api.service.inout.*; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; @@ -19,15 +24,6 @@ import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.BasicProcessStatus; import com.glxp.api.constant.ConstantStatus; -import com.glxp.api.dao.inout.IoCodeTempDao; -import com.glxp.api.dao.inout.IoOrderDao; -import com.glxp.api.dao.inout.IoOrderDetailBizDao; -import com.glxp.api.dao.inout.IoOrderDetailCodeDao; -import com.glxp.api.entity.inout.IoCodeEntity; -import com.glxp.api.entity.inout.IoCodeTempEntity; -import com.glxp.api.entity.inout.IoOrderDetailBizEntity; -import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; -import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.sync.BasicDownloadStatusEntity; import com.glxp.api.entity.sync.BasicExportStatusEntity; import com.glxp.api.entity.sync.BasicExportStatusTimeEntity; @@ -35,7 +31,6 @@ import com.glxp.api.http.sync.SpGetHttpClient; import com.glxp.api.req.sync.SpsSyncDataRequest; import com.glxp.api.res.sync.SpsSyncBusOrderResponse; import com.glxp.api.res.sync.SpsSyncOrderResponse; -import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; @@ -57,7 +52,12 @@ public class HeartService { SqlSessionFactory sqlSessionFactory; @Resource IoOrderService orderService; + @Resource + IoAddInoutService addInoutService; + @Resource + IoCheckInoutService ioCheckInoutService; + //上传最近更新扫码单据 public BaseResponse uploadAllOrder(String syncTime) { SpsSyncDataRequest spsSyncDataRequest = new SpsSyncDataRequest(); if (syncTime == null) { @@ -117,11 +117,11 @@ public class HeartService { return ResultVOUtils.success(); } - + //上传最近更新业务单据 public BaseResponse uploadAllBusOrder(String syncTime) { SpsSyncDataRequest spsSyncDataRequest = new SpsSyncDataRequest(); if (syncTime == null) { - BasicExportStatusTimeEntity basicExportStatusTimeEntity = basicExportTimeService.findByKey(ConstantStatus.SYNC_SCAN_ORDER); + BasicExportStatusTimeEntity basicExportStatusTimeEntity = basicExportTimeService.findByKey(ConstantStatus.SYNC_BUS_ORDER); if (basicExportStatusTimeEntity == null) { basicExportStatusTimeEntity = new BasicExportStatusTimeEntity(); basicExportStatusTimeEntity.setLastUpdateTime("1949-10-01 09:00:00"); @@ -137,12 +137,12 @@ public class HeartService { return ResultVOUtils.success("无数据"); } - BasicExportStatusEntity basicExportStatusEntity1 = basicExportService.findByData(ConstantStatus.SYNC_SCAN_ORDER, 0); + BasicExportStatusEntity basicExportStatusEntity1 = basicExportService.findByData(ConstantStatus.SYNC_BUS_ORDER, 0); if (basicExportStatusEntity1 == null) { BasicExportStatusEntity orderStatusEntity = new BasicExportStatusEntity(); orderStatusEntity.setId(CustomUtil.getId()); - orderStatusEntity.setIdDatas(ConstantStatus.SYNC_SCAN_ORDER); - orderStatusEntity.setType(BasicProcessStatus.NEW_ALL_ORDER); + orderStatusEntity.setIdDatas(ConstantStatus.SYNC_BUS_ORDER); + orderStatusEntity.setType(BasicProcessStatus.ALL_BUS_ORDER); orderStatusEntity.setUpdateTime(new Date()); orderStatusEntity.setStartTime(new Date()); orderStatusEntity.setStatus(ConstantStatus.SYNC_STATUS_WAIT); @@ -175,18 +175,188 @@ public class HeartService { return ResultVOUtils.success(); } + //上传最近更新单据类型 + public BaseResponse uploadAllBus(String syncTime) { + SpsSyncDataRequest spsSyncDataRequest = new SpsSyncDataRequest(); + if (syncTime == null) { + BasicExportStatusTimeEntity basicExportStatusTimeEntity = basicExportTimeService.findByKey(ConstantStatus.SYNC_BUS_TYPE); + if (basicExportStatusTimeEntity == null) { + basicExportStatusTimeEntity = new BasicExportStatusTimeEntity(); + basicExportStatusTimeEntity.setLastUpdateTime("1949-10-01 09:00:00"); + } + spsSyncDataRequest.setLastUpdateTime(basicExportStatusTimeEntity.getLastUpdateTime()); + } else { + spsSyncDataRequest.setLastUpdateTime(syncTime); + } + SpsSyncBusResponse spsSyncBusResponse = upBasicService.upAllBus(spsSyncDataRequest); + if (CollUtil.isEmpty(spsSyncBusResponse.getBussinessTypeEntities()) + && CollUtil.isEmpty(spsSyncBusResponse.getBusTypeChangeEntities()) + && CollUtil.isEmpty(spsSyncBusResponse.getThrBusTypeOriginEntities()) + ) { + return ResultVOUtils.success("无数据"); + } + BasicExportStatusEntity basicExportStatusEntity2 = basicExportService.findByData(ConstantStatus.SYNC_BUS_TYPE, 0); + if (basicExportStatusEntity2 == null) { + BasicExportStatusEntity busTypetatusEntity = new BasicExportStatusEntity(); + busTypetatusEntity.setId(CustomUtil.getId()); + busTypetatusEntity.setIdDatas(ConstantStatus.SYNC_BUS_TYPE); + busTypetatusEntity.setType(BasicProcessStatus.NEW_ALL_BUS); + busTypetatusEntity.setUpdateTime(new Date()); + busTypetatusEntity.setStartTime(new Date()); + busTypetatusEntity.setStatus(0); + busTypetatusEntity.setScheduleType(BasicProcessStatus.SCHEDULE_NORMAL); + basicExportService.insertExportStatus(busTypetatusEntity); + basicExportStatusEntity2 = busTypetatusEntity; + } + BasicExportStatusTimeEntity basicExportStatusTimeEntity = new BasicExportStatusTimeEntity(); + basicExportStatusTimeEntity.setLastUpdateTime(DateUtil.formatDate(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); + basicExportStatusTimeEntity.setKey(ConstantStatus.SYNC_BUS_TYPE); + spsSyncBusResponse.setTaskId(basicExportStatusEntity2.getId()); + BaseResponse baseResponse2 = spGetHttp.postAllBusType(spsSyncBusResponse); + if (baseResponse2.getCode() == 20000) { + basicExportStatusEntity2.setStatus(1); + } else { + basicExportStatusEntity2.setStatus(ConstantStatus.SYNC_STATUS_FAIL); + } + basicExportStatusEntity2.setEndTime(new Date()); + basicExportTimeService.insertExportStatus(basicExportStatusTimeEntity); + //拼接日志 + String logs = ""; + if (CollUtil.isNotEmpty(spsSyncBusResponse.getBussinessTypeEntities())) + logs = logs + "扫码单据类型:" + spsSyncBusResponse.getBussinessTypeEntities().size() + "条\n"; + if (CollUtil.isNotEmpty(spsSyncBusResponse.getBusTypeChangeEntities())) + logs = logs + "业务单据类型:" + spsSyncBusResponse.getBusTypeChangeEntities().size() + "条\n"; + if (CollUtil.isNotEmpty(spsSyncBusResponse.getThrBusTypeOriginEntities())) + logs = logs + "第三方单据类型:" + spsSyncBusResponse.getThrBusTypeOriginEntities().size() + "条\n"; + basicExportStatusEntity2.setRemark(logs); + basicExportStatusEntity2.setUpdateTime(new Date()); + basicExportService.updateExportStatus(basicExportStatusEntity2); + return ResultVOUtils.success(); + } + + //上传用户信息 + public BaseResponse uploadAllUserData(String syncTime) { + SpsSyncDataRequest spsSyncDataRequest = new SpsSyncDataRequest(); + if (syncTime == null) { + BasicExportStatusTimeEntity basicExportStatusTimeEntity = basicExportTimeService.findByKey(ConstantStatus.SYNC_BASIC_DATA); + if (basicExportStatusTimeEntity == null) { + basicExportStatusTimeEntity = new BasicExportStatusTimeEntity(); + basicExportStatusTimeEntity.setLastUpdateTime("1949-10-01 09:00:00"); + } + spsSyncDataRequest.setLastUpdateTime(basicExportStatusTimeEntity.getLastUpdateTime()); + + } else { + spsSyncDataRequest.setLastUpdateTime(syncTime); + } + + SpsSyncDataResponse syncDataResponse = upBasicService.uploadAllUserData(spsSyncDataRequest); + if (CollUtil.isEmpty(syncDataResponse.getInvWarehouseEntities()) + && CollUtil.isEmpty(syncDataResponse.getAuthAdminList()) + && CollUtil.isEmpty(syncDataResponse.getDeptEntityList()) + && CollUtil.isEmpty(syncDataResponse.getWarehouseBussinessTypeEntities()) + && CollUtil.isEmpty(syncDataResponse.getWarehouseUserEntities()) + ) { + //数据不记录日志 + return ResultVOUtils.success("无数据"); + } + + BasicExportStatusEntity basicExportStatusEntity3 = basicExportService.findByData(ConstantStatus.SYNC_BASIC_DATA, 0); + if (basicExportStatusEntity3 == null) { + BasicExportStatusEntity basicExportStatusEntity = new BasicExportStatusEntity(); + basicExportStatusEntity.setId(CustomUtil.getId()); + basicExportStatusEntity.setIdDatas(ConstantStatus.SYNC_BASIC_DATA); + basicExportStatusEntity.setType(BasicProcessStatus.NEW_ALL_DATA); + basicExportStatusEntity.setUpdateTime(new Date()); + basicExportStatusEntity.setStartTime(new Date()); + basicExportStatusEntity.setStatus(0); + basicExportStatusEntity.setScheduleType(BasicProcessStatus.SCHEDULE_NORMAL); + basicExportService.insertExportStatus(basicExportStatusEntity); + basicExportStatusEntity3 = basicExportStatusEntity; + } + + BasicExportStatusTimeEntity basicExportStatusTimeEntity = new BasicExportStatusTimeEntity(); + basicExportStatusTimeEntity.setLastUpdateTime(DateUtil.formatDate(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); + basicExportStatusTimeEntity.setKey(ConstantStatus.SYNC_BASIC_DATA); + syncDataResponse.setTaskId(basicExportStatusEntity3.getId()); + BaseResponse baseResponse = spGetHttp.postAllUser(syncDataResponse); + if (baseResponse.getCode() == 20000) { + basicExportStatusEntity3.setStatus(1); + } else { + basicExportStatusEntity3.setStatus(ConstantStatus.SYNC_STATUS_FAIL); + } + basicExportStatusEntity3.setEndTime(new Date()); + basicExportTimeService.insertExportStatus(basicExportStatusTimeEntity); + String logs = ""; + + if (CollUtil.isNotEmpty(syncDataResponse.getInvWarehouseEntities())) + logs = logs + "仓库字典:" + syncDataResponse.getInvWarehouseEntities().size() + "条\n"; + + if (CollUtil.isNotEmpty(syncDataResponse.getWarehouseUserEntities())) { + logs = logs + "仓库用户信息:" + syncDataResponse.getWarehouseUserEntities().size() + "条\n"; + } + if (CollUtil.isNotEmpty(syncDataResponse.getWarehouseBussinessTypeEntities())) { + logs = logs + "仓库单据类型:" + syncDataResponse.getWarehouseBussinessTypeEntities().size() + "条\n"; + } + + if (CollUtil.isNotEmpty(syncDataResponse.getAuthAdminList())) + logs = logs + "系统用户信息:" + syncDataResponse.getAuthAdminList().size() + "条\n"; + if (CollUtil.isNotEmpty(syncDataResponse.getInvBusUserEntities())) + logs = logs + "用户关联单据类型信息:" + syncDataResponse.getInvBusUserEntities().size() + "条\n"; + + + if (CollUtil.isNotEmpty(syncDataResponse.getDeptEntityList())) + logs = logs + "部门信息:" + syncDataResponse.getDeptEntityList().size() + "条\n"; + if (CollUtil.isNotEmpty(syncDataResponse.getDeptUserEntities())) + logs = logs + "部门用户信息:" + syncDataResponse.getDeptUserEntities().size() + "条\n"; + + + if (CollUtil.isNotEmpty(syncDataResponse.getInvSpaces())) + logs = logs + "货位信息:" + syncDataResponse.getInvSpaces().size() + "条\n"; + + basicExportStatusEntity3.setRemark(logs); + basicExportStatusEntity3.setUpdateTime(new Date()); + basicExportService.updateExportStatus(basicExportStatusEntity3); + return ResultVOUtils.success(); + } + + // 上传系统参数设置 + public BaseResponse uploadAllConfig(String syncTime) { + return null; + } + +// +// //上传最近更新第三方基础数据 +// public BaseResponse uploadThirdData(String syncTime) { +// +// } + + + @Resource + IoCodeTempService codeTempService; + @Resource + IoOrderDetailBizService orderDetailBizService; + @Resource + IoOrderDetailCodeService orderDetailCodeService; + @Resource + IoOrderDetailResultService orderDetailResultService; + @Resource + IoOrderInvoiceService orderInvoiceService; + + //下载最近更新扫码单据 public void dlAllOrder() { BaseResponse> baseResponse = spGetHttp.getBasicStatus(BasicProcessStatus.NEW_ALL_ORDER + ""); - List pageSimpleResponse = baseResponse !=null ? baseResponse.getData() : new ArrayList<>(); + List pageSimpleResponse = baseResponse != null ? baseResponse.getData() : new ArrayList<>(); if (pageSimpleResponse != null) { List basicExportStatusEntities = pageSimpleResponse; if (basicExportStatusEntities != null && basicExportStatusEntities.size() > 0) { for (BasicExportStatusEntity basicExportStatusEntity : basicExportStatusEntities) { String datas = spGetHttp.getBasicData(basicExportStatusEntity.getId(), BasicProcessStatus.NEW_ALL_ORDER); - BaseResponse response = JSONObject.parseObject(datas, new TypeReference>() { + BaseResponse response = JSONObject.parseObject(datas, new TypeReference>() { }); if (response.getCode() == 20000 && response.getData() != null) { - SpsSyncOrderResponse syncDataResponse = response.getData(); + + SpsSyncOrderResponse syncDataResponse = JSONObject.parseObject(response.getData(), new TypeReference() { + }); BasicDownloadStatusEntity basicDownloadStatusEntity = new BasicDownloadStatusEntity(); basicDownloadStatusEntity.setId(CustomUtil.getId()); basicDownloadStatusEntity.setTaskId(syncDataResponse.getTaskId()); @@ -198,71 +368,45 @@ public class HeartService { basicDownloadService.insertDownloadStatus(basicDownloadStatusEntity); StringBuffer remark = new StringBuffer(); - SqlSession batchSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED); if (CollUtil.isNotEmpty(syncDataResponse.getOrderEntities())) { try { List orderEntities = syncDataResponse.getOrderEntities(); - IoOrderDao mapper = batchSession.getMapper(IoOrderDao.class); for (IoOrderEntity orderEntity : orderEntities) { orderEntity.setUpdateTime(null); orderEntity.setFromType(ConstantStatus.FROM_UDISP); orderEntity.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); - IoOrderEntity temp = orderService.findById(orderEntity.getBillNo()); + IoOrderEntity temp = orderService.findByBillNo(orderEntity.getBillNo()); if (temp == null) { orderEntity.setId(null); - mapper.insert(orderEntity); - if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailCodeEntities())) { - IoCodeTempDao codeMappert = batchSession.getMapper(IoCodeTempDao.class); - List warehouseEntityList = syncDataResponse.getCodeEntities(); - for (IoCodeEntity warehouseEntity : warehouseEntityList) { - if (warehouseEntity.getOrderId().equals(orderEntity.getBillNo())) { - IoCodeTempEntity codeTempEntity = new IoCodeTempEntity(); - BeanUtils.copyProperties(warehouseEntity, codeTempEntity); - codeTempEntity.setId(null); - codeMappert.insert(codeTempEntity); - } - - } - } - - if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailBizEntities())) { - IoOrderDetailBizDao orderDetailBizDao = batchSession.getMapper(IoOrderDetailBizDao.class); - List orderDetailBizEntities = syncDataResponse.getOrderDetailBizEntities(); - for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { - if (bizEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { - orderDetailBizDao.insert(bizEntity); - } - } + orderService.insertOrder(orderEntity); + insetOrderDb(syncDataResponse, orderEntity); + orderEntity = orderService.findByBillNo(orderEntity.getBillNo()); + addInoutService.dealProcess(orderEntity); + orderEntity = orderService.findByBillNo(orderEntity.getBillNo()); + if (orderEntity.getStatus() != ConstantStatus.ORDER_STATS_ERROR && !ioCheckInoutService.checkManual(orderEntity.getBillNo())) { + ioCheckInoutService.check(orderEntity.getBillNo()); } - - if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailCodeEntities())) { - IoOrderDetailCodeDao orderDetailCodeDao = batchSession.getMapper(IoOrderDetailCodeDao.class); - List orderDetailCodeEntities = syncDataResponse.getOrderDetailCodeEntities(); - for (IoOrderDetailCodeEntity detailCodeEntity : orderDetailCodeEntities) { - if (detailCodeEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { - orderDetailCodeDao.insert(detailCodeEntity); - } - } - } - - batchSession.commit(); } } - batchSession.commit(); String logs = ""; if (CollUtil.isNotEmpty(syncDataResponse.getOrderEntities())) logs = logs + "单据:" + syncDataResponse.getOrderEntities().size() + "条\n"; - if (CollUtil.isNotEmpty(syncDataResponse.getOrderEntities())) - logs = logs + "单据详情:" + syncDataResponse.getOrderDetailBizEntities().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(); } + + } - batchSession.close(); spGetHttp.postBasicStatus(basicExportStatusEntity.getId()); basicDownloadStatusEntity.setUpdateTime(new Date()); @@ -270,10 +414,72 @@ public class HeartService { basicDownloadStatusEntity.setRemark(remark.toString()); basicDownloadStatusEntity.setStatus(ConstantStatus.SYNC_STATUS_SUCCESS); basicDownloadService.updateDownloadStatus(basicDownloadStatusEntity); + + } } } } } + public void insetOrderDb(SpsSyncOrderResponse syncDataResponse, IoOrderEntity orderEntity) { + //更新码详情 + if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailCodeEntities())) { + List warehouseEntityList = syncDataResponse.getCodeEntities(); + for (IoCodeEntity warehouseEntity : warehouseEntityList) { + if (warehouseEntity.getOrderId().equals(orderEntity.getBillNo())) { + IoCodeTempEntity codeTempEntity = new IoCodeTempEntity(); + BeanUtils.copyProperties(warehouseEntity, codeTempEntity); + codeTempEntity.setId(null); + codeTempService.insert(codeTempEntity); + } + } + } + + //更新业务详情 + if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailBizEntities())) { + List orderDetailBizEntities = syncDataResponse.getOrderDetailBizEntities(); + for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { + if (bizEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { + bizEntity.setId(null); + orderDetailBizService.insert(bizEntity); + } + } + } + + //更新码详情 + if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailCodeEntities())) { + List orderDetailCodeEntities = syncDataResponse.getOrderDetailCodeEntities(); + for (IoOrderDetailCodeEntity codeEntity : orderDetailCodeEntities) { + if (codeEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { + codeEntity.setId(null); + orderDetailCodeService.insert(codeEntity); + } + } + } + + + //更新结果详情 + if (CollUtil.isNotEmpty(syncDataResponse.getOrderDetailResultEntities())) { + List orderDetailResultEntities = syncDataResponse.getOrderDetailResultEntities(); + for (IoOrderDetailResultEntity detailResultEntity : orderDetailResultEntities) { + if (detailResultEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { + detailResultEntity.setId(null); + orderDetailResultService.insert(detailResultEntity); + } + } + } + + //更新发票信息 + if (CollUtil.isNotEmpty(syncDataResponse.getOrderInvoiceEntities())) { + List orderInvoiceEntities = syncDataResponse.getOrderInvoiceEntities(); + for (IoOrderInvoiceEntity orderInvoiceEntity : orderInvoiceEntities) { + if (orderInvoiceEntity.getOrderIdFk().equals(orderEntity.getBillNo())) { + orderInvoiceService.insertInvoice(orderInvoiceEntity); + } + } + } + } + + } diff --git a/src/main/java/com/glxp/api/service/sync/SyncDataBustypeService.java b/src/main/java/com/glxp/api/service/sync/SyncDataBustypeService.java index e2f078727..fd3e15c2a 100644 --- a/src/main/java/com/glxp/api/service/sync/SyncDataBustypeService.java +++ b/src/main/java/com/glxp/api/service/sync/SyncDataBustypeService.java @@ -7,9 +7,9 @@ import java.util.List; public interface SyncDataBustypeService { - List findAll(); + List findAll(Integer direct); - boolean deleteAll(); + boolean deleteAll(Integer direct); void inserts(List syncDataBustypeEntities); diff --git a/src/main/java/com/glxp/api/service/sync/UpBasicService.java b/src/main/java/com/glxp/api/service/sync/UpBasicService.java index 06b703f65..2dca7ef66 100644 --- a/src/main/java/com/glxp/api/service/sync/UpBasicService.java +++ b/src/main/java/com/glxp/api/service/sync/UpBasicService.java @@ -2,20 +2,41 @@ package com.glxp.api.service.sync; import cn.hutool.core.collection.CollUtil; import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.entity.auth.*; +import com.glxp.api.entity.basic.*; import com.glxp.api.entity.inout.*; -import com.glxp.api.entity.purchase.PurOrderDetailEntity; -import com.glxp.api.entity.purchase.PurOrderEntity; +import com.glxp.api.entity.purchase.*; import com.glxp.api.entity.system.SyncDataBustypeEntity; +import com.glxp.api.entity.system.SyncDataChangeBustypesEntity; import com.glxp.api.entity.system.SyncDataPurTypeEntity; +import com.glxp.api.entity.thrsys.*; +import com.glxp.api.req.auth.*; +import com.glxp.api.req.basic.BasicEntrustRecRequest; +import com.glxp.api.req.basic.BasicUnitMaintainFilterRequest; +import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest; +import com.glxp.api.req.basic.FilterUdiInfoRequest; import com.glxp.api.req.inout.FilterOrderRequest; +import com.glxp.api.req.purchase.FilterPoductRequest; +import com.glxp.api.req.purchase.FilterSupCompanyRequest; +import com.glxp.api.req.purchase.FilterSupManufacturerRequest; import com.glxp.api.req.sync.SpsSyncDataRequest; +import com.glxp.api.req.thrsys.*; import com.glxp.api.res.sync.SpsSyncBusOrderResponse; +import com.glxp.api.res.sync.SpsSyncBusResponse; +import com.glxp.api.res.sync.SpsSyncDataResponse; import com.glxp.api.res.sync.SpsSyncOrderResponse; import com.glxp.api.res.system.SyncDataSetResponse; +import com.glxp.api.service.auth.*; +import com.glxp.api.service.basic.IBasicBusTypeChangeService; +import com.glxp.api.service.basic.IBasicBussinessTypeService; +import com.glxp.api.service.basic.impl.BasicBussinessTypeServiceImpl; import com.glxp.api.service.inout.*; import com.glxp.api.service.purchase.PurOrderDetailService; import com.glxp.api.service.purchase.PurOrderService; +import com.glxp.api.service.thrsys.IThrBusTypeOriginService; +import com.glxp.api.util.DateUtil; import org.springframework.beans.BeanUtils; +import org.springframework.data.annotation.Reference; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -45,7 +66,10 @@ public class UpBasicService { PurOrderService purOrderService; @Resource PurOrderDetailService purOrderDetailService; + @Resource + IoOrderInvoiceService orderInvoiceService; + //上传最近更新扫码单据 public SpsSyncOrderResponse upAllOrder(SpsSyncDataRequest spsSyncDataRequest) { SpsSyncOrderResponse syncOrderResponse = new SpsSyncOrderResponse(); //查询数据同步设置 @@ -55,7 +79,7 @@ public class UpBasicService { BeanUtils.copyProperties(spsSyncDataRequest, orderFilterRequest); if (CollUtil.isNotEmpty(syncDataSetEntity.getBusTypes())) { for (SyncDataBustypeEntity syncDataBustypeEntity : syncDataSetEntity.getBusTypes()) { - List temps = orderService.findByStatus(syncDataBustypeEntity.getAction(), syncDataBustypeEntity.getOrderStatus()); + List temps = orderService.findByStatus(syncDataBustypeEntity.getAction(), syncDataBustypeEntity.getOrderStatus(), DateUtil.parseDate(spsSyncDataRequest.getLastUpdateTime())); if (CollUtil.isNotEmpty(temps)) { orderEntities.addAll(temps); } @@ -66,6 +90,7 @@ public class UpBasicService { List orderDetailBizEntities = new ArrayList<>(); List orderDetailCodeEntities = new ArrayList<>(); List orderDetailResultEntities = new ArrayList<>(); + List orderInvoiceEntities = new ArrayList<>(); if (CollUtil.isNotEmpty(orderEntities)) { for (IoOrderEntity orderEntity : orderEntities) { @@ -90,15 +115,23 @@ public class UpBasicService { if (CollUtil.isNotEmpty(detailResultEntities)) { orderDetailResultEntities.addAll(detailResultEntities); } + + List invoiceEntities = orderInvoiceService.findByBillNo(orderEntity.getBillNo()); + if (CollUtil.isNotEmpty(invoiceEntities)) { + orderInvoiceEntities.addAll(invoiceEntities); + } } } + syncOrderResponse.setCodeEntities(codeEntities); syncOrderResponse.setOrderDetailBizEntities(orderDetailBizEntities); syncOrderResponse.setOrderDetailCodeEntities(orderDetailCodeEntities); syncOrderResponse.setOrderDetailResultEntities(orderDetailResultEntities); + syncOrderResponse.setOrderInvoiceEntities(orderInvoiceEntities); return syncOrderResponse; } + //上传最近更新业务单据 public SpsSyncBusOrderResponse upAllBusOrder(SpsSyncDataRequest spsSyncDataRequest) { SpsSyncBusOrderResponse syncOrderResponse = new SpsSyncBusOrderResponse(); //查询数据同步设置 @@ -106,10 +139,10 @@ public class UpBasicService { List purOrderEntities = new ArrayList<>(); FilterOrderRequest orderFilterRequest = new FilterOrderRequest(); BeanUtils.copyProperties(spsSyncDataRequest, orderFilterRequest); - if (CollUtil.isNotEmpty(syncDataSetEntity.getPurTypeEntities())) { - for (SyncDataPurTypeEntity syncDataBustypeEntity : syncDataSetEntity.getPurTypeEntities()) { - if (syncDataBustypeEntity.getType() == ConstantStatus.BUS_TYPE_DD) { - List temps = purOrderService.findByStatus(syncDataBustypeEntity.getAction(), syncDataBustypeEntity.getOrderStatus()); + if (CollUtil.isNotEmpty(syncDataSetEntity.getChangeBusTypes())) { + for (SyncDataChangeBustypesEntity syncDataChangeBustypesEntity : syncDataSetEntity.getChangeBusTypes()) { + if (syncDataChangeBustypesEntity.getAction().equals(ConstantStatus.BUS_ORDER_CGDD)) { + List temps = purOrderService.findByStatus(syncDataChangeBustypesEntity.getAction(), syncDataChangeBustypesEntity.getOrderStatus(), DateUtil.parseDate(spsSyncDataRequest.getLastUpdateTime())); if (CollUtil.isNotEmpty(temps)) { purOrderEntities.addAll(temps); } @@ -120,7 +153,7 @@ public class UpBasicService { List purOrderDetailEntities = new ArrayList<>(); if (CollUtil.isNotEmpty(purOrderEntities)) { for (PurOrderEntity orderEntity : purOrderEntities) { - List detailResultEntities = purOrderDetailService.findByOrderId(orderEntity.getBillNo()); + List detailResultEntities = purOrderDetailService.findByOrderId(orderEntity.getId() + ""); if (CollUtil.isNotEmpty(detailResultEntities)) { purOrderDetailEntities.addAll(detailResultEntities); } @@ -130,4 +163,126 @@ public class UpBasicService { return syncOrderResponse; } + + @Resource + IBasicBussinessTypeService basicBussinessTypeService; + @Resource + IBasicBusTypeChangeService basicBusTypeChangeService; + @Resource + IThrBusTypeOriginService thrBusTypeOriginService; + + //上传最近更新单据类型 + public SpsSyncBusResponse upAllBus(SpsSyncDataRequest spsSyncDataRequest) { + SpsSyncBusResponse spsSyncBusResponse = new SpsSyncBusResponse(); + SyncDataSetResponse syncDataSetEntity = syncDataSetService.selectSet(); + + //扫码单据类型 + if (syncDataSetEntity.getTypeScan() == 1) { + List bussinessTypeEntities = basicBussinessTypeService.findByLastTime(DateUtil.parseDate(spsSyncDataRequest.getLastUpdateTime())); + spsSyncBusResponse.setBussinessTypeEntities(bussinessTypeEntities); + } + + // 业务单据类型 + if (syncDataSetEntity.getTypeBus() == 1) { + List basicBusTypeChangeEntities = basicBusTypeChangeService.findByLastTime(DateUtil.parseDate(spsSyncDataRequest.getLastUpdateTime())); + spsSyncBusResponse.setBusTypeChangeEntities(basicBusTypeChangeEntities); + } + + //第三方单据类型 + if (syncDataSetEntity.getTypeThird() == 1) { + List thrBusTypeOriginEntities = thrBusTypeOriginService.findByLastTime(DateUtil.parseDate(spsSyncDataRequest.getLastUpdateTime())); + spsSyncBusResponse.setThrBusTypeOriginEntities(thrBusTypeOriginEntities); + } + + + return spsSyncBusResponse; + } + + @Resource + InvWarehouseService invWarehouseService; + @Resource + WarehouseBussinessTypeService warehouseBussinessTypeService; + @Resource + WarehouseUserService warehouseUserService; + @Resource + InvBusUserService invBusUserService; + @Resource + AuthAdminService authAdminService; + @Resource + DeptService deptService; + @Resource + DeptUserService deptUserService; + + public SpsSyncDataResponse uploadAllUserData(SpsSyncDataRequest spsSyncDataRequest) { + SpsSyncDataResponse syncDataResponse = new SpsSyncDataResponse(); + SyncDataSetResponse syncDataSetEntity = syncDataSetService.selectSet(); + if (syncDataSetEntity.getBasicDept() == 1) { + //获取部门信息 + FilterInvWarehouseRequest filterDeptRequest = new FilterInvWarehouseRequest(); + BeanUtils.copyProperties(spsSyncDataRequest, filterDeptRequest); + List deptEntityList = deptService.filterGroupInvWarehouse(filterDeptRequest); + syncDataResponse.setDeptEntityList(deptEntityList); + + List allDeptUserEntities = new ArrayList<>(); + if (CollUtil.isNotEmpty(deptEntityList)) { + for (DeptEntity deptEntity : deptEntityList) { + FilterDeptUserReqeust filterDeptUserReqeust = new FilterDeptUserReqeust(); + filterDeptUserReqeust.setDeptId(deptEntity.getId().longValue()); + List deptUserEntities = deptUserService.selectDeptUser(filterDeptUserReqeust); + allDeptUserEntities.addAll(deptUserEntities); + } + syncDataResponse.setDeptUserEntities(allDeptUserEntities); + } + } + + + //仓库字典 + if (syncDataSetEntity.getBasicInv() == 1) { + + //仓库字典 + List invWarehouseEntities = invWarehouseService.findByLastTime(DateUtil.parseDate(spsSyncDataRequest.getLastUpdateTime())); + syncDataResponse.setInvWarehouseEntities(invWarehouseEntities); + if (CollUtil.isNotEmpty(invWarehouseEntities)) { + + List mWarehouseBussinessTypeEntities = new ArrayList<>(); + List mWarehouseUserEntities = new ArrayList<>(); + List mInvBusUserEntities = new ArrayList<>(); + for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) { + //获取仓库关联单据类型 + FilterInvBusTypeRequest filterInvBusTypeRequest = new FilterInvBusTypeRequest(); + filterInvBusTypeRequest.setCode(invWarehouseEntity.getCode()); + List warehouseBussinessTypeEntities = warehouseBussinessTypeService.filterList(filterInvBusTypeRequest); + mWarehouseBussinessTypeEntities.addAll(warehouseBussinessTypeEntities); + + //获取仓库关联用户 + FilterInvUserRequest filterInvUserRequest = new FilterInvUserRequest(); + filterInvUserRequest.setCode(invWarehouseEntity.getCode()); + List warehouseUserEntities = warehouseUserService.filterWarehouseUsers(filterInvUserRequest); + mWarehouseUserEntities.addAll(warehouseUserEntities); + + if (CollUtil.isNotEmpty(warehouseUserEntities)) { + for (WarehouseUserEntity warehouseUserEntity : warehouseUserEntities) { + List invBusUserEntities = invBusUserService.selectByUnion(warehouseUserEntity.getUserid() + "", invWarehouseEntity.getCode()); + mInvBusUserEntities.addAll(invBusUserEntities); + } + } + } + syncDataResponse.setInvBusUserEntities(mInvBusUserEntities); + syncDataResponse.setWarehouseUserEntities(mWarehouseUserEntities); + syncDataResponse.setWarehouseBussinessTypeEntities(mWarehouseBussinessTypeEntities); + } + } + + //系统用户信息 + if (syncDataSetEntity.getSysUser() == 1) { + FilterAuthUserRequest authAdminQueryRequest = new FilterAuthUserRequest(); + BeanUtils.copyProperties(spsSyncDataRequest, authAdminQueryRequest); + List authAdminList = authAdminService.listAdminPage(authAdminQueryRequest); + syncDataResponse.setAuthAdminList(authAdminList); + } + + + return syncDataResponse; + } + } diff --git a/src/main/java/com/glxp/api/service/sync/impl/SyncDataBustypeServiceImpl.java b/src/main/java/com/glxp/api/service/sync/impl/SyncDataBustypeServiceImpl.java index a21fab96f..dab28c92a 100644 --- a/src/main/java/com/glxp/api/service/sync/impl/SyncDataBustypeServiceImpl.java +++ b/src/main/java/com/glxp/api/service/sync/impl/SyncDataBustypeServiceImpl.java @@ -1,5 +1,6 @@ package com.glxp.api.service.sync.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.glxp.api.dao.sync.SyncDataBustypeDao; import com.glxp.api.entity.system.SyncDataBustypeEntity; import com.glxp.api.service.sync.SyncDataBustypeService; @@ -17,13 +18,13 @@ public class SyncDataBustypeServiceImpl implements SyncDataBustypeService { SyncDataBustypeDao syncDataBustypeDao; @Override - public List findAll() { - return syncDataBustypeDao.findAll(); + public List findAll(Integer direct) { + return syncDataBustypeDao.selectList(new QueryWrapper().eq("direct", direct)); } @Override - public boolean deleteAll() { - return syncDataBustypeDao.deleteAll(); + public boolean deleteAll(Integer direct) { + return syncDataBustypeDao.delete(new QueryWrapper().eq("direct", direct)) > 0 ? true : false; } @Override diff --git a/src/main/java/com/glxp/api/service/sync/impl/SyncDataSetServiceImpl.java b/src/main/java/com/glxp/api/service/sync/impl/SyncDataSetServiceImpl.java index f922b303a..b52e3227c 100644 --- a/src/main/java/com/glxp/api/service/sync/impl/SyncDataSetServiceImpl.java +++ b/src/main/java/com/glxp/api/service/sync/impl/SyncDataSetServiceImpl.java @@ -37,11 +37,12 @@ public class SyncDataSetServiceImpl implements SyncDataSetService { SyncDataSetEntity syncDataSetEntity = syncDataSetDao.selectSet(); SyncDataSetResponse syncDataSetResponse = new SyncDataSetResponse(); BeanUtils.copyProperties(syncDataSetEntity, syncDataSetResponse); - List syncDataBustypeEntities = syncDataBustypeService.findAll(); + List syncDataBustypeEntities = syncDataBustypeService.findAll(1); + List syncDataToInBustypeEntities = syncDataBustypeService.findAll(2); List changeBustypesEntities = syncDataChangeBustypeService.findAll(); syncDataSetResponse.setBusTypes(syncDataBustypeEntities); syncDataSetResponse.setChangeBusTypes(changeBustypesEntities); - + syncDataSetResponse.setToInBusTypes(syncDataToInBustypeEntities); return syncDataSetResponse; } diff --git a/src/main/java/com/glxp/api/service/thrsys/IThrBusTypeOriginService.java b/src/main/java/com/glxp/api/service/thrsys/IThrBusTypeOriginService.java index e847dbcd4..5df74fb9e 100644 --- a/src/main/java/com/glxp/api/service/thrsys/IThrBusTypeOriginService.java +++ b/src/main/java/com/glxp/api/service/thrsys/IThrBusTypeOriginService.java @@ -1,10 +1,12 @@ package com.glxp.api.service.thrsys; +import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; import com.glxp.api.entity.thrsys.ThrSystemDetailEntity; import com.glxp.api.req.thrsys.FilterThrBusTypeOriginRequest; import com.glxp.api.res.thrsys.ThrBusTypeOriginResponse; +import java.util.Date; import java.util.List; /** @@ -101,4 +103,7 @@ public interface IThrBusTypeOriginService { */ String findNameByAction(String originAction); + + List findByLastTime(Date lastUpdateTime); + } diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java index ebb61b9c1..9e92a7a35 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java @@ -5,6 +5,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.thrsys.ThrBusTypeOriginDao; +import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; import com.glxp.api.entity.thrsys.ThrBusTypeOriginEntity; import com.glxp.api.entity.thrsys.ThrSystemDetailEntity; import com.glxp.api.req.thrsys.FilterThrBusTypeOriginRequest; @@ -86,7 +87,7 @@ public class ThrBusTypeOriginServiceImpl implements IThrBusTypeOriginService { @Override public ThrBusTypeOriginEntity findByAction(String action) { QueryWrapper query = new QueryWrapper<>(); - if(StrUtil.isNotEmpty(action)){ + if (StrUtil.isNotEmpty(action)) { query.like("action", action); } List list = thrBusTypeOriginDao.selectList(query); @@ -149,4 +150,8 @@ public class ThrBusTypeOriginServiceImpl implements IThrBusTypeOriginService { thrBusTypeOriginEntity.setUpdateTime(now); } + @Override + public List findByLastTime(Date lastUpdateTime) { + return thrBusTypeOriginDao.selectList(new QueryWrapper().gt("updateTime", lastUpdateTime)); + } } diff --git a/src/main/java/com/glxp/api/task/AsyncFetchUdiTask.java b/src/main/java/com/glxp/api/task/AsyncFetchUdiTask.java index ca6f4fc3f..3f49738f5 100644 --- a/src/main/java/com/glxp/api/task/AsyncFetchUdiTask.java +++ b/src/main/java/com/glxp/api/task/AsyncFetchUdiTask.java @@ -36,12 +36,12 @@ public class AsyncFetchUdiTask implements SchedulingConfigurer { scheduledRequest.setCronName("syncFetch"); logger.info("syncFetch----------------"); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); - String cron = scheduledEntity!=null ? scheduledEntity.getCron() : "0 0/5 * * * ?"; + String cron = scheduledEntity!=null ? scheduledEntity.getCron() : "0 0/3 * * * ?"; if (cron.isEmpty()) { logger.error("cron is null"); } - logger.info("syncFetch----------------"); + logger.info("syncFetch----------------"+cron); return new CronTrigger(cron).nextExecutionTime(triggerContext); }); } diff --git a/src/main/java/com/glxp/api/task/AsyncUdiTask.java b/src/main/java/com/glxp/api/task/AsyncUdiTask.java index 660b74446..001d5a507 100644 --- a/src/main/java/com/glxp/api/task/AsyncUdiTask.java +++ b/src/main/java/com/glxp/api/task/AsyncUdiTask.java @@ -16,7 +16,6 @@ import com.glxp.api.idc.service.IdcService; import com.glxp.api.req.system.ScheduledRequest; - @Component @EnableScheduling public class AsyncUdiTask implements SchedulingConfigurer { @@ -37,7 +36,7 @@ public class AsyncUdiTask implements SchedulingConfigurer { scheduledRequest.setCronName("syncIdcUdi"); logger.info("syncIdcUdi----------------"); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); - String cron = scheduledEntity!=null ? scheduledEntity.getCron() : "0 0/3 * * * ?"; + String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 0/1 * * * ?"; if (cron.isEmpty()) { logger.error("cron is null"); @@ -48,9 +47,8 @@ public class AsyncUdiTask implements SchedulingConfigurer { } private void process() { - logger.info("syncIdcUdi----process------------"); - - idcService.asyncUdiTask(); - } + logger.info("syncIdcUdi----process------------"); + idcService.asyncUdiTask(); + } } diff --git a/src/main/java/com/glxp/api/task/SyncHeartTask.java b/src/main/java/com/glxp/api/task/SyncHeartTask.java index 2be72e2d3..4dc6326f9 100644 --- a/src/main/java/com/glxp/api/task/SyncHeartTask.java +++ b/src/main/java/com/glxp/api/task/SyncHeartTask.java @@ -57,6 +57,23 @@ public class SyncHeartTask implements SchedulingConfigurer { SyncDataSetEntity syncDataSetEntity = syncDataSetDao.selectSet(); if (syncDataSetEntity.isDownstreamEnable()) { + + //定时上传最近更新基础数据至上游轮询时间 + long timeInterval1 = syncDataSetEntity.getSyncTime() * 60 * 1000L; + long curTime1 = System.currentTimeMillis(); + Long lastTime1 = (Long) redisUtil.get("SPS_SYNC_UPLOAD_DATA"); + if (lastTime1 == null) { + lastTime1 = System.currentTimeMillis(); + redisUtil.set("SPS_SYNC_UPLOAD_DATA", lastTime1); + } + if (curTime1 - lastTime1 > timeInterval1) { + heartService.uploadAllBus(null); + heartService.uploadAllUserData(null); +// heartService.uploadScheduleList(); + redisUtil.set("SPS_SYNC_UPLOAD_DATA", curTime1); + } + + //定时上传最近更新单据数据至上游轮询时间 long timeInterval2 = syncDataSetEntity.getOrderSyncTime() * 60 * 1000L; long curTime2 = System.currentTimeMillis(); @@ -67,6 +84,7 @@ public class SyncHeartTask implements SchedulingConfigurer { } if (curTime2 - lastTime2 > timeInterval2) { heartService.uploadAllOrder(null); + heartService.uploadAllBusOrder(null); redisUtil.set("SPS_SYNC_UPLOAD_ORDER", curTime2); } diff --git a/src/main/java/com/glxp/api/util/FileUtils.java b/src/main/java/com/glxp/api/util/FileUtils.java index b12608881..f9cdcf094 100644 --- a/src/main/java/com/glxp/api/util/FileUtils.java +++ b/src/main/java/com/glxp/api/util/FileUtils.java @@ -1,6 +1,19 @@ package com.glxp.api.util; -import java.io.*; +import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.RandomAccessFile; +import java.io.Reader; +import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; @@ -750,7 +763,7 @@ public class FileUtils { in.close(); bytes = out.toByteArray(); - + out.close(); } catch (Exception e1) { e1.printStackTrace(); } finally { diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 97b7afa15..7e59ac974 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -46,7 +46,7 @@ logging: level: com.glxp.api.dao: debug -file_path: D:/udi/udiwms/udiwmsfile/ +file_path: D:/udi/inUdiwms/udiwmsfile/ UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs diff --git a/src/main/resources/application-pro.yml b/src/main/resources/application-pro.yml index b478cd74c..b88f18fc4 100644 --- a/src/main/resources/application-pro.yml +++ b/src/main/resources/application-pro.yml @@ -3,7 +3,7 @@ server: spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_wms_wmd?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + jdbc-url: jdbc:mysql://127.0.0.1:3306/udi_wms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: Glxp@6066 hikari: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1c0966353..cc8bc4c7a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,7 +3,10 @@ spring: active: dev jmx: enabled: false - + servlet: + multipart: + max-file-size: 200MB + max-request-size: 200MB mybatis-plus: mapper-locations: classpath:mybatis/mapper/*/*.xml configuration: @@ -24,3 +27,10 @@ pagehelper: auto-dialect: true auto-runtime-dialect: true +server: + tomcat: + max-http-form-post-size: 100MB + max-http-post-size: 100MB + max-http-header-size: 100MB + + diff --git a/src/main/resources/mybatis/mapper/auth/DeptUserDao.xml b/src/main/resources/mybatis/mapper/auth/DeptUserDao.xml index 3b656c16b..6cfb932fc 100644 --- a/src/main/resources/mybatis/mapper/auth/DeptUserDao.xml +++ b/src/main/resources/mybatis/mapper/auth/DeptUserDao.xml @@ -3,17 +3,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - SELECT auth_dept_user.*, auth_user.userName, auth_user.employeeName, auth_dept.`name` deptName, auth_user.comments + SELECT auth_dept_user.*, + auth_user.userName, + auth_user.employeeName, + auth_dept.`name` deptName, + auth_user.comments FROM auth_dept_user - INNER JOIN auth_user - on auth_dept_user.userId = auth_user.id - INNER JOIN auth_dept on auth_dept_user.deptId = auth_dept.id + INNER JOIN auth_user + on auth_dept_user.userId = auth_user.id + INNER JOIN auth_dept on auth_dept_user.deptId = auth_dept.id and deptId = #{deptId} @@ -64,27 +66,21 @@ > delete from auth_dept_user - where deptId in + where deptId in #{item} - insert INTO auth_dept_user - ( - deptId,userId - ) - values + (deptId, userId) + values - ( - #{item.deptId}, - #{item.userId} - ) + (#{item.deptId}, + #{item.userId}) - diff --git a/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml b/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml index 7c665c4e6..b73f09df8 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml @@ -71,7 +71,7 @@ spUse, preIn, supplementAll, createUser, createTime, preInBack, vailDispatch, vailGroupBuy, busType, inStock, actionType , thrCheckEnable, thrCheckWebNew, thrCheckPdaUn, thrCheckPdaEd, thrCheckUdims, thrCheckPc, thrCheckSp - , thrCheckChange, thrCheckBalance, thrCheckCopy, fillCodeRel,checkVailDate,checkCertExpire) + , thrCheckChange, thrCheckBalance, thrCheckCopy, fillCodeRel, checkVailDate, checkCertExpire) values (#{mainAction}, #{action}, #{name}, @@ -126,8 +126,7 @@ , #{thrCheckEnable}, #{thrCheckWebNew}, #{thrCheckPdaUn}, #{thrCheckPdaEd}, #{thrCheckUdims}, #{thrCheckPc} , #{thrCheckSp}, #{thrCheckChange}, #{thrCheckBalance}, #{thrCheckCopy}, #{fillCodeRel} - , #{checkVailDate}, #{checkExpire}, #{checkCertExpire} - ) + , #{checkVailDate}, #{checkExpire}, #{checkCertExpire}) + + + + + diff --git a/src/main/resources/mybatis/mapper/inout/IoCodeLostMapper.xml b/src/main/resources/mybatis/mapper/inout/IoCodeLostMapper.xml index 636cb4927..a3fdbf38b 100644 --- a/src/main/resources/mybatis/mapper/inout/IoCodeLostMapper.xml +++ b/src/main/resources/mybatis/mapper/inout/IoCodeLostMapper.xml @@ -1,28 +1,29 @@ - diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml b/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml index daa098526..51f7e9f10 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderDao.xml @@ -3,16 +3,16 @@ @@ -130,14 +150,6 @@ AND busType = #{busType} - - - AND `action` in - - #{item} - - - AND date_format(createTime, '%Y-%m-%d') between date_format(#{startTime}, '%Y-%m-%d') and date_format(#{endTime}, '%Y-%m-%d') @@ -165,16 +177,16 @@ select io_order_detail_biz.* from io_order_detail_biz - left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk - left join basic_products bp on bu.uuid = bp.uuid + left join basic_udirel bu on bu.id = io_order_detail_biz.bindRlFk + left join basic_products bp on bu.uuid = bp.uuid AND orderIdFk = #{orderIdFk} @@ -25,17 +25,25 @@ diff --git a/src/main/resources/mybatis/mapper/inout/IoOrderDetailCodeDao.xml b/src/main/resources/mybatis/mapper/inout/IoOrderDetailCodeDao.xml index 3f63866ac..c7d01328b 100644 --- a/src/main/resources/mybatis/mapper/inout/IoOrderDetailCodeDao.xml +++ b/src/main/resources/mybatis/mapper/inout/IoOrderDetailCodeDao.xml @@ -3,10 +3,10 @@ - \ No newline at end of file + diff --git a/src/main/resources/mybatis/mapper/inv/InvInnerOrderPrintDao.xml b/src/main/resources/mybatis/mapper/inv/InvInnerOrderPrintDao.xml index d5773b9d4..9f61176a0 100644 --- a/src/main/resources/mybatis/mapper/inv/InvInnerOrderPrintDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvInnerOrderPrintDao.xml @@ -4,30 +4,30 @@ - - - - - - - - - - - - + + + + + + + + + + + + - id, orderIdFk, udiCode, productId, productName, `count`, productDate, batchNo, `createUser`, + id, orderIdFk, udiCode, productId, productName, `count`, productDate, batchNo, `createUser`, createTime, updateUser, updateTime - - - - \ No newline at end of file + diff --git a/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml b/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml index 5826c3887..59ef66e35 100644 --- a/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvRemindSetDao.xml @@ -3,23 +3,23 @@ + + diff --git a/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml b/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml index afc68a6df..732e61ae5 100644 --- a/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml +++ b/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml @@ -9,20 +9,16 @@ - - DELETE - FROM sync_data_bustypes - insert INTO sync_data_bustypes - (`action`, `name`, outChange, orderStatus) + (`action`, `name`, outChange, orderStatus, direct) values (#{item.action}, #{item.name}, - #{item.outChange}, #{item.orderStatus}) + #{item.outChange}, #{item.orderStatus}, #{item.direct}) diff --git a/src/main/resources/mybatis/mapper/system/SyncDataPurtypeDao.xml b/src/main/resources/mybatis/mapper/system/SyncDataPurtypeDao.xml deleted file mode 100644 index 9f7536b6e..000000000 --- a/src/main/resources/mybatis/mapper/system/SyncDataPurtypeDao.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - DELETE - FROM sync_data_purtype - - - - insert INTO sync_data_purtype - (`action`, `name`, orderStatus) - values - - - (#{item.action}, #{item.name}, - #{item.orderStatus}) - - - diff --git a/src/main/resources/mybatis/mapper/system/SyncDataSetDao.xml b/src/main/resources/mybatis/mapper/system/SyncDataSetDao.xml index 533e2e069..87a03693c 100644 --- a/src/main/resources/mybatis/mapper/system/SyncDataSetDao.xml +++ b/src/main/resources/mybatis/mapper/system/SyncDataSetDao.xml @@ -17,7 +17,7 @@ typeThird, basicProducts, basicCorp, basicInv, basicThirdProducts, basicThirdCorp, basicThirdInv , basicThirdBusOrder, orderScanFinish, dbDiProducts,downstreamEnable,syncTime,syncDownloadTime, orderUnReceive,orderUnCheck,busTypes,sysUser,syncIp,orderSyncTime,orderSyncStart,basicSyncStart,entrustAction - ,unCheckCert,checkedCert,companyCert,manufacturerCert,productCert) + ,unCheckCert,checkedCert,companyCert,manufacturerCert,productCert,basicDept) values ( #{id}, #{typeBus}, @@ -45,9 +45,9 @@ #{basicSyncStart}, #{entrustAction}, #{unCheckCert}, - #{checkedCert}, #{companyCert}, #{manufacturerCert}, #{productCert} + #{checkedCert}, #{companyCert}, #{manufacturerCert}, #{productCert},#{basicDept} ) - \ No newline at end of file + diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrBusTypeOriginDao.xml b/src/main/resources/mybatis/mapper/thrsys/ThrBusTypeOriginDao.xml index dde42bcea..74f939689 100644 --- a/src/main/resources/mybatis/mapper/thrsys/ThrBusTypeOriginDao.xml +++ b/src/main/resources/mybatis/mapper/thrsys/ThrBusTypeOriginDao.xml @@ -18,7 +18,7 @@ - select tbo.*, thr_system.thirdName thirdSysName from thr_bustype_origin tbo left join thr_system on tbo.thirdSys = thr_system.thirdId diff --git a/src/main/resources/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index 09bb0e327..0387239b7 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -6,12 +6,21 @@ CALL Pro_Temp_ColumnWork('io_order', 'busType', 'tinyint ', 1); CALL Pro_Temp_ColumnWork('io_order', 'deliveryStatus', 'tinyint ', 1); CALL Pro_Temp_ColumnWork('io_order', 'inCodeStatus', 'tinyint ', 1); CALL Pro_Temp_ColumnWork('io_order', 'processStatus', 'tinyint ', 1); + +CALL Pro_Temp_ColumnWork('io_order', 'suppleCount', 'tinyint ', 1); +CALL Pro_Temp_ColumnWork('io_order', 'relKey', 'varchar(255) ', 1); +CALL Pro_Temp_ColumnWork('io_order', 'checkTime', 'datetime ', 1); + CALL Pro_Temp_ColumnWork('io_code_lost', 'nameCode', 'varchar(255) ', 1); CALL Pro_Temp_ColumnWork('thr_bustype_origin', 'thirdSysName', 'varchar(255) ', 3); CALL Pro_Temp_ColumnWork('thr_system_bus_api', 'thirdBuyName', 'varchar(255) ', 3); CALL Pro_Temp_ColumnWork('io_order_detail_biz', 'bindRlIds', 'varchar(255) ', 1); +CALL Pro_Temp_ColumnWork('io_order_detail_biz', 'checkFileName', 'varchar(255) ', 1); +CALL Pro_Temp_ColumnWork('io_order_invoice', 'bizIdFk', 'int ', 1); + + CALL Pro_Temp_ColumnWork('auth_warehouse', 'advanceType', 'tinyint', 1); CALL Pro_Temp_ColumnWork('auth_warehouse', 'spUse', 'tinyint', 1); @@ -24,6 +33,9 @@ CALL Pro_Temp_ColumnWork('basic_udirel', 'dispatch', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_udirel', 'groupBuy', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_udirel', 'isDateBy', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_udirel', 'needCert', 'tinyint', 1); +CALL Pro_Temp_ColumnWork('basic_udirel', 'certIdFk', 'varchar(255)', 1); + +CALL Pro_Temp_ColumnWork('basic_products', 'allowNoSerial', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'vailDispatch', 'tinyint', 1); @@ -82,18 +94,69 @@ CALL Pro_Temp_ColumnWork('basic_bustype_change', 'busBeforeTime', 'tinyint', 1); CALL Pro_Temp_ColumnWork('pur_order', 'emergency', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('pur_order', 'supId', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('pur_order', 'arrivalTime', 'datetime', 1); +CALL Pro_Temp_ColumnWork('pur_order', 'dealStatus', 'int', 1); + CALL Pro_Temp_ColumnWork('pur_order_detail', 'planCount', 'tinyint', 1); 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('io_code_lost', 'nameCode', 'varchar(255)', 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`, `paramType`, `paramExplain`) VALUES (20040, 0, '允许送货单直接入库变更库存', 'deliveryInstock', '0', 1, 0, '0:否;1:是'); + +CALL Pro_Temp_ColumnWork('sup_product', 'manufactory', 'varchar(255)', 1); +CALL Pro_Temp_ColumnWork('sup_product', 'allowNoBatch', 'tinyint', 1); +CALL Pro_Temp_ColumnWork('sup_product', 'allowNoExpire', 'tinyint', 1); +CALL Pro_Temp_ColumnWork('sup_product', 'allowNoProduct', 'tinyint', 1); +CALL Pro_Temp_ColumnWork('sup_product', 'allowNoSerial', 'tinyint', 1); + +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); +CALL Pro_Temp_ColumnWork('sys_pdf_template', 'bussinessType', 'varchar(255)', 1); +CALL Pro_Temp_ColumnWork('sys_pdf_template', 'bussinessStatus', 'varchar(255)', 1); + +CALL Pro_Temp_ColumnWork('io_order_detail_biz', 'filePath', 'varchar(255)', 1); + +INSERT ignore INTO `sys_scheduled`(`id`, `cronName`, `cron`, `customerId`, `remark`) +VALUES (100, 'clean_log_task', '0 0 2 1/1 * ? ', NULL, '删除日志数据'); + + + +CALL Pro_Temp_ColumnWork('inv_product', 'nowStock', 'int ', 1); +CALL Pro_Temp_ColumnWork('inv_product', 'frozenCount', 'int ', 1); +CALL Pro_Temp_ColumnWork('inv_product', 'planInCount', 'int ', 1); +CALL Pro_Temp_ColumnWork('inv_product', 'planOutCount', 'int ', 1); +CALL Pro_Temp_ColumnWork('inv_product', 'onWayCount', 'int ', 1); +CALL Pro_Temp_ColumnWork('inv_product', 'availableStock', 'int ', 1); + +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);