src/main/java/com/ruoyi/approve/enums/ApproveType.java
@@ -4,12 +4,13 @@ public enum ApproveType { FREE_COLLABORATION(1, "èªç±åå审æ¹"), LEAVE(2, "请å管ç"), LEAVE(2, "请å审æ¹"), SALES_CONTRACT(3, "éå®å®¡æ¹"), REIMBURSEMENT(4, "æ¥é审æ¹"), PURCHASE_PLAN(5, "éè´å®¡æ¹"), QUOTATION(6, "æ¥ä»·å®¡æ¹"), OUTBOUND(7, "åºåºå®¡æ¹"); OUTBOUND(7, "åºåºå®¡æ¹"), CONTRACT(8, "åå审æ¹"); private final int code; private final String label; src/main/java/com/ruoyi/envaccess/controller/EnvDeviceCommandController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,131 @@ package com.ruoyi.envaccess.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.mapper.DeviceDefectRecordMapper; import com.ruoyi.device.mapper.DeviceLedgerMapper; import com.ruoyi.device.pojo.DeviceDefectRecord; import com.ruoyi.device.pojo.DeviceLedger; import com.ruoyi.envaccess.mapper.EnvDeviceCommandMapper; import com.ruoyi.envaccess.pojo.EnvDeviceCommand; import com.ruoyi.framework.web.domain.AjaxResult; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 设å¤è¿ç¨çæ§ï¼å¼å¸¸æ¥è¦ + è¿ç¨å¯åæ§å¶ï¼æ ç¡¬ä»¶ï¼æä»¤è®°å½ + ç¶ææ¨¡æï¼ */ @RestController @RequestMapping("/environmentAccess/deviceCommand") @Api(tags = "ç¯ä¿é¨ç¦-设å¤è¿ç¨çæ§") public class EnvDeviceCommandController { @Autowired private EnvDeviceCommandMapper envDeviceCommandMapper; @Autowired private DeviceLedgerMapper deviceLedgerMapper; @Autowired private DeviceDefectRecordMapper deviceDefectRecordMapper; /** 设å¤å表ï¼è¿ç¨æ§å¶å¯¹è±¡ï¼ */ @GetMapping("/deviceList") public AjaxResult deviceList() { List<DeviceLedger> list = deviceLedgerMapper.selectList(null); if (list != null && list.size() > 200) list = list.subList(0, 200); return AjaxResult.success(list); } /** å¼å¸¸æ¥è¦åè¡¨ï¼æ¥æºï¼è®¾å¤æ éè®°å½ï¼ */ @GetMapping("/alarmList") public AjaxResult alarmList() { LambdaQueryWrapper<DeviceDefectRecord> w = new LambdaQueryWrapper<>(); w.orderByDesc(DeviceDefectRecord::getId); w.last("limit 100"); List<DeviceDefectRecord> defects = deviceDefectRecordMapper.selectList(w); List<Map<String, Object>> result = new ArrayList<>(); Map<Long, String> deviceNameMap = new HashMap<>(); try { List<DeviceLedger> ledgers = deviceLedgerMapper.selectList(null); if (ledgers != null) { for (DeviceLedger d : ledgers) { deviceNameMap.put(d.getId(), d.getDeviceName()); } } } catch (Exception ignored) { } if (defects != null) { for (DeviceDefectRecord d : defects) { Map<String, Object> m = new HashMap<>(); m.put("id", d.getId()); m.put("deviceLedgerId", d.getDeviceLedgerId()); m.put("deviceName", deviceNameMap.get(d.getDeviceLedgerId())); m.put("defectDescription", d.getDefectDescription()); m.put("status", d.getStatus()); m.put("eliminateTime", d.getEliminateTime()); m.put("createTime", d.getCreateTime()); boolean handled = d.getEliminateTime() != null; m.put("handled", handled); result.add(m); } } return AjaxResult.success(result); } /** æä»¤è®°å½å页 */ @GetMapping("/listPage") public AjaxResult listPage(Page page, EnvDeviceCommand query) { LambdaQueryWrapper<EnvDeviceCommand> w = new LambdaQueryWrapper<>(); if (query != null) { if (query.getDeviceName() != null && !query.getDeviceName().isEmpty()) { w.like(EnvDeviceCommand::getDeviceName, query.getDeviceName()); } if (query.getCommandType() != null && !query.getCommandType().isEmpty()) { w.eq(EnvDeviceCommand::getCommandType, query.getCommandType()); } } w.orderByDesc(EnvDeviceCommand::getId); return AjaxResult.success(envDeviceCommandMapper.selectPage(page, w)); } /** ä¸åè¿ç¨å¯åæä»¤ï¼æ¨¡ææ§è¡ï¼è®°å½æä»¤ä¸åæ§ï¼ */ @PostMapping("/send") public AjaxResult send(@RequestBody EnvDeviceCommand command) { if (command == null || command.getDeviceLedgerId() == null) { return AjaxResult.error("è¯·éæ©è®¾å¤"); } if (command.getDeviceName() == null || command.getDeviceName().isEmpty()) { try { DeviceLedger ledger = deviceLedgerMapper.selectById(command.getDeviceLedgerId()); if (ledger != null) command.setDeviceName(ledger.getDeviceName()); } catch (Exception ignored) { } } String type = command.getCommandType() == null ? "start" : command.getCommandType(); command.setCommandType(type); command.setCommandStatus("success"); command.setCommandTime(LocalDateTime.now()); command.setCreateTime(LocalDateTime.now()); command.setUpdateTime(LocalDateTime.now()); command.setResultMsg(("start".equals(type) ? "å¯å¨" : "忢") + "æä»¤æ¨¡ææ§è¡æåï¼æªæ¥å ¥çå®è®¾å¤ï¼ä» è®°å½æä»¤ï¼"); try { command.setOperator(SecurityUtils.getLoginUser().getUser().getNickName()); } catch (Exception ignored) { } try { command.setTenantId(SecurityUtils.getLoginUser().getTenantId()); } catch (Exception ignored) { } envDeviceCommandMapper.insert(command); return AjaxResult.success(command.getResultMsg()); } } src/main/java/com/ruoyi/envaccess/mapper/EnvDeviceCommandMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.envaccess.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.envaccess.pojo.EnvDeviceCommand; import org.apache.ibatis.annotations.Mapper; @Mapper public interface EnvDeviceCommandMapper extends BaseMapper<EnvDeviceCommand> { } src/main/java/com/ruoyi/envaccess/pojo/EnvDeviceCommand.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,52 @@ package com.ruoyi.envaccess.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("env_device_command") public class EnvDeviceCommand { @TableId(type = IdType.AUTO) private Long id; @ApiModelProperty("设å¤å°è´¦id") private Long deviceLedgerId; @ApiModelProperty("设å¤åç§°") private String deviceName; @ApiModelProperty("æä»¤ç±»å start=å¯å¨ stop=忢") private String commandType; @ApiModelProperty("æä»¤ç¶æ pending=ä¸åä¸ success=æå failed=失败") private String commandStatus; @ApiModelProperty("æä½äºº") private String operator; @ApiModelProperty("ä¸åæ¶é´") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime commandTime; @ApiModelProperty("æ§è¡ç»æ") private String resultMsg; private String remark; private Long tenantId; private Long createUser; private LocalDateTime createTime; private Long updateUser; private LocalDateTime updateTime; } src/main/java/com/ruoyi/procurementrecord/controller/StockTakingController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,71 @@ package com.ruoyi.procurementrecord.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.procurementrecord.mapper.StockTakingMapper; import com.ruoyi.procurementrecord.pojo.StockTaking; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.Arrays; @RestController @RequestMapping("/stockTaking") @Api(tags = "ä»å¨ç©æµ-åºåçç¹") public class StockTakingController { @Autowired private StockTakingMapper stockTakingMapper; @GetMapping("/listPage") public AjaxResult listPage(Page page, StockTaking q) { LambdaQueryWrapper<StockTaking> w = new LambdaQueryWrapper<>(); if (q != null) { if (q.getProductCategory() != null && !q.getProductCategory().isEmpty()) { w.like(StockTaking::getProductCategory, q.getProductCategory()); } if (q.getSpecificationModel() != null && !q.getSpecificationModel().isEmpty()) { w.like(StockTaking::getSpecificationModel, q.getSpecificationModel()); } } w.orderByDesc(StockTaking::getId); return AjaxResult.success(stockTakingMapper.selectPage(page, w)); } @PostMapping public AjaxResult add(@RequestBody StockTaking o) { if (o.getBookNum() != null && o.getActualNum() != null) { o.setDiffNum(o.getActualNum().subtract(o.getBookNum())); } fillTenant(o); o.setCreateTime(LocalDateTime.now()); o.setUpdateTime(LocalDateTime.now()); return AjaxResult.success(stockTakingMapper.insert(o) > 0); } @PutMapping public AjaxResult edit(@RequestBody StockTaking o) { if (o.getBookNum() != null && o.getActualNum() != null) { o.setDiffNum(o.getActualNum().subtract(o.getBookNum())); } o.setUpdateTime(LocalDateTime.now()); return AjaxResult.success(stockTakingMapper.updateById(o) > 0); } @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return AjaxResult.success(stockTakingMapper.deleteBatchIds(Arrays.asList(ids)) > 0); } private void fillTenant(StockTaking o) { if (o.getTenantId() == null) { try { o.setTenantId(com.ruoyi.common.utils.SecurityUtils.getLoginUser().getTenantId()); } catch (Exception ignored) { } } } } src/main/java/com/ruoyi/procurementrecord/controller/StockTimeSettingController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ package com.ruoyi.procurementrecord.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.procurementrecord.mapper.StockTimeSettingMapper; import com.ruoyi.procurementrecord.pojo.StockTimeSetting; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; @RestController @RequestMapping("/stockTimeSetting") @Api(tags = "ä»å¨ç©æµ-åºåæ¶é´è®¾ç½®") public class StockTimeSettingController { @Autowired private StockTimeSettingMapper stockTimeSettingMapper; @GetMapping("/list") public AjaxResult list() { LambdaQueryWrapper<StockTimeSetting> w = new LambdaQueryWrapper<>(); w.orderByDesc(StockTimeSetting::getId); List<StockTimeSetting> list = stockTimeSettingMapper.selectList(w); return AjaxResult.success(list); } @PostMapping public AjaxResult add(@RequestBody StockTimeSetting o) { fillTenant(o); o.setCreateTime(LocalDateTime.now()); o.setUpdateTime(LocalDateTime.now()); return AjaxResult.success(stockTimeSettingMapper.insert(o) > 0); } @PutMapping public AjaxResult edit(@RequestBody StockTimeSetting o) { o.setUpdateTime(LocalDateTime.now()); return AjaxResult.success(stockTimeSettingMapper.updateById(o) > 0); } @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return AjaxResult.success(stockTimeSettingMapper.deleteBatchIds(Arrays.asList(ids)) > 0); } private void fillTenant(StockTimeSetting o) { if (o.getTenantId() == null) { try { o.setTenantId(com.ruoyi.common.utils.SecurityUtils.getLoginUser().getTenantId()); } catch (Exception ignored) { } } } } src/main/java/com/ruoyi/procurementrecord/mapper/StockTakingMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.procurementrecord.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.procurementrecord.pojo.StockTaking; import org.apache.ibatis.annotations.Mapper; @Mapper public interface StockTakingMapper extends BaseMapper<StockTaking> { } src/main/java/com/ruoyi/procurementrecord/mapper/StockTimeSettingMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.ruoyi.procurementrecord.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.procurementrecord.pojo.StockTimeSetting; import org.apache.ibatis.annotations.Mapper; @Mapper public interface StockTimeSettingMapper extends BaseMapper<StockTimeSetting> { } src/main/java/com/ruoyi/procurementrecord/pojo/StockTaking.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,64 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @Data @TableName("stock_taking") public class StockTaking { @TableId(type = IdType.AUTO) private Long id; @ApiModelProperty("çç¹åå·") private String code; @ApiModelProperty("åºåè®°å½id") private Integer customStorageId; @ApiModelProperty("æ¹æ¬¡å·") private String inboundBatches; @ApiModelProperty("产å大类") private String productCategory; @ApiModelProperty("è§æ ¼åå·") private String specificationModel; @ApiModelProperty("åä½") private String unit; @ApiModelProperty("è´¦é¢æ°é") private BigDecimal bookNum; @ApiModelProperty("å®çæ°é") private BigDecimal actualNum; @ApiModelProperty("差弿°é") private BigDecimal diffNum; @ApiModelProperty("çç¹æ¥æ") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate takingDate; @ApiModelProperty("çç¹äºº") private String takingUser; @ApiModelProperty("夿³¨") private String remark; private Long createUser; private LocalDateTime createTime; private Long updateUser; private LocalDateTime updateTime; @com.baomidou.mybatisplus.annotation.TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT) private Long tenantId; } src/main/java/com/ruoyi/procurementrecord/pojo/StockTimeSetting.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.ruoyi.procurementrecord.pojo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("stock_time_setting") public class StockTimeSetting { @TableId(type = IdType.AUTO) private Long id; @ApiModelProperty("é¢è¦æ£æµæ¶é´(HH:mm)") private String warningCheckTime; @ApiModelProperty("çç¹å¨æ(æ¥/å¨/æ)") private String stockTakingCycle; @ApiModelProperty("å¨è½¬çé¢è¦å¤©æ°") private Integer turnoverWarnDays; @ApiModelProperty("æ¯æèªå¨çç¹æ¥") private Integer autoTakingDay; @ApiModelProperty("æ¯å¦å¯ç¨") private Integer enabled; @ApiModelProperty("夿³¨") private String remark; private Long createUser; private LocalDateTime createTime; private Long updateUser; private LocalDateTime updateTime; @com.baomidou.mybatisplus.annotation.TableField(fill = com.baomidou.mybatisplus.annotation.FieldFill.INSERT) private Long tenantId; }