Ver Fonte

Merge remote-tracking branch 'origin/master'

Guo1B0 há 1 ano atrás
pai
commit
6725340e66

+ 8 - 15
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/AttachmentCenterController.java

@@ -81,6 +81,7 @@ public class AttachmentCenterController {
                 //截取文件后缀
                 String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
                 record.setAttachmentType(DocumentTypeUtil.DocumentType(fileSuffix));
+                record.setAttachmentSuffix(fileSuffix);
                 //处理文件
                 File dir = new File(uploadPath);
                 if (!dir.exists()) {
@@ -135,20 +136,12 @@ public class AttachmentCenterController {
     public HttpRespMsg rename(Integer id,String name){
         HttpRespMsg msg=new HttpRespMsg();
         AttachmentCenter attachmentCenter = attachmentCenterMapper.selectById(id);
-        File file = new File(uploadPath+ attachmentCenter.getAttachmentName());
+        File file = new File(attachmentCenter.getServerName());
         if(file.exists()){
-            File newFile = new File(uploadPath + name);
-            boolean b = file.renameTo(newFile);
-            if(b){
-                attachmentCenter.setAttachmentName(name);
-                attachmentCenter.setServerName(uploadPath+name);
-                String pathPrefix = "/upload/";
-                attachmentCenter.setUrl(pathPrefix + name);
-                attachmentCenterMapper.updateById(attachmentCenter);
-                msg.setError("文件重命名成功");
-            }else {
-                msg.setError("文件重命名失败");
-            }
+            attachmentCenter.setAttachmentName(name);
+            String pathPrefix = "/upload/";
+            attachmentCenterMapper.updateById(attachmentCenter);
+            msg.setMsg("文件重命名成功");
         }else {
             msg.setError("文件不存在");
         }
@@ -159,12 +152,12 @@ public class AttachmentCenterController {
     public HttpRespMsg delete(Integer id){
         HttpRespMsg msg=new HttpRespMsg();
         AttachmentCenter attachmentCenter = attachmentCenterMapper.selectById(id);
-        File file = new File(uploadPath+ attachmentCenter.getAttachmentName());
+        File file = new File(attachmentCenter.getServerName());
         if(file.exists()){
             boolean delete = file.delete();
             if(delete){
                 attachmentCenterMapper.deleteById(id);
-                msg.setError("文件删除成功");
+                msg.setMsg("文件删除成功");
             }else {
                 msg.setError("文件删除失败");
             }

+ 7 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/AttachmentCenter.java

@@ -19,7 +19,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2024-04-17
+ * @since 2024-04-19
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -84,6 +84,12 @@ public class AttachmentCenter extends Model<AttachmentCenter> {
     @TableField("attachment_type")
     private Integer attachmentType;
 
+    /**
+     * 文件后缀
+     */
+    @TableField("attachment_suffix")
+    private String attachmentSuffix;
+
 
     @Override
     protected Serializable pkVal() {

+ 5 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/AuditLogCenter.java

@@ -6,9 +6,12 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -44,6 +47,8 @@ public class AuditLogCenter extends Model<AuditLogCenter> {
      * 操作时间
      */
     @TableField("audit_time")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private LocalDateTime auditTime;
 
     /**

+ 2 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/AttachmentCenterMapper.xml

@@ -15,11 +15,12 @@
         <result column="module_code" property="moduleCode" />
         <result column="size" property="size" />
         <result column="attachment_type" property="attachmentType" />
+        <result column="attachment_suffix" property="attachmentSuffix" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, attachment_name, server_name, url, creator_id, creator_name, indate, module_id, module_code, size, attachment_type
+        id, attachment_name, server_name, url, creator_id, creator_name, indate, module_id, module_code, size, attachment_type, attachment_suffix
     </sql>
 
 </mapper>

+ 77 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -30,6 +30,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
@@ -105,6 +106,10 @@ public class ReportController {
     private LeaveSheetService leaveSheetService;
     @Resource
     private EstimateTimeSettingMapper estimateTimeSettingMapper;
+    @Resource
+    private UserFvTimeMapper userFvTimeMapper;
+    @Resource
+    private UserCustomMapper userCustomMapper;
 
     //获取任务相关的日报列表
     @RequestMapping("/getTaskReportList")
@@ -1723,6 +1728,78 @@ public class ReportController {
         return httpRespMsg;
     }
 
+    @RequestMapping("/checkBeiSengCardTime")
+    public HttpRespMsg checkBeiSengCardTime(String userId, String dateWorkingTime) throws Exception {
+        HttpRespMsg msg = new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("token"));
+        JSONArray array = JSONArray.parseArray(dateWorkingTime);
+        List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, user.getCompanyId()));
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        List<LocalDate> dateList = new ArrayList<>();
+        for (int i = 0; i < array.size(); i++) {
+            JSONObject jsonObject = array.getJSONObject(i);
+            LocalDate date = LocalDate.parse(jsonObject.getString("date"), df);
+            dateList.add(date);
+        }
+        Optional<LocalDate> max = dateList.stream().max(LocalDate::compareTo);
+        Optional<LocalDate> min = dateList.stream().min(LocalDate::compareTo);
+        //获取景昱的考勤和加班时长,进行比对,如果有不一致的,返回错误
+        //错误信息格式:有加班工资的情况下,返回 异常:2024-04-18日填报工时(6h)不等于考勤总时长(8h);无加班工资情况下,返回 异常:2024-04-18日填报工时(8h)少于考勤工时(10h)
+        List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, df.format(min.get()), df.format(max.get())));
+        StringBuilder warningMsg = new StringBuilder();
+        for (int i = 0; i < array.size(); i++) {
+            JSONObject jsonObject = array.getJSONObject(i);
+            LocalDate date = LocalDate.parse(jsonObject.getString("date"), df);
+            double workingTime = jsonObject.getDouble("workingTime");
+            Optional<UserFvTime> first = userFvTimeList.stream().filter(u -> u.getWorkDate().isEqual(date) && u.getUserId().equals(userId)).findFirst();
+            if(first.isPresent()){
+                if(first.get().getWorkHours()!=null){
+                    Optional<User> optional = userList.stream().filter(u -> u.getId().equals(userId)).findFirst();
+                    User targetUser = optional.get();
+                    List<String> customList = userCustomList.stream().map(UserCustom::getName).collect(Collectors.toList());
+                    if(customList.size()>0&&customList.contains("是否有加班费")){
+                        int index = customList.indexOf("是否有加班费");
+                        targetUser.getPlate1();
+                        String getter="getPlate"+(index+1);
+                        Class<User> aClass = User.class;
+                        Method method = aClass.getMethod(getter);
+                        String invoke = (String) method.invoke(targetUser);
+                        if(StringUtils.isEmpty(invoke)){
+                            msg.setError("人员未设置薪资类型,请联系管理人员");
+                            return msg;
+                        }
+                        if(invoke.equals("有加班费")){
+                            if(!(Double.valueOf(String.valueOf(workingTime)).equals(Double.valueOf(first.get().getWorkHours())))){
+                                if(warningMsg.length()>0){
+                                    warningMsg.append(",");
+                                }
+                                warningMsg.append(df.format(date)+"日填报工时("+workingTime+"h)不等于考勤总时长("+first.get().getWorkHours()+"h)");
+                            }
+                        }else if(invoke.equals("无加班费")){
+                            if((Double.valueOf(String.valueOf(workingTime))<first.get().getWorkHours())){
+                                if(warningMsg.length()>0){
+                                    warningMsg.append(",");
+                                }
+                                warningMsg.append(df.format(date)+"日填报工时("+workingTime+"h)少于考勤工时("+first.get().getWorkHours()+"h)");
+                            }
+                        }
+                    }
+                }
+            }else {
+                warningMsg.append("未查询到考勤信息");
+            }
+        }
+        String warningMsgStr = warningMsg.toString();
+        if (!StringUtils.isEmpty(warningMsgStr)) {
+            if(warningMsgStr.length()>100){
+                warningMsgStr = warningMsgStr.substring(0, 100)+"...";
+            }
+            msg.setError(warningMsgStr);
+        }
+        return msg;
+    }
+
     private void fillReportHours(Report report, BigDecimal hourCost, Double workingTime, Integer timeType, String startTime, String endTime, SimpleDateFormat sdf, TimeType comTimeType, List<TimeAutoExclude> excludeTimeList) {
         if (report.getMultiWorktime() == 0) {
             //普通工时成本计算

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/InsertionPlan/InsertionPlanItem.vue

@@ -39,7 +39,8 @@
                       <span>{{ second_item.user.name }}</span>
                       <span>{{ second_item.status==0?"待接收":second_item.status==1?"进行中":second_item.status==2?"已完工":second_item.status==3?"已中止":"已换人"}}</span>
                       <span class="" v-if="second_item.status==3" @click.stop="distributionProp(planList.planProcedureTotals[0],'change', second_item)"  style="color: #1989fa;">换人</span>
-                      <span class="" v-if="second_item.status==0&&second_item.isChange==1" @click.stop="deletePeople(second_item.id)"  style="color: #1989fa;">删除</span>
+                      <!-- <span class="" v-if="second_item.status==0&&second_item.isChange==1" @click.stop="deletePeople(second_item.id)"  style="color: #1989fa;">删除</span> -->
+                      <span class="" v-if="second_item.status==0" @click.stop="deletePeople(second_item.id)"  style="color: #1989fa;">删除</span>
                 </div>
                 <p style="margin-top:20px;">
                   <span class="" v-if="beDeptList" @click.stop="distributionProp(planList.planProcedureTotals[0],'add')"  style="color: #1989fa;">新增</span>

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/distribution.vue

@@ -51,7 +51,8 @@
                             <span>{{ second_item.user.name }}</span>
                             <span>{{ second_item.status==0?"待接收":second_item.status==1?"进行中":second_item.status==2?"已完工":second_item.status==3?"已中止":"已换人"}}</span>
                             <span class="" v-if="second_item.status==3&&beDeptList" @click="distributionProp(item,index,'change', second_item)"  style="color: #1989fa;">换人</span>
-                            <span class="" v-if="second_item.status==0&&second_item.isChange==1&&beDeptList" @click="deletePeople(second_item.id)"  style="color: #1989fa;">删除</span>
+                            <!-- <span class="" v-if="second_item.status==0&&second_item.isChange==1&&beDeptList" @click="deletePeople(second_item.id)"  style="color: #1989fa;">删除</span> -->
+                            <span class="" v-if="second_item.status==0&&beDeptList" @click="deletePeople(second_item.id)"  style="color: #1989fa;">删除</span>
                       </div>
                       <p style="margin-top:20px;">
                         <span class="" v-if="beDeptList" @click="distributionProp(item,index,'add')"  style="color: #1989fa;">新增</span>