diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java index 766d73c..cb5777d 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/ElementMapper.java @@ -36,4 +36,9 @@ public interface ElementMapper extends BaseMapperX { .eq(ElementDO::getIsEnable, 1) .orderByDesc(ElementDO::getSort)); } + + default ElementDO getElementName(String code){ + return selectOne(new LambdaQueryWrapperX() + .eq(ElementDO::getAbbreviation, code)); + }; } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/ElementServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/ElementServiceImpl.java index 79290b0..49bcd86 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/ElementServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/ElementServiceImpl.java @@ -35,6 +35,8 @@ public class ElementServiceImpl implements ElementService { public ElementRespVO createElement(ElementSaveReqVO createReqVO) { // 插入 ElementDO element = BeanUtils.toBean(createReqVO, ElementDO.class); + // 校验存在 + validateElementCodeExists(createReqVO.getAbbreviation()); //金属编码自动生成,格式 JSYS-00001,依次新增 String maxCode = elementMapper.selectMaxCode(); if (maxCode == null) { @@ -55,6 +57,8 @@ public class ElementServiceImpl implements ElementService { public void updateElement(ElementSaveReqVO updateReqVO) { // 校验存在 validateElementExists(updateReqVO.getId()); + // 校验存在 + validateElementCodeExists(updateReqVO.getAbbreviation()); // 更新 ElementDO updateObj = BeanUtils.toBean(updateReqVO, ElementDO.class); elementMapper.updateById(updateObj); @@ -69,12 +73,12 @@ public class ElementServiceImpl implements ElementService { } @Override - public void deleteElementListByIds(List ids) { + public void deleteElementListByIds(List ids) { // 校验存在 validateElementExists(ids); // 删除 elementMapper.deleteByIds(ids); - } + } private void validateElementExists(List ids) { List list = elementMapper.selectByIds(ids); @@ -89,6 +93,13 @@ public class ElementServiceImpl implements ElementService { } } + private void validateElementCodeExists(String code) { + ElementDO elementDO = elementMapper.getElementName(code); + if (elementDO == null) { + throw exception(ELEMENT_NOT_EXISTS); + } + } + @Override public ElementDO getElement(Long id) { return elementMapper.selectById(id); @@ -102,7 +113,7 @@ public class ElementServiceImpl implements ElementService { @Override public void enableElementList(List saveReqVOS) { List updateObj = BeanUtils.toBean(saveReqVOS, ElementDO.class); - List count = elementMapper.updateById(updateObj); + List count = elementMapper.updateById(updateObj); if (CollUtil.isEmpty(count)) { throw exception(ELEMENT_NOT_EXISTS); } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCustomerMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCustomerMapper.java index fda05c3..08d90e4 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCustomerMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCustomerMapper.java @@ -6,6 +6,9 @@ import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpCustomerDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * ERP客商主数据 Mapper @@ -29,4 +32,5 @@ public interface ErpCustomerMapper extends BaseMapperX { .orderByDesc(ErpCustomerDO::getId)); } + void updateBatchByNumber(@Param("toUpdate") List toUpdate); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java index 5b843a3..f0b3ca0 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java @@ -7,6 +7,7 @@ import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpMaterialDO; import com.zt.plat.module.erp.utils.ErpConfig; import com.zt.plat.module.erp.utils.MyRedisConfig; import com.zt.plat.module.erp.enums.OftenEnum; @@ -113,31 +114,37 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息; String funcnr = funcnrEnum.getFuncnr(); - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); + String key = "erp" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCache(key) == null) { + initialize(key); } - // 构建req参数 - Map req = new HashMap<>(); - List> datumList = new ArrayList<>(); - Map datumEntry = new HashMap<>(); - // 构建datum参数数组 - datumEntry.put("sign", "I"); - datumEntry.put("option", "EQ"); - datumEntry.put("low", LocalDate.now().toString()); - datumList.add(datumEntry); - req.put(funcnrEnum.getDatekey(), datumList); - - // 1. 调用ERP接口获取数据 + //循环近五年日期, JSONArray dataArrayALL = new JSONArray(); - for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { - req.put("mode", type.modetype); - HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); - JSONArray dataArray = (JSONArray) dataFromERP.get(funcnrEnum.getDatakey()); - if (dataArray == null || dataArray.isEmpty()) { - continue; + LocalDate endDate = LocalDate.now(); + LocalDate startDate = endDate.minusYears(5); + for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) { + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + // 把每次循环的日期,放在这里 + datumEntry.put("low", date.toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + + // 1. 调用ERP接口获取数据 + for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { + req.put("MODE", type.modetype); + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get(funcnrEnum.getDatakey()); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); } - dataArrayALL.addAll(dataArray); } if (dataArrayALL.isEmpty()) { return; @@ -153,17 +160,18 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { /** * 处理数据,区分新增和更新 */ - private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { - String key = "erpMap" + funcnrEnum.getFuncnr(); - Map numbers = myRedisConfig.getRedisCacheMap(key); - + private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { + String key = "erp" + funcnr.getFuncnr(); + Map> numbers = myRedisConfig.numbers(dataArray, key, funcnr.getDatakey()); + List allnumbers = numbers.get("all"); + List comnumbers = numbers.get("com"); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); for (int i = 0; i < dataArray.size(); i++) { JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { - String number = dataJson.getString(funcnrEnum.getDatakey()); + String number = dataJson.getString(funcnr.getDatakey()); if (number != null) { number = number.trim(); } @@ -185,10 +193,8 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { DO.setIsProvisional(dataJson.getString("XBLCK")); DO.setTaxNumber(dataJson.getString("TAXNO")); - // 使用 Map 优化查找效率,避免每次遍历 comnumbers 列表 - if (number != null && numbers.get(number) != null) { + if (comnumbers.contains(number)) { // 更新 - DO.setId(numbers.get(number)); toUpdate.add(DO); } else { // 新增 @@ -197,7 +203,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { } } - return new ProcessingResult(toUpdate, toInsert, key); + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); } /** @@ -207,21 +213,11 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { // 批量新增和更新 if (!result.toInsert.isEmpty()) { erpCustomerMapper.insertBatch(result.toInsert); - // 批量查询刚插入数据的id,提升效率 - List insertedNumbers = result.toInsert.stream() - .map(ErpCustomerDO::getNumber) - .collect(Collectors.toList()); - List insertedRecords = erpCustomerMapper.selectList( - new LambdaQueryWrapperX() - .in(ErpCustomerDO::getNumber, insertedNumbers) - ); - Map numberIdMap = insertedRecords.stream() - .collect(Collectors.toMap(ErpCustomerDO::getNumber, ErpCustomerDO::getId)); - myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { - erpCustomerMapper.updateBatch(result.toUpdate); + erpCustomerMapper.updateBatchByNumber(result.toUpdate); } + myRedisConfig.updateRedisCache(result.key, result.allnumbers); } /** @@ -231,18 +227,21 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { private final List toUpdate; private final List toInsert; private final String key; + private final List allnumbers; - public ProcessingResult(List toUpdate, List toInsert, String key) { + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; + this.allnumbers = allnumbers; } } - private void initializeMap(String key) { - Map existingNumbers = erpCustomerMapper.selectList(new LambdaQueryWrapperX()) + private void initialize(String key) { + List existingNumbers = erpCustomerMapper.selectList(new LambdaQueryWrapperX()) .stream() - .collect(Collectors.toMap(ErpCustomerDO::getNumber, ErpCustomerDO::getId)); - myRedisConfig.addRedisCacheMap(key, existingNumbers); + .map(ErpCustomerDO::getNumber) + .collect(Collectors.toList()); + myRedisConfig.updateRedisCache(key, existingNumbers); } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java index 01de59e..d488569 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java @@ -6,8 +6,10 @@ import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.handler.annotation.XxlJob; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO; import com.zt.plat.module.erp.utils.ErpConfig; import com.zt.plat.module.erp.utils.MyRedisConfig; import com.zt.plat.module.erp.enums.OftenEnum; @@ -28,6 +30,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; @@ -191,34 +194,55 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService @Transactional @XxlJob("getErpProductiveOrderTask") public void callErpRfcInterface() { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单; + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单明细; String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); + } Map req = new HashMap<>(); - List> datumList = new ArrayList<>(); - Map datumEntry = new HashMap<>(); + List> datumListS = new ArrayList<>(); + Map datumEntryS = new HashMap<>(); // 构建datum参数数组 - datumEntry.put("sign", "I"); - datumEntry.put("option", "EQ"); - datumEntry.put("low", LocalDate.now().toString()); - datumList.add(datumEntry); - req.put(funcnrEnum.getDatekey(), datumList); + datumEntryS.put("sign", "I"); + datumEntryS.put("option", "EQ"); + datumEntryS.put("low", LocalDate.now().toString()); + datumListS.add(datumEntryS); + req.put("BEGDA", datumListS); + List> datumListE = new ArrayList<>(); + Map datumEntryE = new HashMap<>(); + // 构建datum参数数组 + datumEntryE.put("sign", "I"); + datumEntryE.put("option", "EQ"); + datumEntryE.put("low", LocalDate.now().toString()); + datumListE.add(datumEntryE); + req.put("ENDDA", datumListE); JSONArray dataArrayALL = new JSONArray(); - List redisCache = myRedisConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); - if (CollUtil.isEmpty(redisCache)) { + List redisCacheF = myRedisConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCacheF)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + List redisCacheC = myRedisConfig.getRedisCache(OftenEnum.FuncnrEnum.公司代码.getFuncnr()); + if (CollUtil.isEmpty(redisCacheC)) { throw exception(ERP_FACTORY_NOT_EXISTS); } // 1. 调用ERP接口获取数据 - for (String number : redisCache) { - req.put("WERKS", number); - // 1. 调用ERP接口获取数据 - HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); - JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); - if (dataArray == null || dataArray.isEmpty()) { - continue; + for (String numberC : redisCacheC) { + for (String numberF : redisCacheF) { + req.put("BUKRS", numberC); + req.put("WERKS", numberF); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); } - dataArrayALL.addAll(dataArray); } + if (dataArrayALL.isEmpty()) { throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS); } @@ -234,34 +258,58 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService * 处理数据,区分新增和更新 */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { - String key = "erp" + funcnr.getFuncnr(); - Map> numbers = myRedisConfig.numbers(dataArray, key, funcnr.getDatakey()); - List allnumbers = numbers.get("all"); - List comnumbers = numbers.get("com"); + String key = "erpMap" + funcnr.getFuncnr(); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); + List dataArrayNumbers = new ArrayList<>(); for (int i = 0; i < dataArray.size(); i++) { JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { - String number = dataJson.getString("BUKRS").trim(); - if (number != null) { - ErpProductiveOrderDO DO = new ErpProductiveOrderDO(); -// DO.setName(dataJson.getString("BUTXT")); -// DO.setNumber(number); -// DO.setCurrency(dataJson.getString("WAERS")); - if (comnumbers.contains(number)) { - // 更新 - toUpdate.add(DO); - } else { - // 新增 - toInsert.add(DO); - } + String number = dataJson.getString("AUFNR").trim(); + ErpProductiveOrderDO DO = new ErpProductiveOrderDO(); + DO.setCompanyNumber(dataJson.getString("BUKRS").trim()); + DO.setFactoryNumber(dataJson.getString("WERKS").trim()); + DO.setFactoryName(dataJson.getString("NAME1").trim()); + DO.setOrderNumber(dataJson.getString("AUFNR").trim()); + if (!dataJson.getString("GLTRP").equals("0000-00-00")) { + DO.setStartDate(LocalDateTime.parse(dataJson.getString("GLTRP") + "T00:00:00")); } + if (!dataJson.getString("GSTRP").equals("0000-00-00")) { + DO.setEndDate(LocalDateTime.parse(dataJson.getString("GSTRP") + "T00:00:00")); + } + DO.setMainMaterialNumber(dataJson.getString("STLBEZ").trim()); + DO.setUnit(dataJson.getString("GMEIN").trim()); + DO.setMaterialDescription(dataJson.getString("MAKTX").trim()); + DO.setProcessingList(dataJson.getString("L_AFVC").trim()); + DO.setProcessingNumber(dataJson.getString("VORNR").trim()); + DO.setProcessingDescription(dataJson.getString("LTXA1").trim()); + DO.setObjectNumber(dataJson.getString("OBJID").trim()); + DO.setWorkCenterNumber(dataJson.getString("ARBPL").trim()); + DO.setWorkCenterDescription(dataJson.getString("KTEXT").trim()); + DO.setCostcenterNumber(dataJson.getString("KOSTL").trim()); + DO.setCostcenterName(dataJson.getString("TEXT_C").trim()); + if (numbers.get(number) != null) { + // 更新 + DO.setId(numbers.get(number)); + toUpdate.add(DO); + } else { + // 新增 + toInsert.add(DO); + } + dataArrayNumbers.add(number); + } + } + // 过滤出numbers中有,但dataArray中KOSTL没有的记录,即为需要删除的数据 + List deleteNumbers = new ArrayList<>(); + for (String number : numbers.keySet()) { + if (!dataArrayNumbers.contains(number)) { + deleteNumbers.add(number); } } - return new ProcessingResult(toUpdate, toInsert, key, allnumbers); + return new ProcessingResult(toUpdate, toInsert, key, deleteNumbers); } /** @@ -271,11 +319,26 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService // 批量新增和更新 if (!result.toInsert.isEmpty()) { erpProductiveOrderMapper.insertBatch(result.toInsert); + // 批量查询刚插入数据的id,提升效率 + List insertedNumbers = result.toInsert.stream() + .map(ErpProductiveOrderDO::getOrderNumber) + .collect(Collectors.toList()); + List insertedRecords = erpProductiveOrderMapper.selectList( + new LambdaQueryWrapperX() + .in(ErpProductiveOrderDO::getOrderNumber, insertedNumbers) + ); + Map numberIdMap = insertedRecords.stream() + .collect(Collectors.toMap(ErpProductiveOrderDO::getOrderNumber, ErpProductiveOrderDO::getId)); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpProductiveOrderMapper.updateBatch(result.toUpdate); } - myRedisConfig.updateRedisCache(result.key, result.allnumbers); + if (!result.deleteNumbers.isEmpty()) { + // 使用 in 条件批量删除,提高删除效率 + erpProductiveOrderMapper.delete(new LambdaQueryWrapperX().in(ErpProductiveOrderDO::getOrderNumber, result.deleteNumbers)); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + } } /** @@ -285,13 +348,24 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService private final List toUpdate; private final List toInsert; private final String key; - private final List allnumbers; + private final List deleteNumbers; - public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List deleteNumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; - this.allnumbers = allnumbers; + this.deleteNumbers = deleteNumbers; } } + + + private void initializeMap(String key) { + List assets = erpProductiveOrderMapper.selectList(new LambdaQueryWrapperX()); + Map existingNumbers = new HashMap<>(); + for (ErpProductiveOrderDO asset : assets) { + String mapKey = asset.getOrderNumber(); + existingNumbers.put(mapKey, asset.getId()); + } + myRedisConfig.addRedisCacheMap(key, existingNumbers); + } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml index 8e76ec1..f783092 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml @@ -8,4 +8,22 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + + UPDATE sply_erp_cstm + + NUM = #{item.number}, + NAME = #{item.name}, + ACCT_GRP = #{item.accountGroup}, + DSP = #{item.description}, + CTR_NUM = #{item.centerNumber}, + CRT_DT = #{item.createDate}, + RPR_DT = #{item.repairDate}, + IS_GIV = #{item.isGiveback}, + IS_PRVS = #{item.isProvisional}, + TAX_NUM = #{item.taxNumber}, + + WHERE NUM = #{item.downCenterNumber} + + \ No newline at end of file