QuYueTing 2 týždňov pred
rodič
commit
c706ebf077

BIN
fhKeeper/formulahousekeeper/management-platform/workTime.2025-11-08.log.gz


+ 15 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/TabletController.java

@@ -8,6 +8,7 @@ import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -33,7 +34,19 @@ public class TabletController {
     }
 
     @RequestMapping("/getDinnerBokingList")
-    public HttpRespMsg getDinnerBookingList(String date) {
-        return mealApplicationsService.getDinnerBookingList(date);
+    public HttpRespMsg getDinnerBookingList(String date, @RequestParam(required = false, defaultValue = "-1" ) Integer status) {
+        return mealApplicationsService.getDinnerBookingList(date, status);
     }
+
+    @RequestMapping("/writeOffCode")
+    public HttpRespMsg writeOffCode(String code) {
+        return mealApplicationsService.writeOffCode(code);
+    }
+
+    @RequestMapping("/getTodayStatistics")
+    public HttpRespMsg getTodayStatistics() {
+        return mealApplicationsService.getTodayStatistics();
+    }
+
+
 }

+ 5 - 4
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/Factory.java

@@ -1,5 +1,6 @@
 package com.management.platform.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
@@ -15,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2025-11-11
+ * @since 2025-11-12
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -24,8 +25,8 @@ public class Factory extends Model<Factory> {
 
     private static final long serialVersionUID=1L;
 
-    @TableId("id")
-    private String id;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
 
     /**
      * 厂区名称
@@ -40,7 +41,7 @@ public class Factory extends Model<Factory> {
     private String code;
 
     /**
-     * 是否启用
+     * 是否启用 0:没启用 ;1:启用;
      */
     @TableField("is_active")
     private String isActive;

+ 32 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/MealApplications.java

@@ -7,9 +7,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>
@@ -39,6 +42,8 @@ public class MealApplications extends Model<MealApplications> {
      * 申请日期
      */
     @TableField("application_date")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private LocalDate applicationDate;
 
     /**
@@ -51,13 +56,13 @@ public class MealApplications extends Model<MealApplications> {
      * 厂区ID
      */
     @TableField("factory_id")
-    private String factoryId;
+    private Integer factoryId;
 
     /**
      * 状态: 0:已申请,1:已使用,2:已取消,3:已过期
      */
     @TableField("status")
-    private String status;
+    private Integer status;
 
     /**
      * 二维码
@@ -69,18 +74,24 @@ public class MealApplications extends Model<MealApplications> {
      * 申请时间
      */
     @TableField("applied_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime appliedAt;
 
     /**
      * 使用时间
      */
     @TableField("used_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime usedAt;
 
     /**
      * 取消时间
      */
     @TableField("cancelled_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime cancelledAt;
 
     /**
@@ -90,15 +101,34 @@ public class MealApplications extends Model<MealApplications> {
     private String cancelReason;
 
     @TableField("created_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createdAt;
 
     @TableField("updated_at")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime updatedAt;
 
+    /**
+     * 预定码
+     */
+    @TableField("code")
+    private String code;
+
+    @TableField(exist = false)
+    private String userName;
+    @TableField(exist = false)
+    private String jobNumber;
+    @TableField(exist = false)
+    private String factoryName;
+    @TableField(exist = false)
+    private String mealTypeName;
 
     @Override
     protected Serializable pkVal() {
         return this.id;
     }
 
+
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/MealTypes.java

@@ -63,6 +63,8 @@ public class MealTypes extends Model<MealTypes> {
     @TableField("update_at")
     private LocalDateTime updateAt;
 
+    @TableField(exist = false)
+    private int count;
 
     @Override
     protected Serializable pkVal() {

+ 5 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/MealApplicationsService.java

@@ -14,5 +14,9 @@ import com.management.platform.util.HttpRespMsg;
  */
 public interface MealApplicationsService extends IService<MealApplications> {
 
-    HttpRespMsg getDinnerBookingList(String date);
+    HttpRespMsg getDinnerBookingList(String date, Integer status);
+
+    HttpRespMsg writeOffCode(String code);
+
+    HttpRespMsg getTodayStatistics();
 }

+ 141 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/MealApplicationsServiceImpl.java

@@ -1,12 +1,26 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.MealApplications;
+import com.management.platform.entity.MealTypes;
+import com.management.platform.entity.User;
+import com.management.platform.entity.Factory;
+import com.management.platform.mapper.FactoryMapper;
 import com.management.platform.mapper.MealApplicationsMapper;
+import com.management.platform.mapper.MealTypesMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.MealApplicationsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -18,8 +32,133 @@ import org.springframework.stereotype.Service;
 @Service
 public class MealApplicationsServiceImpl extends ServiceImpl<MealApplicationsMapper, MealApplications> implements MealApplicationsService {
 
+    @Autowired
+    private HttpServletRequest request;
+    @Resource
+    private MealApplicationsMapper mealApplicationsMapper;
+    @Resource
+    private MealTypesMapper mealTypesMapper;
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private FactoryMapper factoryMapper;
+
+    //获取当天订餐列表
+    @Override
+    public HttpRespMsg getDinnerBookingList(String date, Integer status) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String factoryCode = request.getHeader("factoryCode");
+        if (factoryCode == null) {
+            msg.setError("factoryCode is null");
+            return msg;
+        }
+        Factory factoryItem = factoryMapper.selectOne(new QueryWrapper<Factory>().eq("code", factoryCode));
+        if (factoryItem == null) {
+            msg.setError("factory code not exists");
+            return msg;
+        }
+        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("is_active", 1));
+        List<MealTypes> mealTypesList = mealTypesMapper.selectList(new QueryWrapper<MealTypes>());
+        //按收银机所在厂区查看
+        QueryWrapper<MealApplications> queryWrapper = new QueryWrapper<MealApplications>()
+                .eq("factory_id", factoryItem.getId()).eq("application_date", date).orderByDesc("id");
+        if (status != null && status != -1) {
+            queryWrapper.eq("status", status);
+        }
+        List<MealApplications> mealApplicationsList = mealApplicationsMapper.selectList(queryWrapper);
+        //绑定数据
+        for (MealApplications mealApplications : mealApplicationsList) {
+            for (User user : userList) {
+                if (user.getId().equals(mealApplications.getUserId())) {
+                    mealApplications.setUserName(user.getName());
+                    mealApplications.setJobNumber(user.getJobNumber());
+                }
+            }
+            mealTypesList.stream().filter(mealTypes -> mealTypes.getId().equals(mealApplications.getMealTypeId())).forEach(mealTypes -> mealApplications.setMealTypeName(mealTypes.getName()));
+        }
+        msg.setData(mealApplicationsList);
+        return msg;
+    }
+
+    /**
+     * 核销预定码
+     * @param code
+     * @return
+     */
     @Override
-    public HttpRespMsg getDinnerBookingList(String date) {
-        return null;
+    public HttpRespMsg writeOffCode(String code) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String factoryCode = request.getHeader("factoryCode");
+        if (factoryCode == null) {
+            msg.setError("factory is null");
+            return msg;
+        }
+        Factory factoryItem = factoryMapper.selectOne(new QueryWrapper<Factory>().eq("code", factoryCode));
+        if (factoryItem == null) {
+            msg.setError("factory not exists");
+            return msg;
+        }
+        MealApplications mealApplications = mealApplicationsMapper.selectOne(new QueryWrapper<MealApplications>().eq("code", code));
+        if (mealApplications == null) {
+            msg.setError("预定码不存在,无法核销");
+            return msg;
+        } else if (mealApplications.getFactoryId().equals(factoryItem.getId())) {
+            msg.setError("预定码不属于当前厂区,无法核销");
+            return msg;
+        } else if (!mealApplications.getStatus().equals(0)) {
+            if (mealApplications.getStatus().equals(1)) {
+                msg.setError("预定码已核销");
+                return msg;
+            } else if (mealApplications.getStatus().equals(2)) {
+                msg.setError("预定码已取消");
+                return msg;
+            } else if (mealApplications.getStatus().equals(3)) {
+                msg.setError("预定码已过期");
+                return msg;
+            }
+        } else {
+            //预约码可用
+            mealApplications.setUsedAt(LocalDateTime.now());
+            mealApplications.setStatus(1);
+            mealApplicationsMapper.updateById(mealApplications);
+            return msg;
+        }
+
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getTodayStatistics() {
+        HttpRespMsg msg = new HttpRespMsg();
+        String factoryCode = request.getHeader("factoryCode");
+        System.out.println("getTodayStatistics, factoryCode:"+factoryCode);
+        if (factoryCode == null) {
+            msg.setError("factory is null");
+            return msg;
+        }
+        Factory factoryItem = factoryMapper.selectOne(new QueryWrapper<Factory>().eq("code", factoryCode));
+        if (factoryItem == null) {
+            msg.setError("factory not exists");
+            return msg;
+        }
+        //取今天的
+        String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+
+        QueryWrapper<MealApplications> queryWrapper = new QueryWrapper<MealApplications>().eq("factory_id", factoryItem.getId()).eq("application_date", date).ne("status", 2);
+        List<MealApplications> mealApplicationsList = mealApplicationsMapper.selectList(queryWrapper);
+        //按用餐类型统计人数
+        List<MealTypes> mealTypesList = mealTypesMapper.selectList(new QueryWrapper<MealTypes>());
+        for (MealTypes mealTypes : mealTypesList) {
+            int count = 0;
+            for (MealApplications mealApplications : mealApplicationsList) {
+                if (mealTypes.getId().equals(mealApplications.getMealTypeId())) {
+                    count++;
+                }
+            }
+            mealTypes.setCount(count);
+        }
+        msg.setData(mealTypesList);
+        return msg;
     }
 }

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/application.yml

@@ -128,7 +128,7 @@ referer:
     - mobdevworkshop.ttkuaiban.com
     - devworkshop.ttkuaiban.com
     - 47.101.180.183
-excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject,/user/updateUserDeptHierarchy
+excludeUrls: /tablet/*, /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient,/corpWXAuth,/corpWXScanningAuth,/corpInsideWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/report/getReportListByToken,/report/getProcessErrorData,/project/synchronizationProject,/user/updateUserDeptHierarchy
 
 #企业微信相关参数
 suitId: ww4e237fd6abb635af

+ 2 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/MealApplicationsMapper.xml

@@ -17,11 +17,12 @@
         <result column="cancel_reason" property="cancelReason" />
         <result column="created_at" property="createdAt" />
         <result column="updated_at" property="updatedAt" />
+        <result column="code" property="code" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, user_id, application_date, meal_type_id, factory_id, status, qr_code, applied_at, used_at, cancelled_at, cancel_reason, created_at, updated_at
+        id, user_id, application_date, meal_type_id, factory_id, status, qr_code, applied_at, used_at, cancelled_at, cancel_reason, created_at, updated_at, code
     </sql>
 
 </mapper>