From 18618a08d9057a31085be733459a422dff20fb6a Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Thu, 15 Sep 2022 15:48:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=AF=BC=E5=85=A5=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OutStoreController.java | 140 ++++++ .../mesnac/anomaly/mapper/OutStoreMapper.java | 18 + .../mesnac/anomaly/model/OutStore.java | 106 +++++ .../anomaly/service/OutStoreService.java | 30 ++ .../service/impl/OutStoreServiceImpl.java | 70 +++ .../main/resources/mapper/OutStoreMapper.xml | 450 ++++++++++++++++++ .../controller/DataImportController.java | 43 ++ 7 files changed, 857 insertions(+) create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/OutStoreMapper.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/OutStore.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/OutStoreService.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/OutStoreServiceImpl.java create mode 100644 anomaly/src/main/resources/mapper/OutStoreMapper.xml diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java new file mode 100644 index 00000000..9110b7bd --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java @@ -0,0 +1,140 @@ +package com.foreverwin.mesnac.anomaly.controller; + +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.modular.core.util.R; +import com.foreverwin.modular.core.util.FrontPage; +import com.foreverwin.modular.core.util.CommonMethods; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.foreverwin.mesnac.anomaly.service.OutStoreService; +import com.foreverwin.mesnac.anomaly.model.OutStore; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * + * @author YinQ + * @since 2022-09-15 + */ +@RestController +@RequestMapping("/Z-OUT-STORE") +public class OutStoreController { + + @Autowired + public OutStoreService outStoreService; + + /** + * 根据id查询 + * + * @param id 主键 + * @return + */ + @ResponseBody + @GetMapping("/{id:.+}") + public R getOutStoreById(@PathVariable String id) { + return R.ok( outStoreService.getById(id)); + } + + /** + * 查询所有数据 + * + * @return + */ + @ResponseBody + @GetMapping("") + public R getOutStoreList(OutStore outStore){ + List result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(outStore); + + result = outStoreService.list(queryWrapper); + return R.ok(result); + } + + /** + * 分页查询数据 + * + * @param frontPage 分页信息 + * @return + */ + @ResponseBody + @GetMapping("/page") + public R page(FrontPage frontPage, OutStore outStore){ + IPage result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(outStore); + if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { + //TODO modify global query + queryWrapper.lambda().and(wrapper -> wrapper + .like(OutStore::getHandle, frontPage.getGlobalQuery()) + .or().like(OutStore::getFactory, frontPage.getGlobalQuery()) + .or().like(OutStore::getStockLocation, frontPage.getGlobalQuery()) + .or().like(OutStore::getProjectNo, frontPage.getGlobalQuery()) + .or().like(OutStore::getItem, frontPage.getGlobalQuery()) + .or().like(OutStore::getItemDescription, frontPage.getGlobalQuery()) + .or().like(OutStore::getImportUser, frontPage.getGlobalQuery()) + .or().like(OutStore::getOther1, frontPage.getGlobalQuery()) + .or().like(OutStore::getOther2, frontPage.getGlobalQuery()) + .or().like(OutStore::getOther3, frontPage.getGlobalQuery()) + ); + } + result = outStoreService.page(frontPage.getPagePlus(), queryWrapper); + return R.ok(result); + } + + /** + * 新增 + * @param outStore 传递的实体 + * @return null 失败 实体成功 + */ + @PostMapping + public R save(@RequestBody OutStore outStore) { + String handle = StringUtil.createQUID(); + String user = CommonMethods.getUser(); + LocalDateTime now = LocalDateTime.now(); + outStore.setHandle(handle); + if (StringUtil.isBlank(outStore.getImportUser())){ + outStore.setImportUser(user); + } + outStore.setImportDateTime(now); + + return R.ok(outStoreService.save(outStore)); + } + + /** + * 修改 + * @param outStore 传递的实体 + * @return null 失败 实体成功 + */ + @PutMapping + public R updateById(@RequestBody OutStore outStore) { + return R.ok(outStoreService.updateById(outStore)); + } + + /** + * 根据id删除对象 + * @param id 实体ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}") + public R removeById(@PathVariable("id") String id){ + return R.ok(outStoreService.removeById(id)); + } + + /** + * 批量删除对象 + * @param ids 实体集合ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.POST, value = "/delete-batch") + public R removeByIds(List ids){ + return R.ok(outStoreService.removeByIds(ids)); + } +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/OutStoreMapper.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/OutStoreMapper.java new file mode 100644 index 00000000..667b7115 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/OutStoreMapper.java @@ -0,0 +1,18 @@ +package com.foreverwin.mesnac.anomaly.mapper; + +import com.foreverwin.mesnac.anomaly.model.OutStore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author YinQ + * @since 2022-09-15 + */ +@Repository +public interface OutStoreMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/OutStore.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/OutStore.java new file mode 100644 index 00000000..a4dc84a1 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/OutStore.java @@ -0,0 +1,106 @@ +package com.foreverwin.mesnac.anomaly.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; +import com.foreverwin.mesnac.common.model.ExcelColumn; +import lombok.Data; + +/** + *

+ * + *

+ * + * @author YinQ + * @since 2022-09-15 + */ + +@TableName("Z_OUT_STORE") +@Data +public class OutStore extends Model { + + /** + * 主键 + */ + @TableId(value = "HANDLE", type = IdType.INPUT) + @ExcelColumn(value = "HANDLE") + private String handle; + /** + * 工厂 + */ + @TableField("FACTORY") + @ExcelColumn(value = "工厂") + private String factory; + /** + * 库存地点 + */ + @TableField("STOCK_LOCATION") + @ExcelColumn(value = "库存地点") + private String stockLocation; + /** + * 项目号 + */ + @TableField("PROJECT_NO") + @ExcelColumn(value = "项目号") + private String projectNo; + /** + * 物料编号 + */ + @TableField("ITEM") + @ExcelColumn(value = "物料编号") + private String item; + /** + * 物料描述 + */ + @TableField("ITEM_DESCRIPTION") + @ExcelColumn(value = "物料描述") + private String itemDescription; + /** + * 数量 + */ + @TableField("QTY") + @ExcelColumn(value = "数量") + private Long qty; + /** + * 过账日期 + */ + @TableField("POSTING_DATE_TIME") + @ExcelColumn(value = "过账日期") + private LocalDateTime postingDateTime; + /** + * 导入人员 + */ + @TableField("IMPORT_USER") + @ExcelColumn(value = "导入人员") + private String importUser; + /** + * 导入时间 + */ + @TableField("IMPORT_DATE_TIME") + @ExcelColumn(value = "导入时间") + private LocalDateTime importDateTime; + + @TableField("OTHER1") + @ExcelColumn(value = "OTHER1") + + private String other1; + @TableField("OTHER2") + + @ExcelColumn(value = "OTHER2") + private String other2; + + @ExcelColumn(value = "OTHER3") + @TableField("OTHER3") + private String other3; + + @TableField(exist = false) + @ExcelColumn(value = "SEQ") + private Integer SEQ; + +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/OutStoreService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/OutStoreService.java new file mode 100644 index 00000000..5ef0bb04 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/OutStoreService.java @@ -0,0 +1,30 @@ +package com.foreverwin.mesnac.anomaly.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.anomaly.model.OutStore; +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.modular.core.util.FrontPage; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author YinQ + * @since 2022-09-15 + */ +public interface OutStoreService extends IService { + + /** + * 分页查询 + * @param frontPage + * @return + */ + IPage selectPage(FrontPage frontPage, OutStore outStore); + + List selectList(OutStore outStore); + + boolean outStoreImportFile(List outStoreList); +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/OutStoreServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/OutStoreServiceImpl.java new file mode 100644 index 00000000..2b115492 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/OutStoreServiceImpl.java @@ -0,0 +1,70 @@ +package com.foreverwin.mesnac.anomaly.service.impl; + +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.modular.core.util.CommonMethods; +import com.foreverwin.modular.core.util.FrontPage; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.anomaly.model.OutStore; +import com.foreverwin.mesnac.anomaly.mapper.OutStoreMapper; +import com.foreverwin.mesnac.anomaly.service.OutStoreService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; +/** + *

+ * 服务实现类 + *

+ * + * @author YinQ + * @since 2022-09-15 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class OutStoreServiceImpl extends ServiceImpl implements OutStoreService { + + + @Autowired + private OutStoreMapper outStoreMapper; + + @Override + public IPage selectPage(FrontPage frontPage, OutStore outStore) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(outStore); + return super.page(frontPage.getPagePlus(), queryWrapper); + } + + @Override + public List selectList(OutStore outStore) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(outStore); + return super.list(queryWrapper); + } + + @Override + public boolean outStoreImportFile(List outStoreList) { + String user = CommonMethods.getUser(); + LocalDateTime now = LocalDateTime.now(); + try { + for (OutStore outStore : outStoreList) { + String handle = StringUtil.createQUID(); + outStore.setHandle(handle); + if (StringUtil.isBlank(outStore.getImportUser())){ + outStore.setImportUser(user); + } + outStore.setImportDateTime(now); + } + super.saveBatch(outStoreList); + return true; + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + +} \ No newline at end of file diff --git a/anomaly/src/main/resources/mapper/OutStoreMapper.xml b/anomaly/src/main/resources/mapper/OutStoreMapper.xml new file mode 100644 index 00000000..bf06931b --- /dev/null +++ b/anomaly/src/main/resources/mapper/OutStoreMapper.xml @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + HANDLE, FACTORY, STOCK_LOCATION, PROJECT_NO, ITEM, ITEM_DESCRIPTION, QTY, POSTING_DATE_TIME, IMPORT_USER, IMPORT_DATE_TIME, OTHER1, OTHER2, OTHER3,ROWNUM SEQ + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO Z_OUT_STORE + + HANDLE, + FACTORY, + STOCK_LOCATION, + PROJECT_NO, + ITEM, + ITEM_DESCRIPTION, + QTY, + POSTING_DATE_TIME, + IMPORT_USER, + IMPORT_DATE_TIME, + OTHER1, + OTHER2, + OTHER3, + VALUES + + #{handle}, + #{factory}, + #{stockLocation}, + #{projectNo}, + #{item}, + #{itemDescription}, + #{qty}, + #{postingDateTime}, + #{importUser}, + #{importDateTime}, + #{other1}, + #{other2}, + #{other3}, + + + + + INSERT INTO Z_OUT_STORE + + + VALUES + + #{handle}, + #{factory}, + #{stockLocation}, + #{projectNo}, + #{item}, + #{itemDescription}, + #{qty}, + #{postingDateTime}, + #{importUser}, + #{importDateTime}, + #{other1}, + #{other2}, + #{other3}, + + + + + + UPDATE Z_OUT_STORE + FACTORY=#{et.factory}, + STOCK_LOCATION=#{et.stockLocation}, + PROJECT_NO=#{et.projectNo}, + ITEM=#{et.item}, + ITEM_DESCRIPTION=#{et.itemDescription}, + QTY=#{et.qty}, + POSTING_DATE_TIME=#{et.postingDateTime}, + IMPORT_USER=#{et.importUser}, + IMPORT_DATE_TIME=#{et.importDateTime}, + OTHER1=#{et.other1}, + OTHER2=#{et.other2}, + OTHER3=#{et.other3}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_OUT_STORE + FACTORY=#{et.factory}, + STOCK_LOCATION=#{et.stockLocation}, + PROJECT_NO=#{et.projectNo}, + ITEM=#{et.item}, + ITEM_DESCRIPTION=#{et.itemDescription}, + QTY=#{et.qty}, + POSTING_DATE_TIME=#{et.postingDateTime}, + IMPORT_USER=#{et.importUser}, + IMPORT_DATE_TIME=#{et.importDateTime}, + OTHER1=#{et.other1}, + OTHER2=#{et.other2}, + OTHER3=#{et.other3}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_OUT_STORE + FACTORY=#{et.factory}, + STOCK_LOCATION=#{et.stockLocation}, + PROJECT_NO=#{et.projectNo}, + ITEM=#{et.item}, + ITEM_DESCRIPTION=#{et.itemDescription}, + QTY=#{et.qty}, + POSTING_DATE_TIME=#{et.postingDateTime}, + IMPORT_USER=#{et.importUser}, + IMPORT_DATE_TIME=#{et.importDateTime}, + OTHER1=#{et.other1}, + OTHER2=#{et.other2}, + OTHER3=#{et.other3}, + + + + + HANDLE=#{ew.entity.handle} + AND FACTORY=#{ew.entity.factory} + AND STOCK_LOCATION=#{ew.entity.stockLocation} + AND PROJECT_NO=#{ew.entity.projectNo} + AND ITEM=#{ew.entity.item} + AND ITEM_DESCRIPTION=#{ew.entity.itemDescription} + AND QTY=#{ew.entity.qty} + AND POSTING_DATE_TIME=#{ew.entity.postingDateTime} + AND IMPORT_USER=#{ew.entity.importUser} + AND IMPORT_DATE_TIME=#{ew.entity.importDateTime} + AND OTHER1=#{ew.entity.other1} + AND OTHER2=#{ew.entity.other2} + AND OTHER3=#{ew.entity.other3} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_OUT_STORE WHERE HANDLE=#{handle} + + + + DELETE FROM Z_OUT_STORE + + + + + ${k} = #{cm[${k}]} + + + + + + + + DELETE FROM Z_OUT_STORE + + + + + HANDLE=#{ew.entity.handle} + + AND FACTORY=#{ew.entity.factory} + AND STOCK_LOCATION=#{ew.entity.stockLocation} + AND PROJECT_NO=#{ew.entity.projectNo} + AND ITEM=#{ew.entity.item} + AND ITEM_DESCRIPTION=#{ew.entity.itemDescription} + AND QTY=#{ew.entity.qty} + AND POSTING_DATE_TIME=#{ew.entity.postingDateTime} + AND IMPORT_USER=#{ew.entity.importUser} + AND IMPORT_DATE_TIME=#{ew.entity.importDateTime} + AND OTHER1=#{ew.entity.other1} + AND OTHER2=#{ew.entity.other2} + AND OTHER3=#{ew.entity.other3} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_OUT_STORE WHERE HANDLE IN ( + #{item} + ) + + + + diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/controller/DataImportController.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/controller/DataImportController.java index b4c67f11..e18b67ed 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/controller/DataImportController.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/controller/DataImportController.java @@ -1,5 +1,10 @@ package com.foreverwin.mesnac.dataimport.controller; +import com.foreverwin.mesnac.anomaly.model.OutStore; +import com.foreverwin.mesnac.anomaly.model.TemporaryFix; +import com.foreverwin.mesnac.anomaly.service.OutStoreService; +import com.foreverwin.mesnac.anomaly.service.TemporaryFixService; +import com.foreverwin.mesnac.common.util.ExcelUtils; import com.foreverwin.mesnac.dataimport.util.APResult; import com.foreverwin.mesnac.dataimport.util.ImportRequest; import com.foreverwin.mesnac.common.model.ExportTemplate; @@ -27,6 +32,12 @@ public class DataImportController { @Autowired private MasterDataImportServiceImpl masterDataImportService; + @Autowired + public TemporaryFixService temporaryFixService; + + @Autowired + public OutStoreService outStoreService; + @PostMapping("/import") public String importFile(@PathParam("fileType") String fileType, @PathParam("site") String site, @PathParam("handleType") final String handleType, @PathParam("mode") final String mode, @PathParam("user") String user, @RequestParam("file") MultipartFile multipartFile) { ImportRequest importRequest = new ImportRequest(); @@ -65,4 +76,36 @@ public class DataImportController { } return R.failed(); } + + @PostMapping("/temporaryFixImportFile") + public R temporaryFixImportFile(@PathParam("fileType") String fileType, @PathParam("site") String site, @PathParam("handleType") final String handleType, @PathParam("mode") final String mode, @PathParam("user") String user, @RequestParam("file") MultipartFile multipartFile) { + try { + //String name = multipartFile.getOriginalFilename(); + List temporaryFixList = ExcelUtils.readExcel(fileType, TemporaryFix.class, multipartFile, null); + temporaryFixList = temporaryFixService.temporaryFixImportFile(temporaryFixList); + if (temporaryFixList.equals(null)){ + return R.failed("导入数据失败"); + } + boolean result = temporaryFixService.saveBatch(temporaryFixList); + return R.ok(result); + } catch (Exception e) { + e.printStackTrace(); + return R.failed(e.getMessage()); + } + } + + @PostMapping("/outStoreImportFile") + public R outStoreImportFile(@PathParam("fileType") String fileType, @PathParam("site") String site, @PathParam("handleType") final String handleType, @PathParam("mode") final String mode, @PathParam("user") String user, @RequestParam("file") MultipartFile multipartFile) { + try { + List outStoreList = ExcelUtils.readExcel(fileType, OutStore.class, multipartFile, null); + if (outStoreService.outStoreImportFile(outStoreList)){ + return R.ok("导入数据成功"); + } + return R.failed("导入数据失败"); + } catch (Exception e) { + e.printStackTrace(); + return R.failed(e.getMessage()); + } + } + }