diff --git a/src/main/java/org/springblade/common/utils/LogUtil.java b/src/main/java/org/springblade/common/utils/LogUtil.java index 83af0ad..c340c2e 100644 --- a/src/main/java/org/springblade/common/utils/LogUtil.java +++ b/src/main/java/org/springblade/common/utils/LogUtil.java @@ -33,7 +33,9 @@ import com.google.zxing.qrcode.QRCodeWriter; import lombok.AllArgsConstructor; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.DateUtil; +import org.springblade.modules.business.pojo.entity.supplies.ApplyLog; import org.springblade.modules.business.pojo.entity.workorder.WorkOrderLog; +import org.springblade.modules.business.service.IApplyLogService; import org.springblade.modules.business.service.IWorkOrderLogService; import org.springblade.modules.business.service.IWorkOrderService; @@ -50,13 +52,6 @@ import java.util.Base64; public class LogUtil { - /** - * 二维码生成(转base64) - * @param content - * @return - * @throws WriterException - * @throws IOException - */ public static void saveLog(String code,String content){ IWorkOrderLogService workOrderLogService = ApplicationContextUtil.getBean(IWorkOrderLogService.class); WorkOrderLog log = new WorkOrderLog(); @@ -67,4 +62,15 @@ public class LogUtil { log.setIsDeleted(0); workOrderLogService.save(log); } + + public static void saveApplyLog(String code,String content){ + IApplyLogService applyLogService = ApplicationContextUtil.getBean(IApplyLogService.class); + ApplyLog log = new ApplyLog(); + log.setCode(code); + log.setContent(content); + log.setCreateTime(DateUtil.now()); + log.setStatus(0); + log.setIsDeleted(0); + applyLogService.save(log); + } } diff --git a/src/main/java/org/springblade/modules/business/config/ScheduledService.java b/src/main/java/org/springblade/modules/business/config/ScheduledService.java index 9705ffc..03a2975 100644 --- a/src/main/java/org/springblade/modules/business/config/ScheduledService.java +++ b/src/main/java/org/springblade/modules/business/config/ScheduledService.java @@ -2,6 +2,8 @@ package org.springblade.modules.business.config; import lombok.extern.slf4j.Slf4j; import org.springblade.modules.business.service.IMaintenancePlanService; +import org.springblade.modules.business.service.supplies.IApplyDetailService; +import org.springblade.modules.business.service.supplies.IApplyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -14,6 +16,8 @@ public class ScheduledService { @Autowired private IMaintenancePlanService maintenancePlanService; + @Autowired + private IApplyDetailService applyDetailService; /** * 每天零点生成新的巡查任务 @@ -23,4 +27,13 @@ public class ScheduledService { LocalDate now = LocalDate.now().minusDays(-5); maintenancePlanService.createTask(now); } + + /** + * 每天1点查询待归还的申领记录发送消息提醒 + */ + @Scheduled(cron = "0 0 1 * * ?") +// @Scheduled(cron = "0 0/1 * * * ? ") + private void sendApplyReturnMessage() { + applyDetailService.sendApplyReturnMessage(); + } } diff --git a/src/main/java/org/springblade/modules/business/contraller/ApplyLogController.java b/src/main/java/org/springblade/modules/business/contraller/ApplyLogController.java new file mode 100644 index 0000000..7d26323 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/contraller/ApplyLogController.java @@ -0,0 +1,42 @@ +package org.springblade.modules.business.contraller; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.CommonConstant; +import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.base.BaseEntity; +import org.springblade.core.tool.api.R; +import org.springblade.modules.business.pojo.entity.supplies.ApplyLog; +import org.springblade.modules.business.service.IApplyLogService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 工单表 控制器 + * + * @author BladeX + * @since 2024-10-14 + */ +@Slf4j +@RestController +@AllArgsConstructor +@RequestMapping(CommonConstant.APPLICATION_PROJECT + "/apply-log") +public class ApplyLogController extends BladeController { + + private final IApplyLogService applyLogService; + + /** + * 工单列表 + */ + @GetMapping("/find-list-by-code") + public R> findListByCode(String code) { + List list = applyLogService.list(Wrappers.lambdaQuery(ApplyLog.class).eq(ApplyLog::getCode,code).eq(BaseEntity::getIsDeleted,0)); + return R.data(list); + } + + +} diff --git a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java index fc7158a..85d8452 100644 --- a/src/main/java/org/springblade/modules/business/contraller/DeviceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/DeviceController.java @@ -80,6 +80,16 @@ public class DeviceController extends BladeController { return R.data(deviceVO); } + /** + * 根据查询条件查询列表 + */ + @GetMapping("/findList") + @ApiOperationSupport(order = 1) + public R> findList(Device device) { + List list = deviceService.list(Condition.getQueryWrapper(device)); + return R.data(list); + } + /** * 设备表 分页 */ diff --git a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java index 9a4a2ba..996080e 100644 --- a/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java +++ b/src/main/java/org/springblade/modules/business/contraller/MaintenanceController.java @@ -9,6 +9,9 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import org.springblade.common.cache.SysCache; +import org.springblade.common.cache.UserCache; import org.springblade.common.constant.CommonConstant; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.base.BaseEntity; @@ -32,6 +35,7 @@ import org.springblade.modules.system.pojo.entity.Dept; import org.springblade.modules.system.pojo.entity.User; import org.springblade.modules.system.service.IDeptService; import org.springblade.modules.system.service.IUserService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -49,7 +53,7 @@ import java.util.stream.Collectors; * @author liuqingkun */ @RestController -@AllArgsConstructor +@RequiredArgsConstructor @RequestMapping(CommonConstant.APPLICATION_PROJECT + "/maintenance") @Tag(name = "维保控制器", description = "维控制器") public class MaintenanceController extends BladeController { @@ -64,6 +68,8 @@ public class MaintenanceController extends BladeController { private final IMessageService messageService; private final IUserService userService; private final IDeptService deptService; + @Value("${sms.template-id2}") + private String templateCode; /*---------- 维修计划开始 ----------*/ @@ -173,7 +179,10 @@ public class MaintenanceController extends BladeController { taskOld.setServicemanName(task.getServicemanName()); taskOld.setTaskStatus(MaintenanceStatusEnum.TASK_SUPERVISOR_CONFIRM.getValue()); taskService.updateById(taskOld); - smsService.sendSms("15053473693", "张迪"); + User user = UserCache.getUser(task.getServicemanId()); + if(StringUtils.isNotEmpty(user.getPhone())){ + smsService.sendSms(user.getPhone(), user.getRealName(),templateCode); + } return R.success(); } diff --git a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java index 1ea1e70..6c5b173 100644 --- a/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java +++ b/src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.mysql.cj.log.Log; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; @@ -285,7 +286,7 @@ public class WorkOrderController extends BladeController { WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); workOrderOld.setRepairPerson(workOrder.getRepairPerson()); workOrderOld.setDispatchTime(DateUtil.now()); - workOrderOld.setPlanCompleteTime(workOrder.getPlanCompleteTime()); + workOrderOld.setExpectCompleteTime(workOrder.getExpectCompleteTime()); workOrderOld.setRemark(workOrder.getRemark()); workOrderOld.setCustomerOpinion(workOrder.getCustomerOpinion()); workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_ALLOT.getValue()); @@ -697,4 +698,23 @@ public class WorkOrderController extends BladeController { workOrderService.batchReportService(workOrderList, response); } + + /** + * 删除 + */ + @PostMapping("/remove") + public R remove(@RequestParam String ids) { + return R.status(workOrderService.deleteLogic(Func.toLongList(ids))); + } + + /** + * 维修人员撤回维修方案 + */ + @ApiLog(value = "提报管理-维修人员撤回维修方案") + @PostMapping("/return") + public R update(@RequestBody WorkOrder workOrder) { + workOrderService.updateById(workOrder); + LogUtil.saveLog(workOrder.getRequirementCode(),"维修人员撤回维修方案。"); + return R.status(true); + } } diff --git a/src/main/java/org/springblade/modules/business/contraller/supplies/ApplyController.java b/src/main/java/org/springblade/modules/business/contraller/supplies/ApplyController.java index 5a2b362..d7f65d2 100644 --- a/src/main/java/org/springblade/modules/business/contraller/supplies/ApplyController.java +++ b/src/main/java/org/springblade/modules/business/contraller/supplies/ApplyController.java @@ -10,6 +10,7 @@ import lombok.AllArgsConstructor; import org.apache.commons.lang3.time.DateFormatUtils; import org.springblade.common.cache.DeptCache; import org.springblade.common.cache.UserCache; +import org.springblade.common.utils.LogUtil; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.support.Condition; @@ -35,7 +36,9 @@ import org.springblade.modules.system.service.IDeptService; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -133,29 +136,51 @@ public class ApplyController extends BladeController { @PostMapping("/save") @ApiOperationSupport(order = 4) public R save(@Valid @RequestBody ApplyDTO apply) { -// User user = UserCache.getUser(AuthUtil.getUserId()); - List details = apply.getDetails(); -// apply.setApplyTime(new Date()); -// apply.setApplyUserId(user.getId());0 -// apply.setApplyUser(user.getRealName()); - apply.setIsUpdate(-1); - apply.setCode("SL-" + DateFormatUtils.format(new Date(),"yyyyMMddHHmmss")); - apply.setApplyTypeNum(details.size()); - long count = details.stream().filter(applyDetail -> applyDetail.getReturnTime() != null).count(); - apply.setIsReturn(count > 0 ? 1 : 0); - boolean save = applyService.save(apply); + if(apply.getId() == null){ + List details = apply.getDetails(); + apply.setIsUpdate(-1); + apply.setCode("SL-" + DateFormatUtils.format(new Date(),"yyyyMMddHHmmss")); + apply.setApplyTypeNum(details.size()); + long count = details.stream().filter(applyDetail -> applyDetail.getReturnTime() != null).count(); + apply.setIsReturn(count > 0 ? 1 : 0); + boolean save = applyService.save(apply); - if (CollectionUtil.isNotEmpty(details)) { - for (ApplyDetail applyDetail : details) { - applyDetail.setApplyId(apply.getId()); - applyDetail.setIsCk(0); - applyDetail.setReturnNum(0); - applyDetail.setOutNum(0); - applyDetail.setIsReturn(applyDetail.getReturnTime() != null ? 1 : 0); + if (CollectionUtil.isNotEmpty(details)) { + for (ApplyDetail applyDetail : details) { + applyDetail.setApplyId(apply.getId()); + applyDetail.setIsCk(0); + applyDetail.setReturnNum(0); + applyDetail.setOutNum(0); + applyDetail.setIsReturn(applyDetail.getReturnTime() != null ? 1 : 0); + } + applyDetailService.saveBatch(details); + } + LogUtil.saveApplyLog(apply.getCode(),AuthUtil.getNickName()+"新增申领记录!"); + }else{ + List details = apply.getDetails(); + apply.setIsUpdate(-1); + apply.setApplyTypeNum(details.size()); + long count = details.stream().filter(applyDetail -> applyDetail.getReturnTime() != null).count(); + apply.setIsReturn(count > 0 ? 1 : 0); + applyService.updateById(apply); + if (CollectionUtil.isNotEmpty(details)) { + //申领明细全删全增 + Map map = new HashMap<>(); + map.put("apply_id",apply.getId()); + applyDetailService.removeByMap(map); + for (ApplyDetail applyDetail : details) { + applyDetail.setApplyId(apply.getId()); + applyDetail.setIsCk(0); + applyDetail.setReturnNum(0); + applyDetail.setOutNum(0); + applyDetail.setIsReturn(applyDetail.getReturnTime() != null ? 1 : 0); + } + applyDetailService.saveBatch(details); } - applyDetailService.saveBatch(details); + LogUtil.saveApplyLog(apply.getCode(),AuthUtil.getNickName()+"重新提交申领记录!"); } - return R.status(save); + + return R.status(true); } /** @@ -177,6 +202,28 @@ public class ApplyController extends BladeController { apply.setApproveUserId(user.getId()); apply.setApproveUser(user.getRealName()); apply.setApproveTime(new Date()); + if(apply.getStatus() == 1){ + List detailList = applyDetailService.list(Wrappers.lambdaQuery(ApplyDetail.class).eq(ApplyDetail::getApplyId,apply.getId()).eq(BaseEntity::getIsDeleted,0)); + List ids = detailList.stream().map(ApplyDetail::getProductId).collect(Collectors.toList()); + List goodsList = goodsService.listByIds(ids); + if (CollectionUtil.isNotEmpty(goodsList)) { + for (Goods goods : goodsList) { + for (ApplyDetail applyDetail : detailList) { + if (goods.getId().equals(applyDetail.getProductId())) { + int i = goods.getNum() - applyDetail.getApplyNum(); + goods.setNum(Math.max(i, 0)); + break; + } + } + } + goodsService.updateBatchById(goodsList); + } + LogUtil.saveApplyLog(apply.getCode(),user.getRealName()+"审批通过!"); + }else{ + LogUtil.saveApplyLog(apply.getCode(),user.getRealName()+"审批驳回!"); + } + + return R.status(applyService.updateById(apply)); } @@ -189,7 +236,7 @@ public class ApplyController extends BladeController { apply.setStatus(apply.getIsReturn() == 1 ? 3 : 2); apply.setCkTime(new Date()); List detailList = apply.getDetails(); - List ids = detailList.stream().map(ApplyDetail::getProductId).collect(Collectors.toList()); + /* List ids = detailList.stream().map(ApplyDetail::getProductId).collect(Collectors.toList()); List goodsList = goodsService.listByIds(ids); if (CollectionUtil.isNotEmpty(goodsList)) { for (Goods goods : goodsList) { @@ -205,11 +252,18 @@ public class ApplyController extends BladeController { } } goodsService.updateBatchById(goodsList); + }*/ + + for (ApplyDetail applyDetail : detailList) { + applyDetail.setIsCk(1); + applyDetail.setCkTime(new Date()); + applyDetail.setOutNum(applyDetail.getApplyNum()); } if (CollectionUtil.isNotEmpty(detailList)) { applyDetailService.updateBatchById(detailList); } + LogUtil.saveApplyLog(apply.getCode(),AuthUtil.getNickName()+"领取物资出库!"); return R.status(applyService.updateById(apply)); } @@ -239,6 +293,7 @@ public class ApplyController extends BladeController { if (CollectionUtil.isNotEmpty(detailList)) { applyDetailService.updateBatchById(detailList); } + LogUtil.saveApplyLog(apply.getCode(),AuthUtil.getNickName()+"归还物资!"); return R.status(applyService.updateById(apply)); } diff --git a/src/main/java/org/springblade/modules/business/contraller/supplies/GoodsController.java b/src/main/java/org/springblade/modules/business/contraller/supplies/GoodsController.java index 4e613e9..0b10901 100644 --- a/src/main/java/org/springblade/modules/business/contraller/supplies/GoodsController.java +++ b/src/main/java/org/springblade/modules/business/contraller/supplies/GoodsController.java @@ -59,7 +59,7 @@ public class GoodsController extends BladeController { Goods detail = goodsService.getById(goods.getId()); detail.setBigClassName(DictBizCache.getValue(GOODS_TYPE, detail.getBigClassId())); detail.setTypeName(DictBizCache.getValue(MAJOR_TYPE, detail.getType())); - detail.setInventoryPrice(detail.getPurchasePrice() != null ? 0.00 : detail.getNum() * detail.getPurchasePrice()); + detail.setInventoryPrice(detail.getPurchasePrice() == null ? 0.00 : detail.getNum() * detail.getPurchasePrice()); return R.data(detail); } @@ -108,6 +108,7 @@ public class GoodsController extends BladeController { @PostMapping("/update") @ApiOperationSupport(order = 5) public R update(@RequestBody Goods goods) { + return R.status(goodsService.updateById(goods)); } diff --git a/src/main/java/org/springblade/modules/business/mapper/ApplyLogMapper.java b/src/main/java/org/springblade/modules/business/mapper/ApplyLogMapper.java new file mode 100644 index 0000000..e703d12 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/ApplyLogMapper.java @@ -0,0 +1,17 @@ + +package org.springblade.modules.business.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springblade.modules.business.pojo.entity.supplies.ApplyLog; +import org.springblade.modules.business.pojo.entity.workorder.WorkOrderLog; + +/** + * 申领日志表 Mapper 接口 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface ApplyLogMapper extends BaseMapper { + + +} diff --git a/src/main/java/org/springblade/modules/business/mapper/ApplyLogMapper.xml b/src/main/java/org/springblade/modules/business/mapper/ApplyLogMapper.xml new file mode 100644 index 0000000..9059492 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/mapper/ApplyLogMapper.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/supplies/ApplyLog.java b/src/main/java/org/springblade/modules/business/pojo/entity/supplies/ApplyLog.java new file mode 100644 index 0000000..652b181 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/pojo/entity/supplies/ApplyLog.java @@ -0,0 +1,31 @@ +package org.springblade.modules.business.pojo.entity.supplies; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 申领日志表 实体类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Data +@TableName("lab_apply_log") +@EqualsAndHashCode(callSuper = true) +public class ApplyLog extends BaseEntity { + + /** + * 申领单号 + */ + private String code; + + + /** + * 备注 + */ + private String content; + + +} diff --git a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java index 9bbaa6f..0dca8b5 100644 --- a/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java +++ b/src/main/java/org/springblade/modules/business/pojo/entity/workorder/WorkOrder.java @@ -271,4 +271,14 @@ public class WorkOrder extends BaseEntity { * 维修完成图片url */ private String completeImgList; + + /** + * 总费用 + */ + private Double totalCost; + + /** + * 预期完成时间 + */ + private Date expectCompleteTime; } diff --git a/src/main/java/org/springblade/modules/business/service/IApplyLogService.java b/src/main/java/org/springblade/modules/business/service/IApplyLogService.java new file mode 100644 index 0000000..49db802 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/IApplyLogService.java @@ -0,0 +1,16 @@ +package org.springblade.modules.business.service; + +import org.springblade.core.mp.base.BaseService; +import org.springblade.modules.business.pojo.entity.supplies.ApplyLog; +import org.springblade.modules.business.pojo.entity.workorder.WorkOrderLog; + +/** + * 申领日志表 服务类 + * + * @author BladeX + * @since 2024-10-14 + */ +public interface IApplyLogService extends BaseService { + + +} diff --git a/src/main/java/org/springblade/modules/business/service/IMessageService.java b/src/main/java/org/springblade/modules/business/service/IMessageService.java index e3bea40..6a55506 100644 --- a/src/main/java/org/springblade/modules/business/service/IMessageService.java +++ b/src/main/java/org/springblade/modules/business/service/IMessageService.java @@ -21,4 +21,7 @@ public interface IMessageService extends BaseService { void updateMessageStatus(Long id, Integer status); void updateMessageStatusAll(); + + + void saveApplyReturnMessage(String code, String content, Long messageUser, Integer messageType); } diff --git a/src/main/java/org/springblade/modules/business/service/impl/ApplyLogServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/ApplyLogServiceImpl.java new file mode 100644 index 0000000..54709d0 --- /dev/null +++ b/src/main/java/org/springblade/modules/business/service/impl/ApplyLogServiceImpl.java @@ -0,0 +1,23 @@ +package org.springblade.modules.business.service.impl; + +import lombok.AllArgsConstructor; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.modules.business.mapper.ApplyLogMapper; +import org.springblade.modules.business.mapper.WorkOrderLogMapper; +import org.springblade.modules.business.pojo.entity.supplies.ApplyLog; +import org.springblade.modules.business.pojo.entity.workorder.WorkOrderLog; +import org.springblade.modules.business.service.IApplyLogService; +import org.springblade.modules.business.service.IWorkOrderLogService; +import org.springframework.stereotype.Service; + +/** + * 申领日志表 服务实现类 + * + * @author BladeX + * @since 2024-10-14 + */ +@Service +@AllArgsConstructor +public class ApplyLogServiceImpl extends BaseServiceImpl implements IApplyLogService { + +} diff --git a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java index 339b9a1..ae4b90c 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MaintenancePlanServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletResponse; import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; @@ -26,6 +27,7 @@ import org.springblade.modules.business.sms.SmsService; import org.springblade.modules.resource.pojo.entity.Sms; import org.springblade.modules.system.pojo.entity.User; import org.springblade.modules.system.service.IUserService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -45,7 +47,7 @@ import static org.springblade.common.constant.CommonConstant.*; * @since 2024-10-14 */ @Service -@AllArgsConstructor +@RequiredArgsConstructor public class MaintenancePlanServiceImpl extends BaseServiceImpl implements IMaintenancePlanService { private final IMaintenancePlanDetailService planDetailService; @@ -54,6 +56,8 @@ public class MaintenancePlanServiceImpl extends BaseServiceImplupdate().lambda().set(User::getIsMaintenanceClient, 1).like(User::getDeptId, plan.getDeptId()).eq(User::getIsMaintenanceClient, 0)); + userService.update(Wrappers.update().lambda().set(User::getIsMaintenanceClient, 1).like(User::getDeptId, plan.getDeptId()).eq(User::getIsMaintenanceClient, 0)); } return save; } @@ -307,9 +311,9 @@ public class MaintenancePlanServiceImpl extends BaseServiceImpl realName = Optional.ofNullable(maintenanceSupervisor.getRealName()); //TODO 当真实姓名为空时需要处理的逻辑 if (realName.isEmpty()) { - smsService.sendSms(maintenanceSupervisor.getPhone(), "未实名"); + smsService.sendSms(maintenanceSupervisor.getPhone(), "未实名" , templateCode); } else { - smsService.sendSms(maintenanceSupervisor.getPhone(), realName.get()); + smsService.sendSms(maintenanceSupervisor.getPhone(), realName.get(), templateCode); } } } catch (Exception e) { diff --git a/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java index 7ba1301..f4936f2 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java @@ -129,4 +129,20 @@ public class MessageServiceImpl extends BaseServiceImpl updateWrapper.eq("is_read", 0).set("is_read", 1); baseMapper.update(updateWrapper); } + + @Override + public void saveApplyReturnMessage(String code, String content, Long messageUser, Integer messageType) { + Message saveInformation = new Message(); + saveInformation.setRequirementCode(code); + saveInformation.setSystemType("1"); + saveInformation.setTitle("申领单"); + saveInformation.setContent(content); + saveInformation.setMessageUser(messageUser); + saveInformation.setTenantId("000000"); + saveInformation.setLevel(1); + saveInformation.setMethod(2); + saveInformation.setIsRead(0); + saveInformation.setMessageType(messageType); + this.save(saveInformation); + } } diff --git a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java index bb49e5c..e65f66b 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java @@ -300,6 +300,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl map = new HashMap<>(); double total = workOrder.getTotalPrice(); + double totalCost = workOrder.getTotalCost(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); List workOrderRepairMaterialList = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); List workOrderFillDataList = new ArrayList<>(); @@ -676,7 +678,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl limsId = Optional.ofNullable(device.get().getLimsId()); if (limsId.isPresent()) { - map.put("in", String.format("%.2f",(workOrder.getDiscountPrice() != null ? discountPrice.doubleValue() : 0.0) + (workOrder.getLaborCost() == null ? 0 : workOrder.getLaborCost()))); + map.put("in", totalCost); map.put("out", "--"); map.put("sel1", "√"); map.put("sel2", null); @@ -684,7 +686,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl map = new HashMap<>(); double total = workOrder.getTotalPrice(); + double totalCost = workOrder.getTotalCost(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); List workOrderRepairMaterialList = workOrderRepairMaterialService.list(Wrappers.lambdaQuery(WorkOrderRepairMaterial.class).eq(WorkOrderRepairMaterial::getOrderId, workOrder.getId())); List workOrderFillDataList = new ArrayList<>(); @@ -802,21 +805,21 @@ public class WorkOrderServiceImpl extends BaseServiceImpl limsId = Optional.ofNullable(device.get().getLimsId()); if (limsId.isPresent()) { - map.put("in", String.format("%.2f",workOrder.getDiscountPrice() + (workOrder.getLaborCost() != null ? workOrder.getLaborCost() : 0))); + map.put("in", totalCost); map.put("out", "--"); map.put("sel1", "√"); map.put("sel2", null); map.put("inTravel", workOrder.getTravelExpense()); } else { map.put("in", "--"); - map.put("out", String.format("%.2f",total + (workOrder.getLaborCost() != null ? workOrder.getLaborCost() : 0))); + map.put("out", totalCost); map.put("sel2", "√"); map.put("sel1", null); map.put("outTravel", workOrder.getTravelExpense()); } } else { map.put("in", "--"); - map.put("out", String.format("%.2f",total + (workOrder.getLaborCost() != null ? workOrder.getLaborCost() : 0))); + map.put("out", totalCost); map.put("sel2", "√"); map.put("sel1", null); map.put("outTravel", workOrder.getTravelExpense()); diff --git a/src/main/java/org/springblade/modules/business/service/impl/supplies/ApplyDetailServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/supplies/ApplyDetailServiceImpl.java index 4897f2c..47ad509 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/supplies/ApplyDetailServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/supplies/ApplyDetailServiceImpl.java @@ -2,15 +2,28 @@ package org.springblade.modules.business.service.impl.supplies; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.time.DateFormatUtils; +import org.apache.commons.lang.time.DateUtils; +import org.apache.commons.lang3.StringUtils; +import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.utils.CollectionUtil; +import org.springblade.modules.business.mapper.ApplyMapper; +import org.springblade.modules.business.pojo.entity.supplies.Apply; import org.springblade.modules.business.pojo.entity.supplies.ApplyDetail; import org.springblade.modules.business.excel.supplies.ApplyDetailExcel; import org.springblade.modules.business.mapper.ApplyDetailMapper; +import org.springblade.modules.business.service.IMessageService; import org.springblade.modules.business.service.supplies.IApplyDetailService; import org.springblade.modules.business.pojo.vo.supplies.ApplyDetailVO; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 物品申领表明细 服务实现类 @@ -19,8 +32,12 @@ import java.util.List; * @since 2024-10-17 */ @Service +@AllArgsConstructor public class ApplyDetailServiceImpl extends BaseServiceImpl implements IApplyDetailService { + private final IMessageService messageService; + private final ApplyMapper applyMapper; + @Override public IPage selectApplyDetailPage(IPage page, ApplyDetailVO applyDetail) { return page.setRecords(baseMapper.selectApplyDetailPage(page, applyDetail)); @@ -36,4 +53,17 @@ public class ApplyDetailServiceImpl extends BaseServiceImpl list = baseMapper.selectList(Wrappers.lambdaQuery(ApplyDetail.class).eq(ApplyDetail::getIsReturn,0).eq(BaseEntity::getIsDeleted,0).like(ApplyDetail::getReturnTime,tomorrow)); + if(CollectionUtil.isNotEmpty(list)){ + for(ApplyDetail applyDetail : list){ + Apply apply = applyMapper.selectOne(Wrappers.lambdaQuery(Apply.class).eq(Apply::getId,applyDetail.getApplyId()).eq(BaseEntity::getIsDeleted,0)); + messageService.saveApplyReturnMessage(apply.getCode(),"您申领单号【"+apply.getCode()+"】有待归还物品即将到期,请及时归还",apply.getApplyUserId(),4); + } + } + } + } diff --git a/src/main/java/org/springblade/modules/business/service/impl/supplies/GoodsServiceImpl.java b/src/main/java/org/springblade/modules/business/service/impl/supplies/GoodsServiceImpl.java index 2d44835..2793e69 100644 --- a/src/main/java/org/springblade/modules/business/service/impl/supplies/GoodsServiceImpl.java +++ b/src/main/java/org/springblade/modules/business/service/impl/supplies/GoodsServiceImpl.java @@ -77,6 +77,9 @@ public class GoodsServiceImpl extends BaseServiceImpl implem //根据inventoryId查询是否已存在 Goods oldGoods = baseMapper.selectOne(Wrappers.lambdaQuery(Goods.class).eq(Goods::getInventoryId,goods.getInventoryId()).eq(BaseEntity::getIsDeleted,0)); if(oldGoods != null){ + if(!oldGoods.getName().equals(goods.getName())){ + throw new ServiceException("库存id为"+goods.getInventoryId()+"的物品名称与系统中物品名称不一致,请重新确认后再导入!"); + } goods.setId(oldGoods.getId()); goods.setNum(goods.getNum() + oldGoods.getNum()); goods.setAllEnterNum(goods.getNum() + oldGoods.getAllEnterNum()); diff --git a/src/main/java/org/springblade/modules/business/service/supplies/IApplyDetailService.java b/src/main/java/org/springblade/modules/business/service/supplies/IApplyDetailService.java index 7cc5295..faa724a 100644 --- a/src/main/java/org/springblade/modules/business/service/supplies/IApplyDetailService.java +++ b/src/main/java/org/springblade/modules/business/service/supplies/IApplyDetailService.java @@ -34,4 +34,6 @@ public interface IApplyDetailService extends BaseService { */ List exportApplyDetail(Wrapper queryWrapper); + void sendApplyReturnMessage(); + } diff --git a/src/main/java/org/springblade/modules/business/sms/SmsService.java b/src/main/java/org/springblade/modules/business/sms/SmsService.java index 393ff28..c8f7299 100644 --- a/src/main/java/org/springblade/modules/business/sms/SmsService.java +++ b/src/main/java/org/springblade/modules/business/sms/SmsService.java @@ -33,10 +33,10 @@ public class SmsService { @Value("${sms.sign-name}") private String signName; - @Value("${sms.template-id1}") - private String templateCode; +// @Value("${sms.template-id1}") +// private String templateCode; - public void sendSms(String phoneNumber, String name) throws ClientException { + public void sendSms(String phoneNumber, String name, String templateCode) throws ClientException { SendSmsRequest request = new SendSmsRequest(); // 设置短信模板的参数 diff --git a/src/main/resources/excel/WorkOrderServiceSheet.xlsx b/src/main/resources/excel/WorkOrderServiceSheet.xlsx index d1532c9..41d56d1 100644 Binary files a/src/main/resources/excel/WorkOrderServiceSheet.xlsx and b/src/main/resources/excel/WorkOrderServiceSheet.xlsx differ