From 74e9ab62f817e40b673c694d6068e42da796e896 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Fri, 14 Apr 2023 18:28:11 +0800 Subject: [PATCH 01/17] =?UTF-8?q?UDI=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=AA=8C=E6=94=B6=E5=8D=95=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/controller/inout/IoOrderReviewController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 7a438473..a04da105 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoOrderReviewController.java @@ -421,10 +421,10 @@ public class IoOrderReviewController extends BaseController { @Resource SpsSyncDownloadService spsSyncDownloadService; - // 前端扫单号验收 + // UDI管理系统获取验收单据信息 @AuthRuleAnnotation("") - @PostMapping("/udiwms/order/reviewSpms") - public BaseResponse reviewSpms(@RequestBody ReviewSpmsRequest reviewSpmsRequest) { + @PostMapping("/udiwms/order/getReviews") + public BaseResponse getReviewOrderSpms(@RequestBody ReviewSpmsRequest reviewSpmsRequest) { String billNo = reviewSpmsRequest.getBillNo(); if (StrUtil.isEmpty(reviewSpmsRequest.getBillNo())) { From 5154d1820600ebc331289f7fe599dc89ecbadb68 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 11:16:22 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/idc/controller/DeleteController.java | 37 +++++++++++++ .../glxp/api/idc/service/DeleteService.java | 10 ++++ .../idc/service/impl/DeleteServiceImpl.java | 52 +++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 src/main/java/com/glxp/api/idc/controller/DeleteController.java create mode 100644 src/main/java/com/glxp/api/idc/service/DeleteService.java create mode 100644 src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java 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 00000000..913487f8 --- /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/service/DeleteService.java b/src/main/java/com/glxp/api/idc/service/DeleteService.java new file mode 100644 index 00000000..2c02d5da --- /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 uniqueColumn,String value); + boolean syncDelete(Map params); +} diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java new file mode 100644 index 00000000..afdf38ec --- /dev/null +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -0,0 +1,52 @@ +package com.glxp.api.idc.service.impl; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import com.glxp.api.dao.idc.DbDao; +import com.glxp.api.idc.service.DeleteService; +import com.glxp.api.util.CustomUtil; + + +/*连通检测*/ +@Service +public class DeleteServiceImpl implements DeleteService { + private static final Logger logger = LoggerFactory.getLogger(DeleteServiceImpl.class); + @Resource + private JdbcTemplate jdbcTemplate; + @Resource + private DbDao dbDao; + + @Override + public boolean syncDelete(String tableName,String uniqueColumn,String uniqueValue) { + Map map = new HashMap<>(); + map.put("tableName", tableName); + map.put("uniqueColumn", uniqueColumn); + map.put("uniqueValue", uniqueValue); + return syncDelete(map); + } + @Override + public boolean syncDelete(Map params) { + createTable(); + String sql = "insert into idc_delete (id,tableName,uniqueColumn,uniqueValue,updateTime) values ('"+CustomUtil.getId()+"','"+params.get("tableName")+"','"+params.get("uniqueColumn")+"','"+params.get("uniqueValue")+"',now())"; + 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),uniqueColumn varchar(60),uniqueValue varchar(200),updateTime datetime,PRIMARY KEY (id))"); + + } catch (Exception e) { + + } + } +} \ No newline at end of file From ab7902a4db7083eca0ba3efd83b33ddbfcec1090 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 11:18:36 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/idc/controller/DeleteController.java | 4 ---- .../java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java | 1 - .../java/com/glxp/api/idc/service/impl/IdcServiceImpl.java | 1 - 3 files changed, 6 deletions(-) diff --git a/src/main/java/com/glxp/api/idc/controller/DeleteController.java b/src/main/java/com/glxp/api/idc/controller/DeleteController.java index 913487f8..41136aed 100644 --- a/src/main/java/com/glxp/api/idc/controller/DeleteController.java +++ b/src/main/java/com/glxp/api/idc/controller/DeleteController.java @@ -17,10 +17,6 @@ import com.glxp.api.idc.service.DeleteService; -/** - * 中继服务接口 - */ - @RestController public class DeleteController { @Resource diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index afdf38ec..a5577ebb 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -15,7 +15,6 @@ import com.glxp.api.idc.service.DeleteService; import com.glxp.api.util.CustomUtil; -/*连通检测*/ @Service public class DeleteServiceImpl implements DeleteService { private static final Logger logger = LoggerFactory.getLogger(DeleteServiceImpl.class); 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 81a9e73c..3e7d86fb 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 @@ -55,7 +55,6 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; -/*数据中继数据中心(接收)*/ @Slf4j @Service public class IdcServiceImpl implements IdcService { From 8973ef8898685b69288113a4796b95c514dba49a Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 12:24:45 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/idc/service/impl/DeleteServiceImpl.java | 5 +++-- .../java/com/glxp/api/idc/service/impl/IdcServiceImpl.java | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index a5577ebb..a3d88249 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -34,7 +34,8 @@ public class DeleteServiceImpl implements DeleteService { @Override public boolean syncDelete(Map params) { createTable(); - String sql = "insert into idc_delete (id,tableName,uniqueColumn,uniqueValue,updateTime) values ('"+CustomUtil.getId()+"','"+params.get("tableName")+"','"+params.get("uniqueColumn")+"','"+params.get("uniqueValue")+"',now())"; + String sql = "insert into idc_delete (id,tableName,uniqueColumn,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName")+"','"+params.get("uniqueColumn")+"',now(),'"+params.get("uniqueValue")+"')"; + if(dbDao.save(sql)>0) return true; return false; @@ -42,7 +43,7 @@ public class DeleteServiceImpl implements DeleteService { private void createTable() { try { - jdbcTemplate.execute("create table idc_delete (id varchar(36),tableName varchar(100),uniqueColumn varchar(60),uniqueValue varchar(200),updateTime datetime,PRIMARY KEY (id))"); + jdbcTemplate.execute("create table idc_delete (id varchar(36),tableName varchar(100),uniqueColumn varchar(60),uniqueValue varchar(600),updateTime datetime,PRIMARY KEY (id))"); } catch (Exception e) { 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 3e7d86fb..06a1eadf 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 @@ -233,6 +233,7 @@ public class IdcServiceImpl implements IdcService { syncData(syncTables[i], isUpload, syncIp); } } + } } From ae680d2ef5792986e7b808de241a6a7870cad36d Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 14:20:52 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=8F=82=E6=95=B00,1=E4=B8=BA=E7=A9=BA=E6=97=A0=E9=9C=80?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/glxp/api/idc/service/impl/IdcServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 06a1eadf..21f715fb 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 @@ -225,7 +225,7 @@ public class IdcServiceImpl implements IdcService { String[] syncTables = TableUtils.syncTables(); for (int i = 0; i < syncTables.length; i++) { String[] tnames = syncTables[i].split("/"); - boolean sync = StringUtils.isEmpty(tnames[0]) || + boolean sync = (StringUtils.isEmpty(tnames[0])&&StringUtils.isEmpty(tnames[1])) || (!StringUtils.isEmpty(tnames[0]) && map != null && map.get(tnames[0]) != null && map.get(tnames[0]).toString().equals("1")); saveIdcLog("---", "", map.get(tnames[0]) + syncTables[i], 0, 0); if (sync) { From 518546c5a6844ce9bac30e8696f0b83b21060985 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 14:29:14 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/glxp/api/idc/service/impl/DeleteServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index a3d88249..9b9a2680 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -47,6 +47,12 @@ public class DeleteServiceImpl implements DeleteService { } 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 From 06abc56fbd4445f9e18c149f95f91a26cb36d84f Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 14:32:00 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index 9b9a2680..cc5781bc 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -34,7 +34,7 @@ public class DeleteServiceImpl implements DeleteService { @Override public boolean syncDelete(Map params) { createTable(); - String sql = "insert into idc_delete (id,tableName,uniqueColumn,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName")+"','"+params.get("uniqueColumn")+"',now(),'"+params.get("uniqueValue")+"')"; + String sql = "insert into idc_delete (id,tableName,uniqueColumn,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName").toString().toLowerCase()+"','"+params.get("uniqueColumn")+"',now(),'"+params.get("uniqueValue")+"')"; if(dbDao.save(sql)>0) return true; From 1b0320d44160e5479146bf1cbfdc5aa83e8f1723 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 15:19:28 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/idc/service/DeleteService.java | 3 ++- .../idc/service/impl/DeleteServiceImpl.java | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/glxp/api/idc/service/DeleteService.java b/src/main/java/com/glxp/api/idc/service/DeleteService.java index 2c02d5da..11400dd0 100644 --- a/src/main/java/com/glxp/api/idc/service/DeleteService.java +++ b/src/main/java/com/glxp/api/idc/service/DeleteService.java @@ -5,6 +5,7 @@ import java.util.Map; /*数据中继删除数据处理*/ public interface DeleteService { - boolean syncDelete(String tableName,String uniqueColumn,String value); + boolean syncDelete(String tableName,String uniqueValue); + boolean syncDelete(String tableName,String uniqueColumn,String uniqueValue); boolean syncDelete(Map params); } diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index cc5781bc..a5291005 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -5,6 +5,7 @@ import java.util.Map; import javax.annotation.Resource; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; @@ -12,6 +13,7 @@ import org.springframework.stereotype.Service; import com.glxp.api.dao.idc.DbDao; import com.glxp.api.idc.service.DeleteService; +import com.glxp.api.idc.utils.TableUtils; import com.glxp.api.util.CustomUtil; @@ -23,6 +25,10 @@ public class DeleteServiceImpl implements DeleteService { @Resource private DbDao dbDao; + @Override + public boolean syncDelete(String tableName,String uniqueValue) { + return syncDelete(tableName,"",uniqueValue); + } @Override public boolean syncDelete(String tableName,String uniqueColumn,String uniqueValue) { Map map = new HashMap<>(); @@ -34,7 +40,19 @@ public class DeleteServiceImpl implements DeleteService { @Override public boolean syncDelete(Map params) { createTable(); - String sql = "insert into idc_delete (id,tableName,uniqueColumn,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName").toString().toLowerCase()+"','"+params.get("uniqueColumn")+"',now(),'"+params.get("uniqueValue")+"')"; + String tableName = params.get("tableName").toString(); + String uniqueColumn = params.get("uniqueColumn")!=null ? params.get("uniqueColumn").toString() : ""; + if(StringUtils.isEmpty(uniqueColumn)) { + String[] syncTables = TableUtils.syncTables(); + for(String str:syncTables) { + String[] tnames = str.split("/"); + if(tnames[3].toLowerCase().equals(tableName.toLowerCase())) { + uniqueColumn = tnames[4]; + break; + } + } + } + String sql = "insert into idc_delete (id,tableName,uniqueColumn,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName").toString().toLowerCase()+"','"+uniqueColumn+"',now(),'"+params.get("uniqueValue")+"')"; if(dbDao.save(sql)>0) return true; From 490c2530a4b2db2b76da6d83fe90a337bc300905 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 15:29:06 +0800 Subject: [PATCH 09/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/idc/service/DeleteService.java | 3 +-- .../idc/service/impl/DeleteServiceImpl.java | 23 ++----------------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/glxp/api/idc/service/DeleteService.java b/src/main/java/com/glxp/api/idc/service/DeleteService.java index 11400dd0..d8cfa878 100644 --- a/src/main/java/com/glxp/api/idc/service/DeleteService.java +++ b/src/main/java/com/glxp/api/idc/service/DeleteService.java @@ -6,6 +6,5 @@ import java.util.Map; public interface DeleteService { boolean syncDelete(String tableName,String uniqueValue); - boolean syncDelete(String tableName,String uniqueColumn,String uniqueValue); - boolean syncDelete(Map params); + boolean syncDelete(Map params); } diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index a5291005..0372f098 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -5,7 +5,6 @@ import java.util.Map; import javax.annotation.Resource; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; @@ -13,7 +12,6 @@ import org.springframework.stereotype.Service; import com.glxp.api.dao.idc.DbDao; import com.glxp.api.idc.service.DeleteService; -import com.glxp.api.idc.utils.TableUtils; import com.glxp.api.util.CustomUtil; @@ -27,32 +25,15 @@ public class DeleteServiceImpl implements DeleteService { @Override public boolean syncDelete(String tableName,String uniqueValue) { - return syncDelete(tableName,"",uniqueValue); - } - @Override - public boolean syncDelete(String tableName,String uniqueColumn,String uniqueValue) { Map map = new HashMap<>(); map.put("tableName", tableName); - map.put("uniqueColumn", uniqueColumn); map.put("uniqueValue", uniqueValue); return syncDelete(map); } @Override public boolean syncDelete(Map params) { createTable(); - String tableName = params.get("tableName").toString(); - String uniqueColumn = params.get("uniqueColumn")!=null ? params.get("uniqueColumn").toString() : ""; - if(StringUtils.isEmpty(uniqueColumn)) { - String[] syncTables = TableUtils.syncTables(); - for(String str:syncTables) { - String[] tnames = str.split("/"); - if(tnames[3].toLowerCase().equals(tableName.toLowerCase())) { - uniqueColumn = tnames[4]; - break; - } - } - } - String sql = "insert into idc_delete (id,tableName,uniqueColumn,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName").toString().toLowerCase()+"','"+uniqueColumn+"',now(),'"+params.get("uniqueValue")+"')"; + String sql = "insert into idc_delete (id,tableName,updateTime,uniqueValue) values ('"+CustomUtil.getId()+"','"+params.get("tableName").toString().toLowerCase()+"',now(),'"+params.get("uniqueValue")+"')"; if(dbDao.save(sql)>0) return true; @@ -61,7 +42,7 @@ public class DeleteServiceImpl implements DeleteService { private void createTable() { try { - jdbcTemplate.execute("create table idc_delete (id varchar(36),tableName varchar(100),uniqueColumn varchar(60),uniqueValue varchar(600),updateTime datetime,PRIMARY KEY (id))"); + jdbcTemplate.execute("create table idc_delete (id varchar(36),tableName varchar(100),uniqueValue varchar(600),updateTime datetime,PRIMARY KEY (id))"); } catch (Exception e) { From 852dd4a41fd655e2824ba02670d2bb6244df26d8 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 15:32:19 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java index 0372f098..d5a5b18f 100644 --- a/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java +++ b/src/main/java/com/glxp/api/idc/service/impl/DeleteServiceImpl.java @@ -10,6 +10,7 @@ import org.slf4j.LoggerFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import com.alibaba.fastjson2.JSON; import com.glxp.api.dao.idc.DbDao; import com.glxp.api.idc.service.DeleteService; import com.glxp.api.util.CustomUtil; @@ -33,7 +34,7 @@ public class DeleteServiceImpl implements DeleteService { @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(),'"+params.get("uniqueValue")+"')"; + 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; From d63bcbf59888f63dec91979770d209b59ebbbf0d Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sat, 15 Apr 2023 19:00:35 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/idc/service/impl/IdcServiceImpl.java | 150 ++++++++++++++---- 1 file changed, 117 insertions(+), 33 deletions(-) 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 21f715fb..c4f36220 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 @@ -55,6 +55,7 @@ import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; +/*数据中继数据中心(接收)*/ @Slf4j @Service public class IdcServiceImpl implements IdcService { @@ -202,7 +203,7 @@ public class IdcServiceImpl implements IdcService { } } - + private void fetchFailFile(String host) { Map map = new HashMap(); map.put("sql", "select * from idc_file where createTime 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, success, startTime, isUpload); + } + } + } + } /*单独表调用,tableName可只传表名,如传完整参数按SYNCS_TABLES格式*/ @Override @@ -579,7 +653,7 @@ public class IdcServiceImpl implements IdcService { 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); @@ -811,7 +885,7 @@ public class IdcServiceImpl implements IdcService { 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 "; @@ -819,6 +893,7 @@ public class IdcServiceImpl implements IdcService { 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; @@ -856,15 +931,24 @@ public class IdcServiceImpl implements IdcService { } if ("A,D,U".contains(operateMode)) { - for (int z = 0; z < keyColumn.length; z++) { - if (list.get(i).get(keyColumn[z]) != null && !StringUtils.isEmpty(list.get(i).get(keyColumn[z]).toString())) { + if(operateMode.equals("D")&&list.get(i).get("uniqueColumn")!=null) { + String[] ucs = list.get(i).get("uniqueColumn").toString().split(","); + for(String str:ucs) { + Map map = (Map) column.get(str); + String dataType = map.get("dataType").toString(); updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " "; - String value = list.get(i).get(keyColumn[z]) != null ? list.get(i).get(keyColumn[z]).toString() : ""; - value = keyDataType[z].equals("D") ? "cast('" + DateUtil.formatDate(IDCUtils.parseDate(value), "yyyy-MM-dd HH:mm:ss") + "' as datetime)" : value; - updateWhere += keyColumn[z] + " = " + (keyDataType[z].equals("C") ? "'" : "") + value + (keyDataType[z].equals("C") ? "'" : ""); + updateWhere += str +" = "+(dataType.equals("C") ? "'" : "") + list.get(i).get(str) + (dataType.equals("C") ? "'" : ""); + } + } else { + for (int z = 0; z < keyColumn.length; z++) { + if (list.get(i).get(keyColumn[z]) != null && !StringUtils.isEmpty(list.get(i).get(keyColumn[z]).toString())) { + updateWhere += !StringUtils.isEmpty(updateWhere) ? " and " : " "; + String value = list.get(i).get(keyColumn[z]) != null ? list.get(i).get(keyColumn[z]).toString() : ""; + value = keyDataType[z].equals("D") ? "cast('" + DateUtil.formatDate(IDCUtils.parseDate(value), "yyyy-MM-dd HH:mm:ss") + "' as datetime)" : value; + updateWhere += keyColumn[z] + " = " + (keyDataType[z].equals("C") ? "'" : "") + value + (keyDataType[z].equals("C") ? "'" : ""); + } } } - if ("A,D".contains(operateMode) && !StringUtils.isEmpty(updateWhere)) dbDao.delete(del + updateWhere); } @@ -1034,27 +1118,27 @@ public class IdcServiceImpl implements IdcService { int total = 0; if (result!=null&&result.isSuccessful()&&MediaType.parse("application/force-download").equals(result.body().contentType())) { try (InputStream inputStream = result.body().byteStream()) { - - - - FileOutputStream outputStream = new FileOutputStream(filePath + filePathSlash + imagePath+fileName); - - byte b[] = new byte[1024]; - - int len = 0; - while ((len = inputStream.read(b)) != -1) { - total += len; - outputStream.write(b, 0, len); - - } - - outputStream.flush(); - outputStream.close(); - if(!(total>0)) { - new File(filePath + filePathSlash + imagePath+fileName).delete(); - executeSql("delete from idc_file where filePath='"+fileName+"'"); - } - + + + + FileOutputStream outputStream = new FileOutputStream(filePath + filePathSlash + imagePath+fileName); + + byte b[] = new byte[1024]; + + int len = 0; + while ((len = inputStream.read(b)) != -1) { + total += len; + outputStream.write(b, 0, len); + + } + + outputStream.flush(); + outputStream.close(); + if(!(total>0)) { + new File(filePath + filePathSlash + imagePath+fileName).delete(); + executeSql("delete from idc_file where filePath='"+fileName+"'"); + } + } catch (Exception e) { @@ -1252,7 +1336,7 @@ public class IdcServiceImpl implements IdcService { } - + private void executeSql(String sql) { try { jdbcTemplate.execute(sql); @@ -1263,4 +1347,4 @@ public class IdcServiceImpl implements IdcService { } -} +} \ No newline at end of file From b337627cb663177b0e6e61922917430d822ca1ff Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sat, 15 Apr 2023 21:19:24 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/res/sync/BaseSyncResponse.java | 14 +++++ .../api/res/sync/SpsSyncBusOrderResponse.java | 3 +- .../glxp/api/res/sync/SpsSyncBusResponse.java | 3 +- .../api/res/sync/SpsSyncDataResponse.java | 4 +- .../api/res/sync/SpsSyncOrderResponse.java | 6 +-- .../service/sync/SpsSyncDownloadService.java | 16 ++++++ src/main/resources/application-dev.yml | 53 +++++++++++++++++++ src/main/resources/application-ljy.yml | 53 +++++++++++++++++++ src/main/resources/application-wmd.yml | 53 +++++++++++++++++++ src/main/resources/application-wqq.yml | 53 +++++++++++++++++++ 10 files changed, 246 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/glxp/api/res/sync/BaseSyncResponse.java create mode 100644 src/main/resources/application-dev.yml create mode 100644 src/main/resources/application-ljy.yml create mode 100644 src/main/resources/application-wmd.yml create mode 100644 src/main/resources/application-wqq.yml 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 00000000..3f05c8f1 --- /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 ccb8df58..fb6f7365 100644 --- a/src/main/java/com/glxp/api/res/sync/SpsSyncBusOrderResponse.java +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncBusOrderResponse.java @@ -7,9 +7,8 @@ import lombok.Data; import java.util.List; @Data -public class SpsSyncBusOrderResponse { +public class SpsSyncBusOrderResponse extends BaseSyncResponse { - private String taskId; private List 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 index a1fb2d0f..df075a27 100644 --- a/src/main/java/com/glxp/api/res/sync/SpsSyncBusResponse.java +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncBusResponse.java @@ -8,10 +8,9 @@ import lombok.Data; import java.util.List; @Data -public class SpsSyncBusResponse { +public class SpsSyncBusResponse extends BaseSyncResponse { //同步任务ID - private String taskId; private List bussinessTypeEntities; private List busTypeChangeEntities; private List thrBusTypeOriginEntities; diff --git a/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java b/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java index 2ff379cd..39ef5746 100644 --- a/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncDataResponse.java @@ -6,10 +6,8 @@ import lombok.Data; import java.util.List; @Data -public class SpsSyncDataResponse { +public class SpsSyncDataResponse extends BaseSyncResponse { - //同步任务ID - private String taskId; //用户信息 List authAdminList; 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 56aa1312..2330e66a 100644 --- a/src/main/java/com/glxp/api/res/sync/SpsSyncOrderResponse.java +++ b/src/main/java/com/glxp/api/res/sync/SpsSyncOrderResponse.java @@ -6,16 +6,12 @@ import lombok.Data; import java.util.List; @Data -public class SpsSyncOrderResponse { - +public class SpsSyncOrderResponse extends BaseSyncResponse { //同步任务ID - private String taskId; List orderEntities; List codeEntities; List orderDetailBizEntities; List orderDetailCodeEntities; List orderDetailResultEntities; List orderInvoiceEntities; - - } diff --git a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java index a664f7f7..6a669cf6 100644 --- a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java +++ b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java @@ -103,6 +103,7 @@ public class SpsSyncDownloadService { List orderDetailCodeEntities = new ArrayList<>(); List orderDetailResultEntities = new ArrayList<>(); List orderInvoiceEntities = new ArrayList<>(); + List syncFiles = new ArrayList<>(); if (CollUtil.isNotEmpty(orderEntities)) { for (IoOrderEntity orderEntity : orderEntities) { @@ -114,6 +115,11 @@ public class SpsSyncDownloadService { List bizEntities = orderDetailBizService.findByOrderId(orderEntity.getBillNo()); if (CollUtil.isNotEmpty(bizEntities)) { orderDetailBizEntities.addAll(bizEntities); + for (IoOrderDetailBizEntity bizEntity : bizEntities) { + if (StrUtil.isNotEmpty(bizEntity.getCheckFileName())) { + syncFiles.add(bizEntity.getCheckFileName()); + } + } } @@ -130,11 +136,21 @@ public class SpsSyncDownloadService { List invoiceEntities = orderInvoiceService.findByBillNo(orderEntity.getBillNo()); if (CollUtil.isNotEmpty(invoiceEntities)) { + + for (IoOrderInvoiceEntity orderInvoiceEntity : invoiceEntities) { + if (StrUtil.isNotEmpty(orderInvoiceEntity.getLicenseUrl())) { + syncFiles.add(orderInvoiceEntity.getLicenseUrl()); + } + } + orderInvoiceEntities.addAll(invoiceEntities); + + } } } + syncOrderResponse.setFiles(syncFiles); syncOrderResponse.setCodeEntities(codeEntities); syncOrderResponse.setOrderDetailBizEntities(orderDetailBizEntities); syncOrderResponse.setOrderDetailCodeEntities(orderDetailCodeEntities); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 00000000..79ecbc91 --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,53 @@ +server: + port: 9993 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + username: root + password: 123456 + hikari: + connection-timeout: 60000 + maximum-pool-size: 60 + minimum-idle: 10 + redis: + database: 10 + host: 127.0.0.1 + port: 6379 + # password: 123456 + timeout: 300 + jedis: + pool: + max-active: 8 + max-wait: -1 + max-idle: 8 + min-idle: 0 + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB + +ok: + http: + connect-timeout: 3000 + read-timeout: 3000 + write-timeout: 3000 + max-idle-connections: 200 + keep-alive-duration: 300 + + +logging: + level: + com.glxp.api.dao: debug + +file_path: d:/udi/udiwms/udiwmsfile/ +back_file_path: d:/share/udisps/back/ +UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df +UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test +SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs + +API_KEY: 1101 +API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L diff --git a/src/main/resources/application-ljy.yml b/src/main/resources/application-ljy.yml new file mode 100644 index 00000000..44b87a4c --- /dev/null +++ b/src/main/resources/application-ljy.yml @@ -0,0 +1,53 @@ +server: + port: 9993 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_ljy?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + username: root + password: Glxp@6066 + hikari: + connection-timeout: 60000 + maximum-pool-size: 60 + minimum-idle: 10 + redis: + database: 10 + host: 127.0.0.1 + port: 6404 + # password: 123456 + timeout: 300 + jedis: + pool: + max-active: 8 + max-wait: -1 + max-idle: 8 + min-idle: 0 + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB + +ok: + http: + connect-timeout: 3000 + read-timeout: 3000 + write-timeout: 3000 + max-idle-connections: 200 + keep-alive-duration: 300 + + +logging: + level: + com.glxp.api.dao: debug + +file_path: /udi/udiwms/udiwmsfile/ +back_file_path: /share/udisps/back/ +UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df +UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test +SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs + +API_KEY: 1101 +API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L diff --git a/src/main/resources/application-wmd.yml b/src/main/resources/application-wmd.yml new file mode 100644 index 00000000..44b87a4c --- /dev/null +++ b/src/main/resources/application-wmd.yml @@ -0,0 +1,53 @@ +server: + port: 9993 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_ljy?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + username: root + password: Glxp@6066 + hikari: + connection-timeout: 60000 + maximum-pool-size: 60 + minimum-idle: 10 + redis: + database: 10 + host: 127.0.0.1 + port: 6404 + # password: 123456 + timeout: 300 + jedis: + pool: + max-active: 8 + max-wait: -1 + max-idle: 8 + min-idle: 0 + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB + +ok: + http: + connect-timeout: 3000 + read-timeout: 3000 + write-timeout: 3000 + max-idle-connections: 200 + keep-alive-duration: 300 + + +logging: + level: + com.glxp.api.dao: debug + +file_path: /udi/udiwms/udiwmsfile/ +back_file_path: /share/udisps/back/ +UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df +UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test +SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs + +API_KEY: 1101 +API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L diff --git a/src/main/resources/application-wqq.yml b/src/main/resources/application-wqq.yml new file mode 100644 index 00000000..5cfcea0b --- /dev/null +++ b/src/main/resources/application-wqq.yml @@ -0,0 +1,53 @@ +server: + port: 9993 +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://192.168.0.66:3364/udi_spms_wqq?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + username: root + password: Glxp@6066 + hikari: + connection-timeout: 60000 + maximum-pool-size: 60 + minimum-idle: 10 + redis: + database: 10 + host: 127.0.0.1 + port: 6405 + # password: 123456 + timeout: 300 + jedis: + pool: + max-active: 8 + max-wait: -1 + max-idle: 8 + min-idle: 0 + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + servlet: + multipart: + max-file-size: 500MB + max-request-size: 500MB + +ok: + http: + connect-timeout: 3000 + read-timeout: 3000 + write-timeout: 3000 + max-idle-connections: 200 + keep-alive-duration: 300 + + +logging: + level: + com.glxp.api.dao: debug + +file_path: /udi/udiwms/udiwmsfile/ +back_file_path: /share/udisps/back/ +UDI_KEY: 6b137c66-6286-46c6-8efa-c2f5dd9237df +UDI_SERVER_URL: https://www.udims.com/UDI_DL_Server_test +SPMS_KEY: lCOdWCBKS6Kw45wdnnqUTELXyuSKnXEs + +API_KEY: 1101 +API_SECRET: zBITspLNvuoEd4FaamlSoqxRHmNsmQ9L From 9c16967583f58f5958f9d72908bbc70b5ab9f461 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sun, 16 Apr 2023 11:43:40 +0800 Subject: [PATCH 13/17] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E9=A2=84=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E5=BA=93=E5=AD=98=E4=BA=A7=E5=93=81=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=BA=93=E5=AD=98=E4=BA=A7=E5=93=81=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=AF=A6=E6=83=85=EF=BC=9B=202.=E6=9B=B4=E6=94=B9=E9=A2=84?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E5=87=BA=E5=BA=93=E6=89=AB=E7=A0=81=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=B5=81=E7=A8=8B=EF=BC=9B=203.=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E9=A2=84=E9=AA=8C=E6=94=B6=E7=94=9F=E6=88=90=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=EF=BC=9B=204.=E6=96=B0=E5=A2=9E=E9=A2=84?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E5=87=BA=E5=BA=93=E5=90=8E=E7=94=9F=E6=88=90?= =?UTF-8?q?=E9=80=80=E8=B4=A7=E5=8D=95=EF=BC=9B=205.=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E9=A2=84=E9=AA=8C=E6=94=B6=E5=87=BA=E5=BA=93=E5=90=8E=E6=89=A3?= =?UTF-8?q?=E5=87=8F=E6=95=B0=E9=87=8F=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/glxp/api/constant/Constant.java | 2 + .../inout/IoCodeTempController.java | 26 +- .../inv/InvPreinProductController.java | 105 ++++++++ .../api/dao/inv/InvPreInProductDetailDao.java | 30 +++ .../glxp/api/dao/inv/InvPreinProductDao.java | 31 +++ .../basic/BasicBussinessTypeEntity.java | 4 + .../inv/InvPreInProductDetailEntity.java | 167 +++++++++++++ .../entity/inv/InvPreProductDetailEntity.java | 2 + .../api/entity/inv/InvPreinDetailEntity.java | 5 + .../api/entity/inv/InvPreinProductEntity.java | 133 ++++++++++ .../req/basic/BussinessTypeSaveRequest.java | 1 + .../req/inv/FilterInvPreinProductRequest.java | 101 ++++++++ .../res/basic/BasicBussinessTypeResponse.java | 2 +- .../api/res/inv/InvPreinDetailResponse.java | 72 +++++- .../api/res/inv/InvPreinProductResponse.java | 108 +++++++++ .../impl/BasicBussinessTypeServiceImpl.java | 6 +- .../service/inout/IoChangeInoutService.java | 6 +- .../service/inout/IoCheckInoutService.java | 228 +++++++++++++----- .../api/service/inout/IoGenInvService.java | 85 +++++-- .../service/inv/InvPreinDetailService.java | 5 + .../inv/InvPreinProductDetailService.java | 53 ++++ .../service/inv/InvPreinProductService.java | 49 ++++ .../InvPreInProductDetailServiceImpl.java | 135 +++++++++++ .../inv/impl/InvPreinDetailServiceImpl.java | 33 ++- .../inv/impl/InvPreinProductServiceImpl.java | 83 +++++++ src/main/resources/application-dev.yml | 4 +- .../mapper/basic/BasicBussinessTypeDao.xml | 4 +- .../mapper/inv/InvPreInProductDetailDao.xml | 77 ++++++ .../mybatis/mapper/inv/InvPreinProductDao.xml | 138 +++++++++++ src/main/resources/schemas/schema_v2.1.sql | 62 ++++- 30 files changed, 1635 insertions(+), 122 deletions(-) create mode 100644 src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java create mode 100644 src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java create mode 100644 src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java create mode 100644 src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java create mode 100644 src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java create mode 100644 src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java create mode 100644 src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java create mode 100644 src/main/java/com/glxp/api/service/inv/InvPreinProductService.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java create mode 100644 src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/inv/InvPreInProductDetailDao.xml create mode 100644 src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml diff --git a/src/main/java/com/glxp/api/constant/Constant.java b/src/main/java/com/glxp/api/constant/Constant.java index 794ffa0d..ade64717 100644 --- a/src/main/java/com/glxp/api/constant/Constant.java +++ b/src/main/java/com/glxp/api/constant/Constant.java @@ -235,10 +235,12 @@ public class Constant { * 发票登记界面: supInvoice * 出入库明细账 norDetail * 寄售出入库明细账 preDetail + * 预验收出入库明细账 preInDetail */ public static final String ORDER_ACTION_NOR_DETAIL = "norDetail"; public static final String ORDER_ACTION_PRE_DETAIL = "preDetail"; + public static final String ORDER_ACTION_PREIN_DETAIL = "preInDetail"; public static final String ORDER_ACTION_SUP_DELIVERY = "supDelivery"; public static final String ORDER_ACTION_SUP_INVOICE = "supInvoice"; public static final String ORDER_ACTION_SUP_DELAUDIT = "supDelAudit"; diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 25a23b89..dafe6455 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -452,8 +452,8 @@ public class IoCodeTempController extends BaseController { //校验预验收是否已存在 if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) { if (StrUtil.isNotEmpty(udiEntity.getSerialNo())) { - List invProductDetailEntities = invPreinDetailService.findUseByCode(code); - if (CollUtil.isNotEmpty(invProductDetailEntities)) { + int count = invPreinDetailService.findCountByCode(code); + if (count > 0) { return ResultVOUtils.error(500, "预验收库存已存在此UDI码,请检查后重试!"); } } @@ -461,31 +461,27 @@ public class IoCodeTempController extends BaseController { //校验预验收库存是否已存在 if (bussinessTypeEntity.isScanPreIn()) { - InvPreinDetailEntity invProductDetailEntity = invPreinDetailService.findUseOneByCode(code); - if (invProductDetailEntity == null) { - return ResultVOUtils.error(500, "预验收库存未存在此产品!"); + int preInCount = invPreinDetailService.findCountByCode(code); + InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findUseOneByCode(code); + if (preInCount <= 0) { + return ResultVOUtils.error(500, "预验收库存数量不足!"); } else { - if (StrUtil.isNotEmpty(invProductDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) - && !invProductDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { + if (StrUtil.isNotEmpty(invPreinDetailEntity.getBatchNo()) && StrUtil.isNotEmpty(addOrderRequest.getBatchNo()) + && !invPreinDetailEntity.getBatchNo().equals(addOrderRequest.getBatchNo())) { return ResultVOUtils.error(500, "当前批次号与预验收录入批次号不匹配!"); } if (StrUtil.isNotEmpty(orderId)) {//非首次添加 if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 //无序列号,则可能存在多个预验收入库单 IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code); - List invPreinDetailEntities = invPreinDetailService.findUseByCode(code); - int count = 0; - for (InvPreinDetailEntity temp : invPreinDetailEntities) { - count = count + temp.getCount(); - } if (codeTempEntity != null) { - if (count < (codeTempEntity.getMyCount() + 1)) { + if (preInCount < (codeTempEntity.getMyCount() + 1)) { return ResultVOUtils.error(500, "超出预验收库存数量"); } } } else { - if (invProductDetailEntity.getCount() < 1) { - return ResultVOUtils.error(500, "超出预验收库存数量"); + if (preInCount < 1) { + return ResultVOUtils.error(500, "预验收库存数量不足"); } } } diff --git a/src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java b/src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java new file mode 100644 index 00000000..a27de1ac --- /dev/null +++ b/src/main/java/com/glxp/api/controller/inv/InvPreinProductController.java @@ -0,0 +1,105 @@ +package com.glxp.api.controller.inv; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.res.inv.InvPreProductDetailResponse; +import com.glxp.api.res.inv.InvPreProductPageResponse; +import com.glxp.api.res.inv.InvPreinDetailResponse; +import com.glxp.api.res.inv.InvPreinProductResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.auth.WarehouseUserService; +import com.glxp.api.service.inv.InvPreinDetailService; +import com.glxp.api.service.inv.InvPreinProductDetailService; +import com.glxp.api.service.inv.InvPreinProductService; +import com.glxp.api.util.udi.FilterUdiUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * 预验收库存接口 + */ +@Slf4j +@RestController +public class InvPreinProductController { + @Resource + private InvPreinProductDetailService invPreinProductDetailService; + @Resource + private InvPreinProductService invPreinProductService; + @Resource + private WarehouseUserService warehouseUserService; + @Resource + private CustomerService customerService; + + /** + * 预验收库存查询接口 + * + * @param filterInvPreinProductRequest + * @return + */ + @GetMapping("/spms/inv/pre/in/product/filter") + public BaseResponse filterList(FilterInvPreinProductRequest filterInvPreinProductRequest) { + boolean showSup = false; //前端控制表格显示字段 + if (StrUtil.isNotBlank(filterInvPreinProductRequest.getUdiCode())) { + filterInvPreinProductRequest.setNameCode(FilterUdiUtils.getDiStr(filterInvPreinProductRequest.getUdiCode())); + } + + if (StrUtil.isBlank(filterInvPreinProductRequest.getInvCode())) { + List invCodes = warehouseUserService.selectCodeByUser(customerService.getUserIdStr()); + if (CollUtil.isNotEmpty(invCodes)) { + filterInvPreinProductRequest.setInvCodes(invCodes); + } + } + List list = invPreinProductService.filterList(filterInvPreinProductRequest); + PageInfo pageInfo = new PageInfo<>(list); + InvPreProductPageResponse pageResponse = new InvPreProductPageResponse<>(); + pageResponse.setList(pageInfo.getList()); + pageResponse.setTotal(pageInfo.getTotal()); + pageResponse.setShowSup(showSup); + return ResultVOUtils.success(pageResponse); + } + + /** + * 查询预验收库存详情 + * + * @param detailRequest + * @return + */ + @GetMapping("/spms/inv/pre/in/product/filterDetail") + public BaseResponse filterInvPreProductDetail(FilterInvPreProductDetailRequest detailRequest) { + List invPreProductDetailEntities = invPreinProductDetailService.filterPreProductDetailList(detailRequest); + PageInfo pageInfo = new PageInfo<>(invPreProductDetailEntities); + + List list = new ArrayList<>(); + if (CollUtil.isNotEmpty(invPreProductDetailEntities)) { + invPreProductDetailEntities.forEach(invPreProductDetailEntity -> { + InvPreProductDetailResponse response = new InvPreProductDetailResponse(); + BeanUtil.copyProperties(invPreProductDetailEntity, response); + //设置单据类型名称等单据相关参数 + invPreinProductDetailService.setOrderInfo(response); + list.add(response); + }); + } + + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setList(list); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + return ResultVOUtils.success(pageSimpleResponse); + } + + +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java new file mode 100644 index 00000000..f4d4e267 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java @@ -0,0 +1,30 @@ +package com.glxp.api.dao.inv; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; + +import java.util.List; + +/** + * 预验收库存详情Dao + */ +public interface InvPreInProductDetailDao extends BaseMapperPlus { + + /** + * 查询库存详情实体列表 + * + * @param filterInvPreProductDetailRequest + * @return + */ + List filterPreProductDetailList(FilterInvPreProductDetailRequest filterInvPreProductDetailRequest); + + /** + * 删除寄预验收库存详情 + * + * @param detailRequest + * @return + */ + boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); +} diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java new file mode 100644 index 00000000..546153ba --- /dev/null +++ b/src/main/java/com/glxp/api/dao/inv/InvPreinProductDao.java @@ -0,0 +1,31 @@ +package com.glxp.api.dao.inv; + +import com.glxp.api.dao.BaseMapperPlus; +import com.glxp.api.entity.inv.InvPreinProductEntity; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreinProductResponse; + +import java.util.List; + +/** + * 预验收库存Dao + */ +public interface InvPreinProductDao extends BaseMapperPlus { + + /** + * 查询寄售库存VO列表 + * + * @param invPreProductRequest + * @return + */ + List filterList(FilterInvPreinProductRequest invPreProductRequest); + + /** + * 查询寄售库存实体列表 + * + * @param invPreProductRequest + * @return + */ + List filterPreProductList(FilterInvPreinProductRequest invPreProductRequest); + +} diff --git a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java index de0de65f..62c8e854 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java @@ -397,4 +397,8 @@ public class BasicBussinessTypeEntity { private boolean checkCertExpire; + @TableField(value = "preInBackAction") + private String preInBackAction; + + } diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java new file mode 100644 index 00000000..ac07b29c --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreInProductDetailEntity.java @@ -0,0 +1,167 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 寄售库存详情表 + */ +@Data +@TableName(value = "inv_pre_product_detail") +public class InvPreInProductDetailEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * UDI码 + */ + @TableField(value = "code") + private String code; + + /** + * 出入单据类型 + */ + @TableField(value = "mainAction") + private String mainAction; + + /** + * 单据类型 + */ + @TableField(value = "`action`") + private String action; + + /** + * 订单号外键 + */ + @TableField(value = "orderId") + private String orderId; + + /** + * 耗材字典ID + */ + @TableField(value = "relId") + private Long relId; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "produceDate") + private String produceDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 序列号 + */ + @TableField(value = "serialNo") + private String serialNo; + + /** + * 供应商 + */ + @TableField(value = "supId") + private String supId; + + /** + * 扫码数量 + */ + @TableField(value = "`count`") + private int count; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private int reCount; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 货位编码 + */ + @TableField(value = "invSpaceCode") + private String invSpaceCode; + + /** + * 采购类型 + */ + @TableField(value = "purchaseType") + private Integer purchaseType; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + + + public static final String COL_ID = "id"; + + public static final String COL_CODE = "code"; + + public static final String COL_MAINACTION = "mainAction"; + + public static final String COL_ACTION = "action"; + + public static final String COL_ORDERID = "orderId"; + + public static final String COL_RELID = "relId"; + + public static final String COL_NAMECODE = "nameCode"; + + public static final String COL_BATCHNO = "batchNo"; + + public static final String COL_PRODUCEDATE = "produceDate"; + + public static final String COL_EXPIREDATE = "expireDate"; + + public static final String COL_SERIALNO = "serialNo"; + + public static final String COL_SUPID = "supId"; + + public static final String COL_COUNT = "count"; + + public static final String COL_RECOUNT = "reCount"; + + public static final String COL_DEPTCODE = "deptCode"; + + public static final String COL_INVCODE = "invCode"; + + public static final String COL_INVSPACECODE = "invSpaceCode"; + + public static final String COL_PURCHASETYPE = "purchaseType"; + + public static final String COL_UPDATETIME = "updateTime"; +} diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java index 133f3ffa..0d10cc4f 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPreProductDetailEntity.java @@ -125,6 +125,8 @@ public class InvPreProductDetailEntity { @TableField(value = "updateTime") private Date updateTime; + + public static final String COL_ID = "id"; public static final String COL_CODE = "code"; diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java index 52c5f353..4323eb25 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPreinDetailEntity.java @@ -91,4 +91,9 @@ public class InvPreinDetailEntity { @TableField(value = "status") private int status; + + @TableField(value = "mainAction") + private String mainAction; + @TableField(value = "action") + private String action; } diff --git a/src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java new file mode 100644 index 00000000..a144bb69 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/inv/InvPreinProductEntity.java @@ -0,0 +1,133 @@ +package com.glxp.api.entity.inv; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 预验收库存表 + */ +@Data +@TableName(value = "inv_prein_product") +public class InvPreinProductEntity { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 耗材字典ID + */ + @TableField(value = "relIdFk") + private Long relIdFk; + + /** + * 最小销售标识 + */ + @TableField(value = "nameCode") + private String nameCode; + + /** + * 批次号 + */ + @TableField(value = "batchNo") + private String batchNo; + + /** + * 生产日期 + */ + @TableField(value = "productionDate") + private String productionDate; + + /** + * 失效日期 + */ + @TableField(value = "expireDate") + private String expireDate; + + /** + * 入库数量 + */ + @TableField(value = "inCount") + private int inCount; + + /** + * 出库数量 + */ + @TableField(value = "outCount") + private int outCount; + + /** + * 实际数量 + */ + @TableField(value = "reCount") + private int reCount; + + /** + * 客户ID + */ + @TableField(value = "customerId") + private String customerId; + + /** + * 供应商ID + */ + @TableField(value = "supId") + private String supId; + + /** + * 部门编码 + */ + @TableField(value = "deptCode") + private String deptCode; + + /** + * 仓库编码 + */ + @TableField(value = "invCode") + private String invCode; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + public static final String COL_ID = "id"; + + public static final String COL_RELIDFK = "relIdFk"; + + public static final String COL_NAMECODE = "nameCode"; + + public static final String COL_BATCHNO = "batchNo"; + + public static final String COL_PRODUCTIONDATE = "productionDate"; + + public static final String COL_EXPIREDATE = "expireDate"; + + public static final String COL_INCOUNT = "inCount"; + + public static final String COL_OUTCOUNT = "outCount"; + + public static final String COL_RECOUNT = "reCount"; + + public static final String COL_CUSTOMERID = "customerId"; + + public static final String COL_SUPID = "supId"; + + public static final String COL_DEPTCODE = "deptCode"; + + public static final String COL_INVCODE = "invCode"; + + public static final String COL_CREATETIME = "createTime"; + + public static final String COL_UPDATETIME = "updateTime"; +} diff --git a/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java b/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java index d931c710..0184d7cd 100644 --- a/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java +++ b/src/main/java/com/glxp/api/req/basic/BussinessTypeSaveRequest.java @@ -298,6 +298,7 @@ public class BussinessTypeSaveRequest { private boolean checkVailDate; private boolean checkExpire; private boolean checkCertExpire; + private String preInBackAction; } diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java new file mode 100644 index 00000000..17d12d19 --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/FilterInvPreinProductRequest.java @@ -0,0 +1,101 @@ +package com.glxp.api.req.inv; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.util.List; + +/** + * 预验收库存查询参数 + */ +@Data +public class FilterInvPreinProductRequest extends ListPageRequest { + + private String id; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * UDI码 + */ + private String udiCode; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 失效日期 + */ + private String expireDate; + + /** + * 生产厂家 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商ID + */ + private String supId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 仓库数组 + */ + private List invCodes; + + /** + * 产品类别 + */ + private String cplb; + +} diff --git a/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java b/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java index 22dd694a..1daad368 100644 --- a/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java +++ b/src/main/java/com/glxp/api/res/basic/BasicBussinessTypeResponse.java @@ -147,5 +147,5 @@ public class BasicBussinessTypeResponse { private boolean checkVailDate; private boolean checkExpire; private boolean checkCertExpire; - + private String preInBackAction; } diff --git a/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java index bc8e413a..812217cb 100644 --- a/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvPreinDetailResponse.java @@ -1,10 +1,9 @@ package com.glxp.api.res.inv; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import java.util.Date; + @Data public class InvPreinDetailResponse { @@ -75,4 +74,71 @@ public class InvPreinDetailResponse { private String fromName; + /** + * 供应商 + */ + private String supId; + + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + + /** + * 货位编码 + */ + private String invSpaceCode; + + /** + * 采购类型 + */ + private Integer purchaseType; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 单据出入库类型 + */ + private String mainAction; + + /** + * 单据类型编码 + */ + private String action; + + /** + * 单据类型名称 + */ + private String actionName; + + /** + * 出入库类型中文字符串 + */ + private String mainActionStr; + + /** + * 入库数量 + */ + private Integer inCount; + + /** + * 出库数量 + */ + private Integer outCount; + + /** + * 单据日期 + */ + private String orderTime; + + } diff --git a/src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java b/src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java new file mode 100644 index 00000000..35940bb1 --- /dev/null +++ b/src/main/java/com/glxp/api/res/inv/InvPreinProductResponse.java @@ -0,0 +1,108 @@ +package com.glxp.api.res.inv; + +import lombok.Data; + +/** + * 预验收库存VO + */ +@Data +public class InvPreinProductResponse { + + private Integer id; + + /** + * 产品标识DI + */ + private String nameCode; + + /** + * 产品名称 + */ + private String cpmctymc; + + /** + * 耗材字典ID + */ + private String relIdFk; + + /** + * 规格型号 + */ + private String ggxh; + + /** + * 批次号 + */ + private String batchNo; + + /** + * 生产日期 + */ + private String productionDate; + + /** + * 过期时间 + */ + private String expireDate; + + /** + * 生产厂家名称 + */ + private String ylqxzcrbarmc; + + /** + * 批准文号 + */ + private String zczbhhzbapzbh; + + /** + * 入库数量 + */ + private int inCount; + + /** + * 出库数量 + */ + private int outCount; + + /** + * 实际数量 + */ + private int reCount; + + /** + * 客户ID + */ + private String customerId; + + /** + * 供应商名称 + */ + private String supName; + + /** + * 供应商ID + */ + private String supId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 仓库名称 + */ + private String invName; + + /** + * 部门编码 + */ + private String deptCode; + + /** + * 仓库编码 + */ + private String invCode; + +} 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 5d3719fc..b8d5c385 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 @@ -209,13 +209,17 @@ public class BasicBussinessTypeServiceImpl implements IBasicBussinessTypeService switch (vueType) { case Constant.ORDER_ACTION_NOR_DETAIL: bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() - .eq("actionType", 1).eq("inStock", true)); + .eq("actionType", 1).eq("inStock", true).eq("enable", true)); break; case Constant.ORDER_ACTION_PRE_DETAIL: bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() .eq("actionType", 3).eq("inStock", true).eq("enable", true)); break; + case Constant.ORDER_ACTION_PREIN_DETAIL: + bussinessTypeEntities = basicBussinessTypeDao.selectList(new QueryWrapper() + .eq("actionType", 2).eq("inStock", true).eq("enable", true)); + break; case Constant.ORDER_ACTION_SUP_DELIVERY: //允许送货单直接入库变更库存,则不判断送货单是否入库 String deliveryInstock = systemParamConfigService.selectValueByParamKey("deliveryInstock"); 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 e64170fb..f2e1da49 100644 --- a/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoChangeInoutService.java @@ -218,11 +218,7 @@ public class IoChangeInoutService { outOrder.setInvCode(invWarehouseEntity.getCode()); outOrder.setDeptCode(invWarehouseEntity.getParentId()); SystemParamConfigEntity systemParamConfigEntity = systemParamConfigService.selectByParamKey("additional_auto_submit"); - if ("1".equals(systemParamConfigEntity.getParamValue())) { - outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); - } else { - outOrder.setStatus(ConstantStatus.ORDER_STATUS_ADDITIONAL); - } + outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); //互填单号 orderEntity.setUllageSupNo(outOrder.getBillNo()); 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 90a8275d..6d229505 100644 --- a/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java +++ b/src/main/java/com/glxp/api/service/inout/IoCheckInoutService.java @@ -2,13 +2,16 @@ package com.glxp.api.service.inout; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.UUID; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.inout.*; +import com.glxp.api.entity.inv.InvInnerOrderPdfTempEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; import com.glxp.api.res.inout.IoOrderCheckResultResponse; import com.glxp.api.res.inout.IoOrderDetailBizResponse; @@ -16,18 +19,26 @@ import com.glxp.api.res.inout.IoOrderDetailCodeResponse; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.service.inv.InvPreinDetailService; import com.glxp.api.service.inv.InvPreinOrderService; +import com.glxp.api.util.CustomUtil; +import com.glxp.api.util.GennerOrderUtils; +import com.glxp.api.util.JasperUtils; +import com.glxp.api.util.OrderNoTypeBean; import com.glxp.api.util.udi.FilterUdiUtils; +import net.sf.jasperreports.engine.JRException; import org.springframework.beans.BeanUtils; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.IOException; import java.util.*; /** * 校验出入库服务 */ @Service +@Transactional(rollbackFor = Exception.class) public class IoCheckInoutService { @Resource @@ -48,6 +59,8 @@ public class IoCheckInoutService { InvPreinDetailService invPreinDetailService; @Resource IoGenInvService genInvService; + @Resource + IoAddInoutService addInoutService; //判断是否需要手动校验 public boolean checkManual(String billNo) { @@ -722,93 +735,172 @@ public class IoCheckInoutService { //校验完成后生成库存 public void genInv(IoOrderEntity orderEntity, BasicBussinessTypeEntity bussinessTypeEntity) { - //预验收出库,删掉对应预验收库存 if (bussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT) && bussinessTypeEntity.isScanPreIn()) { - List codeList = codeService.findByOrderId(orderEntity.getBillNo()); - - //找出UDI码对应的预验收入库单号 - Map preInOrder = new HashMap<>(); - for (IoCodeEntity warehouseEntity : codeList) { - List invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode()); - if (invProductDetailEntities.size() > 0) { - for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities) { - preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId()); - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_USE); - invPreinDetailService.update(invPreinDetailEntity); - } + ThreadUtil.execAsync(() -> { + + List codeList = codeService.findByOrderId(orderEntity.getBillNo()); + //找出UDI码对应的预验收入库单号 + Map preInOrder = new HashMap<>(); + for (IoCodeEntity warehouseEntity : codeList) { + List invProductDetailEntities = invPreinDetailService.findByCode(warehouseEntity.getCode()); + if (invProductDetailEntities.size() > 0) { + for (InvPreinDetailEntity invPreinDetailEntity : invProductDetailEntities) + preInOrder.put(invPreinDetailEntity.getOrderId(), invPreinDetailEntity.getOrderId()); + } } - } - if (preInOrder.size() > 0) { - - if (StrUtil.isEmpty(orderEntity.getRelKey())) { - orderEntity.setRelKey(UUID.fastUUID().toString(true)); - } - - String preInBillNo = ""; - boolean isBreak = false; - for (String key : preInOrder.keySet()) { - if (!isBreak) { - preInBillNo = preInBillNo + "," + key; - IoOrderEntity preInEntity = orderService.findByBillNo(key); - preInEntity.setPreOutBillNo(orderEntity.getBillNo()); - preInEntity.setRelKey(orderEntity.getRelKey()); - orderService.update(preInEntity); - BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction()); - //预验收不删除单号,方便后续查询 - if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; - invPreinDetailService.updateBack(preInEntity.getBillNo()); -// invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); - } else { //预验收如果不带回,则清除已出库相关库存 - for (IoCodeEntity codeEntity : codeList) { - if (StrUtil.isEmpty(codeEntity.getSerialNo())) { - InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); - if (invPreinDetailEntity != null) { - int count = 0; - if (invPreinDetailEntity.getCount() < codeEntity.getCount()) { - count = 0; - } else { - count = invPreinDetailEntity.getCount() - codeEntity.getCount(); - } - if (count >= 0) { - isBreak = true; - if (count == 0) { -// invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + if (preInOrder.size() > 0) { + String preInBillNo = ""; + boolean isBreak = false; + List backCodeList = new ArrayList<>(); + for (String key : preInOrder.keySet()) { + if (!isBreak) { + preInBillNo = preInBillNo + "," + key; + IoOrderEntity preInEntity = orderService.findByBillNo(key); + preInEntity.setPreOutBillNo(orderEntity.getBillNo()); + orderService.update(preInEntity); + BasicBussinessTypeEntity preBusType = basicBussinessTypeService.findByAction(preInEntity.getAction()); + //预验收不删除单号,方便后续查询 + if (preBusType.isPreInBack()) { //预验收如果带回,则清空相关预验收库存; + invPreinDetailService.deleteByOrderId(preInEntity.getBillNo()); + //剩余UDI码生成退货单 todo + List codeEntities = codeService.findByOrderId(preInBillNo); + backCodeList.addAll(codeEntities); + } else { //预验收如果不带回,则清除已出库相关库存 + for (IoCodeEntity codeEntity : codeList) { + if (StrUtil.isEmpty(codeEntity.getSerialNo())) { + InvPreinDetailEntity invPreinDetailEntity = invPreinDetailService.findByCode(key, codeEntity.getCode()); + if (invPreinDetailEntity != null) { + int count = 0; + if (invPreinDetailEntity.getCount() < codeEntity.getCount()) { + count = 0; } else { - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); - invPreinDetailEntity.setCount(count); - invPreinDetailService.update(invPreinDetailEntity); + count = invPreinDetailEntity.getCount() - codeEntity.getCount(); } - int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); - if (reCount == 0) { -// invPreinDetailService.deleteByCode(key, codeEntity.getCode()); - } else { - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); - invPreinDetailEntity.setReCount(reCount); - invPreinDetailService.update(invPreinDetailEntity); + if (count >= 0) { + isBreak = true; + if (count == 0) { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } else { + invPreinDetailEntity.setCount(count); + invPreinDetailService.update(invPreinDetailEntity); + } + int reCount = invPreinDetailEntity.getReCount() - codeEntity.getMyReCount(); + if (reCount == 0) { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } else { + invPreinDetailEntity.setReCount(reCount); + invPreinDetailService.update(invPreinDetailEntity); + } } } + } else { + invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } + } + + } + } + + + } + orderEntity.setPreInBillNo(preInBillNo.substring(1)); + orderService.update(orderEntity); + + //生成退货单 1.查出所有关联的单据条码,2.扣减当前出库数量;3.生成单据类型对应绑定的出库单 + if (CollUtil.isNotEmpty(backCodeList)) { + List realBackCodeList = new ArrayList<>(); + for (IoCodeEntity backCodeEntity : backCodeList) { + for (IoCodeEntity codeEntity : codeList) { + if (codeEntity.getCount() != 0 && backCodeEntity.getCode().equals(codeEntity.getCode())) { + int count = backCodeEntity.getCount() - codeEntity.getCount(); + int reCount = backCodeEntity.getReCount() - codeEntity.getReCount(); + if (count > 0) { + codeEntity.setCount(0); + codeEntity.setReCount(0); + backCodeEntity.setCount(count); + backCodeEntity.setReCount(reCount); + realBackCodeList.add(backCodeEntity); + } else if (count == 0) { + codeEntity.setCount(0); + codeEntity.setReCount(0); + } else if (count < 0) { + codeEntity.setCount(-count); + codeEntity.setReCount(-reCount); } + } + } - } else { -// invPreinDetailService.deleteByCode(key, codeEntity.getCode()); + } + if (CollUtil.isNotEmpty(realBackCodeList)) { + Map> backPreInOrder = new HashMap<>(); + for (IoCodeEntity codeEntity : codeList) { + List codeEntities = backPreInOrder.get(codeEntity.getOrderId()); + if (CollUtil.isEmpty(codeEntities)) { + codeEntities = new ArrayList<>(); } + codeEntities.add(codeEntity); + backPreInOrder.put(codeEntity.getOrderId(), codeEntities); } + for (String key : backPreInOrder.keySet()) { + IoOrderEntity originOrder = orderService.findByBillNo(key); + BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeService.findByAction(originOrder.getAction()); + if (StrUtil.isNotEmpty(basicBussinessTypeEntity.getPreInBackAction())) { + IoOrderEntity outOrder = new IoOrderEntity(); + BeanUtils.copyProperties(originOrder, outOrder); + outOrder.setId(null); + outOrder.setMainAction(ConstantType.TYPE_OUT); + outOrder.setAction(basicBussinessTypeEntity.getAction()); + outOrder.setCreateTime(new Date()); + outOrder.setFromType(ConstantStatus.FROM_CHANGE); + String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(basicBussinessTypeEntity.getPrefix()), "yyyyMMdd")); + outOrder.setBillNo(orderNo); + outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID); + outOrder.setCorpOrderId(CustomUtil.getId() + "x"); + outOrder.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); + originOrder.setUllageSupNo(outOrder.getBillNo()); + originOrder.setUpdateTime(new Date()); + orderService.update(originOrder); + outOrder.setOriginUllageSupNo(originOrder.getBillNo()); + outOrder.setCreateUser(null); + outOrder.setReviewUser(null); + orderService.insertOrder(outOrder); + + //生成条码 + List codeTempEntities = new ArrayList<>(); + for (IoCodeEntity warehouseEntity : backPreInOrder.get(key)) { + IoCodeTempEntity codeTempEntity = new IoCodeTempEntity(); + BeanUtils.copyProperties(warehouseEntity, codeTempEntity); + codeTempEntity.setId(null); + codeTempEntity.setOrderId(outOrder.getBillNo()); + codeTempEntity.setAction(outOrder.getAction()); + codeTempEntity.setMainAction(outOrder.getMainAction()); + codeTempEntity.setCreateTime(new Date()); + codeTempEntity.setUpdateTime(new Date()); + codeTempEntities.add(codeTempEntity); + } + codeTempService.insertBatch(codeTempEntities); + addInoutService.dealProcess(outOrder); + if (!checkManual(outOrder.getBillNo())) { + check(outOrder.getBillNo()); + } + + + } + } } } + } - } - orderEntity.setPreInBillNo(preInBillNo.substring(1)); - orderService.update(orderEntity); - } + }); } + //校验是否是不入库存单据 if (bussinessTypeEntity.isInStock()) { -// if (bussinessTypeEntity.getBusType() == ConstantStatus.BUS_TYPE_NORMAL) { //生成库存 if (bussinessTypeEntity.getActionType() == ConstantStatus.ACTION_TYPE_PREIN) { genInvService.genPreInInv(orderEntity.getBillNo()); @@ -825,6 +917,10 @@ public class IoCheckInoutService { } + // 预验收使用出库处理1.不带回扣库存;2.带回时生成退货出库单 + @Resource + GennerOrderUtils gennerOrderUtils; + public String checkId(IoOrderDetailBizEntity bizEntity, IoOrderDetailCodeEntity codeEntity) { 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 302e8404..b7dda8f0 100644 --- a/src/main/java/com/glxp/api/service/inout/IoGenInvService.java +++ b/src/main/java/com/glxp/api/service/inout/IoGenInvService.java @@ -119,6 +119,8 @@ public class IoGenInvService { InvPreProductService invPreProductService; @Resource InvPreProductDetailService invPreProductDetailService; + @Resource + InvPreinProductDetailService invPreinProductDetailService; //生成寄售库存 public void genPreInv(String orderId) { @@ -171,27 +173,78 @@ public class IoGenInvService { } + @Resource + InvPreinProductService invPreinProductService; + //生成预验收库存 public void genPreInInv(String orderId) { + + //入库预验收进入到实际在库码表 IoOrderEntity orderEntity = orderService.findByBillNo(orderId); - InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity(); - BeanUtils.copyProperties(orderEntity, invPreinOrderEntity); - invPreinOrderService.insert(invPreinOrderEntity); + if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { + InvPreinOrderEntity invPreinOrderEntity = new InvPreinOrderEntity(); + BeanUtils.copyProperties(orderEntity, invPreinOrderEntity); + invPreinOrderService.insert(invPreinOrderEntity); + List codeEnttities = codeService.findByOrderId(orderId); + List invPreinDetailEntities = new ArrayList<>(); + codeEnttities.forEach(codeEntity -> + { + InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity(); + BeanUtils.copyProperties(codeEntity, invPreinDetailEntity); + invPreinDetailEntity.setId(null); + invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); + invPreinDetailEntity.setOriginCount(codeEntity.getCount()); + invPreinDetailEntity.setOriginReCount(codeEntity.getReCount()); + invPreinDetailEntities.add(invPreinDetailEntity); + }); + invPreinDetailService.insertList(invPreinDetailEntities); + } + + //走正常流程,生成对应库存 +// 生成库存产品信息表 + List orderDetailResultEntities = orderDetailResultService.findByOrderId(orderId); + //生成库存产品表 + for (IoOrderDetailResultEntity orderDetailResultEntity : orderDetailResultEntities) { + InvPreinProductEntity invProductEntity = invPreinProductService.selectByUnique(orderDetailResultEntity.getBindRlFk(), orderDetailResultEntity.getBatchNo(), orderDetailResultEntity.getSupId(), orderEntity.getDeptCode(), orderEntity.getInvCode()); + if (invProductEntity == null) { + invProductEntity = new InvPreinProductEntity(); + invProductEntity.setRelIdFk(orderDetailResultEntity.getBindRlFk()); + invProductEntity.setNameCode(orderDetailResultEntity.getNameCode()); + invProductEntity.setBatchNo(orderDetailResultEntity.getBatchNo()); + invProductEntity.setProductionDate(orderDetailResultEntity.getProductDate()); + invProductEntity.setExpireDate(orderDetailResultEntity.getExpireDate()); + invProductEntity.setInCount(0); + invProductEntity.setOutCount(0); + invProductEntity.setSupId(orderDetailResultEntity.getSupId()); + invProductEntity.setDeptCode(orderEntity.getDeptCode()); + invProductEntity.setInvCode(orderEntity.getInvCode()); + invProductEntity.setCreateTime(new Date()); + invProductEntity.setUpdateTime(new Date()); + invPreinProductService.insert(invProductEntity); + } + if (orderEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + invProductEntity.setOutCount(invProductEntity.getOutCount() + orderDetailResultEntity.getReCount()); + } else if (orderEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { + invProductEntity.setInCount(invProductEntity.getInCount() + orderDetailResultEntity.getReCount()); + } + invProductEntity.setReCount(invProductEntity.getInCount() - invProductEntity.getOutCount()); + invProductEntity.setUpdateTime(new Date()); + invPreinProductService.update(invProductEntity); + } List codeEnttities = codeService.findByOrderId(orderId); - List invPreinDetailEntities = new ArrayList<>(); - codeEnttities.forEach(codeEntity -> - { - InvPreinDetailEntity invPreinDetailEntity = new InvPreinDetailEntity(); - BeanUtils.copyProperties(codeEntity, invPreinDetailEntity); - invPreinDetailEntity.setId(null); - invPreinDetailEntity.setStatus(ConstantStatus.INVIN_IN); - invPreinDetailEntity.setOriginCount(codeEntity.getCount()); - invPreinDetailEntity.setOriginReCount(codeEntity.getReCount()); - invPreinDetailEntities.add(invPreinDetailEntity); - }); - - invPreinDetailService.insertList(invPreinDetailEntities); + //生成库存码详情 + List invProductDetailEntities = new ArrayList<>(); + for (IoCodeEntity codeEntity : codeEnttities) { + InvPreInProductDetailEntity invProductDetailEntity = new InvPreInProductDetailEntity(); + BeanUtils.copyProperties(codeEntity, invProductDetailEntity); + invProductDetailEntity.setRelId(codeEntity.getRelId()); + invProductDetailEntity.setUpdateTime(new Date()); + invProductDetailEntity.setPurchaseType(ConstantStatus.PRUCHASE_COMMON); + invProductDetailEntities.add(invProductDetailEntity); + } + invPreinProductDetailService.insertList(invProductDetailEntities); + } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java index 2ded2a0c..d68c38eb 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPreinDetailService.java @@ -1,8 +1,12 @@ package com.glxp.api.service.inv; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; import com.glxp.api.req.inv.FilterInvPreinRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.res.inv.InvPreinOrderResponse; @@ -36,4 +40,5 @@ public interface InvPreinDetailService { int updateBack(String orderId); + int findCountByCode(String code); } diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java b/src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java new file mode 100644 index 00000000..e595b7c4 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreinProductDetailService.java @@ -0,0 +1,53 @@ +package com.glxp.api.service.inv; + +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.entity.inv.InvPreProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; + +import java.util.List; + +/** + * 预验收库存详情Service + */ +public interface InvPreinProductDetailService { + + int insert(InvPreInProductDetailEntity invPreInProductDetailEntity); + + boolean insertList(List invPreProductDetailEntities); + + List selectByOrderIdFk(String billNo); + + InvPreInProductDetailEntity selectByCode(String billNo, String code); + + boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity); + + boolean deleteById(String id); + + int deleteByOrderId(String billNo); + + /** + * 查询寄售库存详情列表 + * + * @param invPreProductDetailRequest + * @return + */ + List filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest); + + /** + * 设置单据类型名称等单据相关参数 + * + * @param response + */ + void setOrderInfo(InvPreProductDetailResponse response); + + /** + * 删除寄售库存详情 + * + * @param detailRequest + */ + boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest); + + +} diff --git a/src/main/java/com/glxp/api/service/inv/InvPreinProductService.java b/src/main/java/com/glxp/api/service/inv/InvPreinProductService.java new file mode 100644 index 00000000..70d71cc5 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/InvPreinProductService.java @@ -0,0 +1,49 @@ +package com.glxp.api.service.inv; + +import com.glxp.api.entity.inv.InvPreinProductEntity; +import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreinProductResponse; + +import java.util.List; + +/** + * 预验收库存Service + */ +public interface InvPreinProductService { + + int insert(InvPreinProductEntity invPreinProductEntity); + + + boolean update(InvPreinProductEntity invPreinProductEntity); + + InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode); + + boolean deleteById(Integer id); + + /** + * 查询寄售库存VO + * + * @param filterInvPreinDetailRequest + * @return + */ + List filterList(FilterInvPreinProductRequest filterInvPreinDetailRequest); + + /** + * 查询寄售库存列表 + * + * @param invPreProductRequest + * @return + */ + List filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest); + + /** + * 根据ID查询寄售库存信息 + * + * @param id + * @return + */ + InvPreinProductEntity findById(String id); + + boolean isExitByRelId(String relId); +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java new file mode 100644 index 00000000..e4b7c1be --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreInProductDetailServiceImpl.java @@ -0,0 +1,135 @@ +package com.glxp.api.service.inv.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.constant.ConstantType; +import com.glxp.api.dao.basic.BasicBussinessTypeDao; +import com.glxp.api.dao.basic.UdiProductDao; +import com.glxp.api.dao.inout.IoOrderDao; +import com.glxp.api.dao.inv.InvPreInProductDetailDao; +import com.glxp.api.dao.inv.InvPreProductDetailDao; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.IoOrderEntity; +import com.glxp.api.entity.inv.InvPreInProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; +import com.glxp.api.req.inv.FilterInvProductDetailRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; +import com.glxp.api.service.inv.InvPreProductDetailService; +import com.glxp.api.service.inv.InvPreinProductDetailService; +import com.glxp.api.util.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPreInProductDetailServiceImpl implements InvPreinProductDetailService { + + @Resource + private InvPreInProductDetailDao invPreInProductDetailDao; + @Resource + private BasicBussinessTypeDao bussinessTypeDao; + @Resource + private IoOrderDao orderDao; + @Resource + private UdiProductDao udiProductDao; + + @Override + public int insert(InvPreInProductDetailEntity invPreInProductDetailEntity) { + return invPreInProductDetailDao.insert(invPreInProductDetailEntity); + } + + @Override + public boolean insertList(List invPreProductDetailEntities) { + return invPreInProductDetailDao.insertBatch(invPreProductDetailEntities); + } + + @Override + public List selectByOrderIdFk(String billNo) { + if (StrUtil.isEmpty(billNo)) + return null; + List invProductDetailEntities = invPreInProductDetailDao.selectList(new QueryWrapper().eq("orderId", billNo)); + return invProductDetailEntities; + } + + @Override + public InvPreInProductDetailEntity selectByCode(String billNo, String code) { + List invProductDetailEntities = invPreInProductDetailDao.selectList + (new QueryWrapper().eq("code", code).eq("orderId", billNo)); + if (CollUtil.isNotEmpty(invProductDetailEntities)) + return invProductDetailEntities.get(0); + else + return null; + } + + @Override + public boolean update(InvPreInProductDetailEntity invPreInProductDetailEntity) { + return invPreInProductDetailDao.updateById(invPreInProductDetailEntity) == 1 ? true : false; + } + + @Override + public boolean deleteById(String id) { + return invPreInProductDetailDao.deleteById(id) == 1 ? true : false; + } + + @Override + public int deleteByOrderId(String billNo) { + return invPreInProductDetailDao.delete(new QueryWrapper().eq("orderId", billNo)); + } + + @Override + public List filterPreProductDetailList(FilterInvPreProductDetailRequest invPreProductDetailRequest) { + if (null == invPreProductDetailRequest) { + return Collections.emptyList(); + } + if (null != invPreProductDetailRequest.getPage() && null != invPreProductDetailRequest.getLimit()) { + PageHelper.offsetPage((invPreProductDetailRequest.getPage() - 1) * invPreProductDetailRequest.getLimit(), invPreProductDetailRequest.getLimit()); + } + return invPreInProductDetailDao.filterPreProductDetailList(invPreProductDetailRequest); + } + + @Override + public void setOrderInfo(InvPreProductDetailResponse response) { + //查询DI层级,根据DI层级设置数量取值 + Integer packLevel = udiProductDao.selectPackLevel(response.getNameCode()); + //设置出入库中文及出入库数量 + if (null != packLevel && packLevel != 1) { + //多级包装 + if (response.getMainAction().equals(ConstantType.TYPE_OUT)) { + response.setMainActionStr("出库"); + response.setOutCount(response.getReCount()); + } else { + response.setMainActionStr("入库"); + response.setInCount(response.getReCount()); + } + } else { + //单层包装 + if (response.getMainAction().equals(ConstantType.TYPE_OUT)) { + response.setMainActionStr("出库"); + response.setOutCount(response.getCount()); + } else { + response.setMainActionStr("入库"); + response.setInCount(response.getCount()); + } + } + //设置单据类型名称 + BasicBussinessTypeEntity busType = bussinessTypeDao.selectOne(new QueryWrapper().select("name").eq("action", response.getAction())); + response.setActionName(busType.getName()); + //设置单据日期 + IoOrderEntity order = orderDao.selectOne(new QueryWrapper().select("createTime").eq("billNo", response.getOrderId())); + response.setOrderTime(DateUtil.toDateStr(order.getCreateTime(), "yyyy-MM-dd HH:mm:ss")); + } + + @Override + public boolean deleteInvPreProductDetail(FilterInvProductDetailRequest detailRequest) { + return invPreInProductDetailDao.deleteInvPreProductDetail(detailRequest); + } + +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java index 633a4e66..b2b773a0 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinDetailServiceImpl.java @@ -4,13 +4,21 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.constant.ConstantType; import com.glxp.api.dao.inv.InvPreinDetailDao; import com.glxp.api.dao.inv.InvPreinOrderDao; +import com.glxp.api.entity.basic.BasicBussinessTypeEntity; +import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.entity.inv.InvPreProductDetailEntity; import com.glxp.api.entity.inv.InvPreinDetailEntity; +import com.glxp.api.entity.inv.InvProductDetailEntity; +import com.glxp.api.req.inv.FilterInvPreProductDetailRequest; import com.glxp.api.req.inv.FilterInvPreinDetailRequest; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreProductDetailResponse; import com.glxp.api.res.inv.InvPreinDetailResponse; import com.glxp.api.service.inv.InvPreinDetailService; +import com.glxp.api.util.DateUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -60,15 +68,6 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService { public List findByCode(String code) { return invPreinDetailDao.selectList(new QueryWrapper().eq("code", code)); } -// -// @Override -// public InvPreinDetailEntity findOneByCode(String code) { -// List invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper().eq("code", code).last("limit 1")); -// if (CollUtil.isNotEmpty(invPreinDetailEntities)) { -// return invPreinDetailEntities.get(0); -// } -// return null; -// } @Override public int deleteByOrderId(String orderId) { @@ -110,5 +109,21 @@ public class InvPreinDetailServiceImpl implements InvPreinDetailService { return 1; } + @Override + public int findCountByCode(String code) { + List invPreinDetailEntities = invPreinDetailDao.selectList(new QueryWrapper().eq("code", code)); + int count = 0; + if (CollUtil.isNotEmpty(invPreinDetailEntities)) { + for (InvPreinDetailEntity invProductDetailEntity : invPreinDetailEntities) { + if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) + count = count + invProductDetailEntity.getReCount(); + else { + count = count - invProductDetailEntity.getReCount(); + } + } + } + return count; + } + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java new file mode 100644 index 00000000..fa195182 --- /dev/null +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPreinProductServiceImpl.java @@ -0,0 +1,83 @@ +package com.glxp.api.service.inv.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.inv.InvPreinProductDao; +import com.glxp.api.entity.inv.InvPreinProductEntity; +import com.glxp.api.req.inv.FilterInvPreinProductRequest; +import com.glxp.api.res.inv.InvPreinProductResponse; +import com.glxp.api.service.inv.InvPreinProductService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class InvPreinProductServiceImpl implements InvPreinProductService { + + @Resource + private InvPreinProductDao invPreinProductDao; + + @Override + public int insert(InvPreinProductEntity invPreinProductEntity) { + return invPreinProductDao.insert(invPreinProductEntity); + } + + @Override + public boolean update(InvPreinProductEntity invPreinProductEntity) { + return invPreinProductDao.updateById(invPreinProductEntity) == 1 ? true : false; + } + + @Override + public InvPreinProductEntity selectByUnique(Long relId, String batchNo, String supId, String deptCode, String invCode) { + return invPreinProductDao.selectOne(new QueryWrapper().eq("relIdFk", relId).eq(StrUtil.isNotEmpty(batchNo), "batchNo", batchNo) + .isNull(StrUtil.isEmpty(batchNo), "batchNo").eq("supId", supId).eq("deptCode", deptCode).eq("invCode", invCode)); + + } + + @Override + public boolean deleteById(Integer id) { + return invPreinProductDao.deleteById(id) == 1 ? true : false; + } + + @Override + public List filterList(FilterInvPreinProductRequest invPreProductRequest) { + if (null == invPreProductRequest) { + return Collections.emptyList(); + } + if (null != invPreProductRequest.getPage()) { + PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit()); + } + return invPreinProductDao.filterList(invPreProductRequest); + } + + @Override + public List filterPreinProductList(FilterInvPreinProductRequest invPreProductRequest) { + if (null == invPreProductRequest) { + return Collections.emptyList(); + } + if (null != invPreProductRequest.getPage() && null != invPreProductRequest.getLimit()) { + PageHelper.offsetPage((invPreProductRequest.getPage() - 1) * invPreProductRequest.getLimit(), invPreProductRequest.getLimit()); + } + return invPreinProductDao.filterPreProductList(invPreProductRequest); + } + + @Override + public InvPreinProductEntity findById(String id) { + return invPreinProductDao.selectById(id); + } + + + @Override + public boolean isExitByRelId(String relId) { + return invPreinProductDao.exists(new QueryWrapper().eq("relIdFk", relId)); + + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 79ecbc91..eed086a0 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,8 +2,8 @@ server: port: 9993 spring: datasource: - driver-class-name: com.mysql.cj.jdbc.Driver - jdbc-url: jdbc:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true + driver-class-name: com.p6spy.engine.spy.P6SpyDriver + jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_spms?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 hikari: diff --git a/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml b/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml index 3c4e93d7..16b81750 100644 --- a/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml +++ b/src/main/resources/mybatis/mapper/basic/BasicBussinessTypeDao.xml @@ -70,7 +70,7 @@ vailGroupBuy, busType, inStock, actionType, thrCheckEnable, thrCheckWebNew, thrCheckPdaUn, thrCheckPdaEd, thrCheckUdims, thrCheckPc, thrCheckSp, thrCheckChange, thrCheckBalance, thrCheckCopy, fillCodeRel, checkVailDate, - checkExpire, checkCertExpire) + checkExpire, checkCertExpire,preInBackAction) values (#{mainAction}, #{action}, #{name}, #{enable}, #{remark}, #{thirdSysFk}, #{genUnit}, #{innerOrder}, #{secCheckEnable}, #{checkEnable}, #{checkUdims}, #{checkPdaEd}, #{checkPdaUn}, #{checkPc}, #{checkWebNew}, #{checkSp}, #{checkChange}, #{secCheckUdims}, #{secCheckPdaEd}, #{secCheckPdaUn}, @@ -82,7 +82,7 @@ #{vailGroupBuy}, #{busType}, #{inStock}, #{actionType}, #{thrCheckEnable}, #{thrCheckWebNew}, #{thrCheckPdaUn}, #{thrCheckPdaEd}, #{thrCheckUdims}, #{thrCheckPc}, #{thrCheckSp}, #{thrCheckChange}, #{thrCheckBalance}, #{thrCheckCopy}, #{fillCodeRel}, #{checkVailDate}, - #{checkExpire}, #{checkCertExpire}) + #{checkExpire}, #{checkCertExpire},#{preInBackAction}) + select * + from inv_prein_product_detail + + + AND code = #{code} + + + AND mainAction = #{mainAction} + + + AND action = #{action} + + + and supId = #{supId} + + + AND relId = #{relId} + + + AND nameCode like concat('%', #{nameCode}, '%') + + + AND orderId = #{orderId} + + + AND deptCode = #{deptCode} + + + AND invCode = #{invCode} + + + AND invSpaceCode = #{invSpaceCode} + + + AND batchNo = #{batchNo} + + + AND batchNo is null + + + AND relId in + + #{item} + + + + AND updateTime #{updateTime} + + + + + + delete + from inv_prein_product_detail + + + AND relId = #{relId} + + + AND batchNo = #{batchNo} + + + AND batchNo is null + + + AND supId = #{supId} + + + AND invCode = #{invCode} + + + + diff --git a/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml new file mode 100644 index 00000000..fa398454 --- /dev/null +++ b/src/main/resources/mybatis/mapper/inv/InvPreinProductDao.xml @@ -0,0 +1,138 @@ + + + + + + + diff --git a/src/main/resources/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index dfde2a43..01675371 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -28,7 +28,6 @@ CALL Pro_Temp_ColumnWork('thr_products', 'createTime', 'varchar(255) ', 1); - CALL Pro_Temp_ColumnWork('auth_warehouse', 'advanceType', 'tinyint', 1); CALL Pro_Temp_ColumnWork('auth_warehouse', 'spUse', 'tinyint', 1); @@ -65,7 +64,7 @@ CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'fillCodeRel', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkVailDate', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkExpire', 'tinyint', 1); CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'checkCertExpire', 'tinyint', 1); - +CALL Pro_Temp_ColumnWork('basic_bussiness_type', 'preInBackAction', 'varchar(255) ', 1); CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'batchNo', 'varchar(255) ', 1); CALL Pro_Temp_ColumnWork('pur_delivery_detail', 'productDate', 'varchar(255) ', 1); @@ -109,6 +108,9 @@ CALL Pro_Temp_ColumnWork('inv_prein_detail', 'status', 'tinyint', 1); CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originCount', 'int', 1); CALL Pro_Temp_ColumnWork('inv_prein_detail', 'originReCount', 'int', 1); +CALL Pro_Temp_ColumnWork('inv_prein_detail', 'mainAction', 'varchar(255)', 1); +CALL Pro_Temp_ColumnWork('inv_prein_detail', 'action', 'varchar(255)', 1); + CALL Pro_Temp_ColumnWork('io_code_lost', 'nameCode', 'varchar(255)', 1); INSERT ignore INTO `sys_param_config`(`id`, `parentId`, `paramName`, `paramKey`, `paramValue`, `paramStatus`, @@ -154,3 +156,59 @@ CALL Pro_Temp_ColumnWork('sync_data_set', 'basicDept', 'tinyint', 1); # CALL Pro_Temp_ColumnWork('sup_cert_set', 'needForeign', 'tinyint', 1); +CREATE TABLE IF NOT EXISTS `inv_prein_product` +( + `id` int NOT NULL AUTO_INCREMENT, + `relIdFk` bigint NULL DEFAULT NULL COMMENT '耗材字典ID', + `nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识', + `batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `productionDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期', + `expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期', + `inCount` int NULL DEFAULT NULL COMMENT '入库数量', + `outCount` int NULL DEFAULT NULL COMMENT '出库数量', + `reCount` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '实际数量', + `customerId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '客户ID', + `supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商ID', + `deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '部门编码', + `invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '仓库编码', + `createTime` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + CHARACTER SET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存表' + ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1; + + + +CREATE TABLE IF NOT EXISTS `inv_prein_product_detail` +( + `id` int NOT NULL AUTO_INCREMENT, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT 'UDI码', + `mainAction` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '出入单据类型', + `action` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '单据类型', + `orderId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '订单号外键', + `relId` int NOT NULL COMMENT '耗材字典ID', + `nameCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最小销售标识', + `batchNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '批次号', + `produceDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '生产日期', + `expireDate` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '失效日期', + `serialNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '序列号', + `supId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '供应商', + `count` int NULL DEFAULT NULL COMMENT '扫码数量', + `reCount` int NULL DEFAULT NULL COMMENT '实际数量', + `deptCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '部门编码', + `invCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '仓库编码', + `invSpaceCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货位编码', + `purchaseType` tinyint NULL DEFAULT NULL COMMENT '采购类型', + `updateTime` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + CHARACTER SET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT = '预验收库存详情表' + ROW_FORMAT = DYNAMIC; + + + From 0de4f1a2e4766156083a06a20a131aa450c163fe Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sun, 16 Apr 2023 15:55:33 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sync/SyncDataSetController.java | 29 +++++-- .../dao/sync/SyncDataChangeBustypesDao.java | 7 ++ .../api/dao/system/SyncDataBustypeDao.java | 4 +- .../entity/sync/SyncDataBustypeEntity.java | 17 ++++- .../sync/SyncDataChangeBustypesEntity.java | 31 ++++++++ .../api/entity/sync/SyncDataSetEntity.java | 75 +++++++++++-------- .../api/res/system/SyncDataSetResponse.java | 63 +++++++++------- .../service/sync/SyncDataBustypeService.java | 4 +- .../sync/SyncDataChangeBustypeService.java | 19 +++++ .../sync/impl/SyncDataBustypeServiceImpl.java | 10 ++- .../SyncDataChangeBustypeServiceImpl.java | 44 +++++++++++ .../sync/impl/SyncDataSetServiceImpl.java | 10 ++- .../mapper/sync/SyncDataChangeBustypesDao.xml | 17 +++++ .../mapper/system/SyncDataBustypeDao.xml | 13 +--- src/main/resources/schemas/schema_v2.1.sql | 4 +- 15 files changed, 258 insertions(+), 89 deletions(-) create mode 100644 src/main/java/com/glxp/api/dao/sync/SyncDataChangeBustypesDao.java create mode 100644 src/main/java/com/glxp/api/entity/sync/SyncDataChangeBustypesEntity.java create mode 100644 src/main/java/com/glxp/api/service/sync/SyncDataChangeBustypeService.java create mode 100644 src/main/java/com/glxp/api/service/sync/impl/SyncDataChangeBustypeServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/sync/SyncDataChangeBustypesDao.xml 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 05884b9e..65eace4a 100644 --- a/src/main/java/com/glxp/api/controller/sync/SyncDataSetController.java +++ b/src/main/java/com/glxp/api/controller/sync/SyncDataSetController.java @@ -2,16 +2,17 @@ package com.glxp.api.controller.sync; import cn.hutool.core.collection.CollUtil; import com.glxp.api.annotation.AuthRuleAnnotation; -import com.glxp.api.common.enums.ResultEnum; -import com.glxp.api.common.res.BaseResponse; -import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.entity.sync.SyncDataBustypeEntity; import com.glxp.api.entity.sync.SyncDataSetEntity; import com.glxp.api.res.system.SyncDataSetResponse; import com.glxp.api.service.sync.SyncDataBustypeService; +import com.glxp.api.service.sync.SyncDataChangeBustypeService; import com.glxp.api.service.sync.SyncDataSetService; import com.glxp.api.util.RedisUtil; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.Date; import java.util.List; @RestController @@ -31,6 +33,8 @@ public class SyncDataSetController { @Resource private SyncDataBustypeService syncDataBustypeService; @Resource + private SyncDataChangeBustypeService syncDataChangeBustypeService; + @Resource private RedisUtil redisUtil; @@ -54,11 +58,24 @@ public class SyncDataSetController { ) { SyncDataSetEntity syncDataSetEntity = new SyncDataSetEntity(); BeanUtils.copyProperties(syncDataSetResponse, syncDataSetEntity); + syncDataSetEntity.setUpdateTime(new Date()); + syncDataSetEntity.setId(1); List 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()); + } + boolean b = syncDataSetService.insert(syncDataSetEntity); if (syncDataSetResponse.getDelaySyncTime() != null && syncDataSetResponse.getDelaySyncTime() > 0) { @@ -70,6 +87,4 @@ public class SyncDataSetController { } return ResultVOUtils.success(); } - - } diff --git a/src/main/java/com/glxp/api/dao/sync/SyncDataChangeBustypesDao.java b/src/main/java/com/glxp/api/dao/sync/SyncDataChangeBustypesDao.java new file mode 100644 index 00000000..ba4a6d22 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/sync/SyncDataChangeBustypesDao.java @@ -0,0 +1,7 @@ +package com.glxp.api.dao.sync; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity; + +public interface SyncDataChangeBustypesDao extends BaseMapper { +} diff --git a/src/main/java/com/glxp/api/dao/system/SyncDataBustypeDao.java b/src/main/java/com/glxp/api/dao/system/SyncDataBustypeDao.java index 5643c2f8..9196f3ac 100644 --- a/src/main/java/com/glxp/api/dao/system/SyncDataBustypeDao.java +++ b/src/main/java/com/glxp/api/dao/system/SyncDataBustypeDao.java @@ -1,5 +1,6 @@ package com.glxp.api.dao.system; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.sync.SyncDataBustypeEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -7,11 +8,10 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface SyncDataBustypeDao { +public interface SyncDataBustypeDao extends BaseMapper { List findAll(); - boolean deleteAll(); void inserts(@Param("syncDataBustypeEntities") List syncDataBustypeEntities); diff --git a/src/main/java/com/glxp/api/entity/sync/SyncDataBustypeEntity.java b/src/main/java/com/glxp/api/entity/sync/SyncDataBustypeEntity.java index 091f6955..335f5a60 100644 --- a/src/main/java/com/glxp/api/entity/sync/SyncDataBustypeEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/SyncDataBustypeEntity.java @@ -1,14 +1,27 @@ package com.glxp.api.entity.sync; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +/** + * 同步数据扫码单据类型 + */ @Data +@TableName(value = "sync_data_bustypes") public class SyncDataBustypeEntity { - + @TableId(value = "id", type = IdType.AUTO) private Integer id; + @TableField(value = "`action`") private String action; + @TableField(value = "`name`") private String name; + @TableField(value = "`outChange`") private boolean outChange; + @TableField(value = "`orderStatus`") private Integer orderStatus; //单据状态 - + @TableField(value = "`direct`") + private int direct; //1:UDI管理系统->SPMS 2:SPMS->UDI管理系统 } diff --git a/src/main/java/com/glxp/api/entity/sync/SyncDataChangeBustypesEntity.java b/src/main/java/com/glxp/api/entity/sync/SyncDataChangeBustypesEntity.java new file mode 100644 index 00000000..b8245d1b --- /dev/null +++ b/src/main/java/com/glxp/api/entity/sync/SyncDataChangeBustypesEntity.java @@ -0,0 +1,31 @@ +package com.glxp.api.entity.sync; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 单据同步 - 业务单据类型 + */ +@Data +@TableName(value = "sync_data_change_bustypes") +public class SyncDataChangeBustypesEntity { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField(value = "`action`") + private String action; + + @TableField(value = "`name`") + private String name; + + @TableField(value = "outChange") + private boolean outChange; + + @TableField(value = "orderStatus") + private Integer orderStatus; + +} diff --git a/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java b/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java index 104661f1..432c979c 100644 --- a/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/SyncDataSetEntity.java @@ -2,47 +2,62 @@ package com.glxp.api.entity.sync; import lombok.Data; +import java.util.Date; import java.util.List; @Data public class SyncDataSetEntity { private Integer id; - private boolean typeBus; - private boolean typeScan; - private boolean typeThird; - private boolean basicProducts; - private boolean basicCorp; - private boolean basicInv; - private boolean basicType; - private boolean basicDept; - - private boolean basicThirdProducts; - private boolean basicThirdCorp; - private boolean basicThirdInv; - private boolean basicThirdBusOrder; - private boolean dbDiProducts; - private boolean downstreamEnable; - private boolean orderScanFinish; - private boolean orderUnReceive; - private boolean orderUnCheck; + private int typeBus; //业务单据类型 + private int typeScan; //扫码单据类型 + private int typeThird; //第三方单据类型 + private int basicProducts; //耗材字典 + private int basicCorp; //往来单位字典 + private int basicDept; //部门字典 + private int basicInv; //仓库字典 + private int basicThirdProducts; //第三方产品信息 + private int basicThirdCorp; //第三方往来信息 + private int basicThirdInv; //第三方仓库信息 + private int basicThirdBusOrder; //第三方业务单据 + private int dbDiProducts; //DI产品信息 + private boolean downstreamEnable; //上游是否联通 + private Integer syncTime; //数据上传间隔时间 + private Integer syncDownloadTime; //数据下载间隔时间 + + private int sysUser; //系统用户信息 + private int entrustAction; //委托验收设置 + private int systemConfig; //系统参数设置 + private int printConfig; //打印设置 + private int scanChangeConfig; //自动建出入库单设置 + private int busChangeConfig; //自动建业务单设置 + + + private int orderScanFinish; //已完成单据 + private int orderUnReceive; //未验收单据 + private int orderUnCheck; //待校验单据 + + private int supCert; //首营资质证书 + + private String syncIp; //上级服务地址 + private Integer orderSyncTime; //单据向外同步时间 + private Integer orderSyncDlTime; //单据向内同步时间 + private Integer orderToInSyncTime; //单据向内同步时间 + private Integer delaySyncTime; + + + private int unCheckCert; + private int checkedCert; private String busTypes; - private boolean sysUser; - - private Integer syncTime; - - private Integer orderSyncTime; private String orderSyncStart; private String basicSyncStart; - private boolean entrustAction; + + private Date updateTime; - private boolean unCheckCert; - private boolean checkedCert; - private boolean companyCert; - private boolean manufacturerCert; - private boolean productCert; + private int companyCert; + private int manufacturerCert; + private int productCert; - private String syncIp; } 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 e7a67ac5..97281a91 100644 --- a/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java +++ b/src/main/java/com/glxp/api/res/system/SyncDataSetResponse.java @@ -1,6 +1,7 @@ package com.glxp.api.res.system; import com.glxp.api.entity.sync.SyncDataBustypeEntity; +import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity; import lombok.Data; import java.util.List; @@ -8,43 +9,47 @@ import java.util.List; @Data public class SyncDataSetResponse { private Integer id; - private boolean typeBus; - private boolean typeScan; - private boolean typeThird; - private boolean basicProducts; - private boolean basicCorp; - private boolean basicInv; - private boolean basicThirdProducts; - private boolean basicThirdCorp; - private boolean basicThirdInv; - private boolean basicThirdBusOrder; - - private boolean basicType; - private boolean basicDept; - - private boolean dbDiProducts; + private int typeBus; //0:不传输,1:由内向外,2:由外向内 + private int typeScan; + private int typeThird; + private int basicProducts; + private int basicCorp; + private int basicInv; + private int basicDept; + private int basicThirdProducts; + private int basicThirdCorp; + private int basicThirdInv; + private int basicThirdBusOrder; + private int dbDiProducts; private boolean downstreamEnable; - private boolean orderScanFinish; - private boolean orderUnReceive; - private boolean orderUnCheck; + private int orderScanFinish; + private int orderUnReceive; + private int orderUnCheck; private Integer syncTime; private String syncIp; private Integer syncDownloadTime; //定时下载时间 - private boolean sysUser; + private int sysUser; - private List busTypes; + 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/sync/SyncDataBustypeService.java b/src/main/java/com/glxp/api/service/sync/SyncDataBustypeService.java index 80569777..9fdcc0b5 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/SyncDataChangeBustypeService.java b/src/main/java/com/glxp/api/service/sync/SyncDataChangeBustypeService.java new file mode 100644 index 00000000..8d2c2e37 --- /dev/null +++ b/src/main/java/com/glxp/api/service/sync/SyncDataChangeBustypeService.java @@ -0,0 +1,19 @@ +package com.glxp.api.service.sync; + + +import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity; + +import java.util.List; + +/** + * 单据同步 - 业务单据类型 Service + */ +public interface SyncDataChangeBustypeService { + + List findAll(); + + boolean deleteAll(); + + void inserts(List syncDataChangeBustypesEntities); + +} 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 97f99660..629ca552 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.system.SyncDataBustypeDao; import com.glxp.api.entity.sync.SyncDataBustypeEntity; import com.glxp.api.service.sync.SyncDataBustypeService; @@ -13,17 +14,18 @@ import java.util.List; @Transactional(rollbackFor = Exception.class) public class SyncDataBustypeServiceImpl implements SyncDataBustypeService { + @Resource SyncDataBustypeDao syncDataBustypeDao; @Override - public List 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/SyncDataChangeBustypeServiceImpl.java b/src/main/java/com/glxp/api/service/sync/impl/SyncDataChangeBustypeServiceImpl.java new file mode 100644 index 00000000..5cb7b012 --- /dev/null +++ b/src/main/java/com/glxp/api/service/sync/impl/SyncDataChangeBustypeServiceImpl.java @@ -0,0 +1,44 @@ +package com.glxp.api.service.sync.impl; + +import cn.hutool.core.collection.CollUtil; +import com.glxp.api.dao.sync.SyncDataChangeBustypesDao; +import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity; +import com.glxp.api.service.sync.SyncDataChangeBustypeService; +import org.apache.ibatis.session.ExecutorType; +import org.apache.ibatis.session.SqlSession; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.session.TransactionIsolationLevel; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +@Service +@Transactional(rollbackFor = Exception.class) +public class SyncDataChangeBustypeServiceImpl implements SyncDataChangeBustypeService { + + @Resource + private SyncDataChangeBustypesDao syncDataChangeBustypesDao; + @Resource + private SqlSessionFactory sqlSessionFactory; + + @Override + public List findAll() { + return syncDataChangeBustypesDao.selectList(null); + } + + @Override + public boolean deleteAll() { + syncDataChangeBustypesDao.delete(null); + return true; + } + + @Override + public void inserts(List syncDataChangeBustypesEntities) { + if (CollUtil.isNotEmpty(syncDataChangeBustypesEntities)) { + SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, TransactionIsolationLevel.READ_COMMITTED); + syncDataChangeBustypesEntities.forEach(item -> syncDataChangeBustypesDao.insert(item)); + } + } +} 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 527428f6..7e03201a 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 @@ -2,9 +2,11 @@ package com.glxp.api.service.sync.impl; import com.glxp.api.dao.sync.SyncDataSetDao; import com.glxp.api.entity.sync.SyncDataBustypeEntity; +import com.glxp.api.entity.sync.SyncDataChangeBustypesEntity; import com.glxp.api.entity.sync.SyncDataSetEntity; import com.glxp.api.res.system.SyncDataSetResponse; import com.glxp.api.service.sync.SyncDataBustypeService; +import com.glxp.api.service.sync.SyncDataChangeBustypeService; import com.glxp.api.service.sync.SyncDataSetService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -21,6 +23,8 @@ public class SyncDataSetServiceImpl implements SyncDataSetService { SyncDataSetDao syncDataSetDao; @Resource SyncDataBustypeService syncDataBustypeService; + @Resource + private SyncDataChangeBustypeService syncDataChangeBustypeService; @Override public SyncDataSetEntity findSet() { @@ -33,8 +37,12 @@ public class SyncDataSetServiceImpl implements SyncDataSetService { SyncDataSetEntity syncDataSetEntity = syncDataSetDao.selectSet(); SyncDataSetResponse syncDataSetResponse = new SyncDataSetResponse(); BeanUtils.copyProperties(syncDataSetEntity, syncDataSetResponse); - List 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/resources/mybatis/mapper/sync/SyncDataChangeBustypesDao.xml b/src/main/resources/mybatis/mapper/sync/SyncDataChangeBustypesDao.xml new file mode 100644 index 00000000..8318bfba --- /dev/null +++ b/src/main/resources/mybatis/mapper/sync/SyncDataChangeBustypesDao.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + id, `action`, `name`, outChange, orderStatus + + diff --git a/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml b/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml index 9850a0e7..00188394 100644 --- a/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml +++ b/src/main/resources/mybatis/mapper/system/SyncDataBustypeDao.xml @@ -2,8 +2,6 @@ - - - - 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/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index 01675371..73785837 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -127,6 +127,8 @@ CALL Pro_Temp_ColumnWork('inv_remind_msg', 'remindCount', 'int', 1); CALL Pro_Temp_ColumnWork('sup_cert_remind_msg', 'remindCount', 'int', 1); CALL Pro_Temp_ColumnWork('sync_data_bustypes', 'orderStatus', 'tinyint', 1); +CALL Pro_Temp_ColumnWork('sync_data_bustypes', 'direct', 'tinyint', 1); + CALL Pro_Temp_ColumnWork('sup_manufacturer', 'agentName', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('sys_pdf_module', 'modelKey', 'varchar(255)', 1); @@ -151,7 +153,7 @@ 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('sup_cert_set', 'foreign', 'tinyint', 3); # CALL Pro_Temp_ColumnWork('sup_cert_set', 'needForeign', 'tinyint', 1); From 5f504c17f1177525cb5184433c66369b4d8e54ad Mon Sep 17 00:00:00 2001 From: anthonywj Date: Sun, 16 Apr 2023 16:21:34 +0800 Subject: [PATCH 15/17] =?UTF-8?q?sql=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/schemas/schema_v2.1.sql | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/resources/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index 73785837..62ec0da4 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -154,6 +154,14 @@ 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); @@ -213,4 +221,20 @@ CREATE TABLE IF NOT EXISTS `inv_prein_product_detail` ROW_FORMAT = DYNAMIC; +CREATE TABLE IF NOT EXISTS `sync_data_change_bustypes` +( + `id` int NOT NULL AUTO_INCREMENT, + `action` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `outChange` tinyint NULL DEFAULT NULL, + `orderStatus` tinyint NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 128 + CHARACTER SET = utf8mb4 + COLLATE = utf8mb4_0900_ai_ci COMMENT = '单据同步 - 业务单据类型' + ROW_FORMAT = DYNAMIC; + + + From 87febc48c5faf95e336b080ef07864ef2b723106 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sun, 16 Apr 2023 17:10:12 +0800 Subject: [PATCH 16/17] status --- .../api/idc/service/impl/IdcServiceImpl.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) 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 c4f36220..90738234 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 @@ -239,6 +239,7 @@ public class IdcServiceImpl implements IdcService { } } + /*数据删除同步*/ private void asyncDelete(String tname,boolean isUpload,String syncIp) { String[] tnames = tname.split("/"); @@ -306,7 +307,7 @@ public class IdcServiceImpl implements IdcService { } else { saveIdcLog(tnames[9], "", tnames[2] + ">success(delete)", i * limit, total); } - syncAddTaskStatus(msg, isUpload ? 1 : 0, success, startTime, isUpload); + syncAddTaskStatus(msg, isUpload ? 1 : 0, true, startTime, isUpload,success); } } } @@ -390,6 +391,7 @@ public class IdcServiceImpl implements IdcService { setUpdateTime(tnames[2] + "." + tnames[0]+"."+tnames[1], DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")); } } + //} } catch (Exception ex) { @@ -425,11 +427,11 @@ public class IdcServiceImpl implements IdcService { } else { success = false; } - syncAddTaskStatus(json.getJSONObject("data"), 3, success, startTime, true); + syncAddTaskStatus(json.getJSONObject("data"), 3, true, startTime, true,success); } else { if (json.get("code") != null && json.get("data") != null) { //logger.info("res1-->"+JSON.toJSONString(json)); - syncAddTaskStatus(json.getJSONObject("data"), 0, success, startTime, true); + syncAddTaskStatus(json.getJSONObject("data"), 0, true, startTime, true,success); analyMiddle(host, json.getJSONObject("data"), files, false, false); } } @@ -517,7 +519,7 @@ public class IdcServiceImpl implements IdcService { boolean success = false; if (isLastLevel()) { success = analyMiddle("", json, files, true, true); - syncAddTaskStatus(json, 3, success, startTime, true); + syncAddTaskStatus(json, 3, true, startTime, true,success); if (!success) { return ResultVOUtils.error(9000, "解析失败"); @@ -528,11 +530,11 @@ public class IdcServiceImpl implements IdcService { String host = getNextHost(); String result = relay(request.getHeader("reqNo"), content, saveFiles, host); if (IDCUtils.isJson(result)) { - syncAddTaskStatus(json, 2, true, startTime, true); + syncAddTaskStatus(json, 2, true, startTime, true,true); BaseResponse object = JSON.parseObject(result, BaseResponse.class); return object; } else { - syncAddTaskStatus(json, 2, false, startTime, false); + syncAddTaskStatus(json, 2, true, startTime, false,false); return ResultVOUtils.error(9000, "转发失败"); } @@ -592,9 +594,6 @@ public class IdcServiceImpl implements IdcService { 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); @@ -603,7 +602,6 @@ public class IdcServiceImpl implements IdcService { private void saveDownloadStatus(Map params) { Map map = new HashMap(); - map.put("receiveStatus", "0"); map.putAll(params); Map columns = getColumn("basic_download_status"); @@ -763,7 +761,7 @@ public class IdcServiceImpl implements IdcService { } saveIdcLog(messageType, "", tableName + ">success", i * limit, total); } - syncAddTaskStatus(data, isUpload ? 1 : 0, success, startTime, isUpload); + syncAddTaskStatus(data, isUpload ? 1 : 0, true, startTime, isUpload,success); } } } @@ -775,7 +773,7 @@ public class IdcServiceImpl implements IdcService { /*增加同步任务状态*/ private void syncAddTaskStatus(Map json, int scheduleType, boolean success, Date startTime, - boolean isEnd) { + boolean isEnd,boolean isReceive) { try { String content = JSON.toJSONString(json); String datePath = DateUtil.formatDate(new Date(), "yyyy-MM-dd"); @@ -800,6 +798,7 @@ public class IdcServiceImpl implements IdcService { map.put("taskId", json.get("messageId")); map.put("cacheFilePath", fileName); map.put("status", success ? "1" : "0"); + map.put("receiveStatus", isReceive ? "1" : "0"); map.put("startTime", startTime != null ? startTime : new Date()); map.put("updateTime", new Date()); map.put("remark", json.get("messageType") + ": " + json.get("total") + "条"); @@ -1204,6 +1203,7 @@ public class IdcServiceImpl implements IdcService { map.put("filePathColumn", params.get("filePathColumn")); map.put("sendTime", new Date()); map.put("version", "1.0"); + map.put("level", 0); map.put("total", list.size()); map.put("data", list); return map; @@ -1347,4 +1347,4 @@ public class IdcServiceImpl implements IdcService { } -} \ No newline at end of file +} \ No newline at end of file From 6cc3d6585d1c7c596832a82533ea38dd99ab91d7 Mon Sep 17 00:00:00 2001 From: chengqf <584883665@139.com> Date: Sun, 16 Apr 2023 18:33:46 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E9=87=8D=E6=96=B0=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/idc/service/impl/IdcServiceImpl.java | 69 ++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) 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 90738234..522065a9 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 @@ -222,6 +222,8 @@ public class IdcServiceImpl implements IdcService { logger.error("中继服务地址未配置"); return; } + /*未发送重新发送*/ + asyncFailTask(map.get("syncIp").toString()); } String[] syncTables = TableUtils.syncTables(); @@ -239,6 +241,70 @@ public class IdcServiceImpl implements IdcService { } } + + /*上传失败重新上传*/ + private void asyncFailTask(String host) { + try + { + String filePathSlash = filePath.substring(filePath.length() - 1).equals("/") ? "" : "/"; + String sql = "select * from basic_export_status where status='1' and receiveStatus='0' order by updateTime"; + Map 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) { @@ -391,7 +457,6 @@ public class IdcServiceImpl implements IdcService { setUpdateTime(tnames[2] + "." + tnames[0]+"."+tnames[1], DateUtil.formatDate(nowUpdateTime, "yyyy-MM-dd HH:mm:ss")); } } - //} } catch (Exception ex) { @@ -800,6 +865,8 @@ public class IdcServiceImpl implements IdcService { 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)