Browse Source

杰生重构 合同列表

home 2 years ago
parent
commit
dc9233c334

+ 8 - 0
bladex/blade-auth/src/main/java/org/springblade/auth/granter/CaptchaTokenGranter.java

@@ -65,6 +65,14 @@ public class CaptchaTokenGranter extends AbstractTokenGranter {
             case "storageApplet":
                 userAuth = storageAppletLogin(parameters, request);
                 break;
+
+            // 无需验证码登录
+            case "loginWithoutVerificationCode":
+                // 校验账号密码
+                userAuth = verificationAccountPassword(parameters, request);
+                break;
+
+            // 默认登录
             default:
                 // 校验验证码
                 verificationCode(request);

+ 27 - 0
hx-common/common-tool/src/main/java/com/fjhx/base/Condition.java

@@ -3,7 +3,9 @@ package com.fjhx.base;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.utils.Assert;
+import com.fjhx.utils.PageUtil;
 import org.springblade.core.log.exception.ServiceException;
 
 import java.util.Date;
@@ -52,6 +54,27 @@ public class Condition extends HashMap<String, Object> {
     }
 
     /**
+     * 审批状态
+     */
+    public Integer getFlowStatus() {
+        return getInt("flowStatus");
+    }
+
+    /**
+     * 类型
+     */
+    public Integer getType() {
+        return getInt("type");
+    }
+
+    /**
+     * 状态
+     */
+    public Integer getStatus() {
+        return getInt("status");
+    }
+
+    /**
      * 获取字符串
      */
     public String getStr(String str) {
@@ -78,4 +101,8 @@ public class Condition extends HashMap<String, Object> {
         return Convert.toInt(get(str));
     }
 
+    public Page<Object> getPage() {
+        return new Page<>(PageUtil.getCurrent(this), PageUtil.getSize(this));
+    }
+
 }

+ 1 - 1
hx-common/common-tool/src/main/java/com/fjhx/utils/WrapperUtil.java

@@ -48,7 +48,7 @@ public class WrapperUtil {
      *
      * @param condition 查询条件
      */
-    public static WrapperUtil init(Map<String, String> condition, QueryWrapper<?> wrapper) {
+    public static WrapperUtil init(Map<String, ?> condition, QueryWrapper<?> wrapper) {
         WrapperUtil wrapperUtil = new WrapperUtil();
         wrapperUtil.wrapper = wrapper;
         wrapperUtil.condition = condition;

+ 4 - 13
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/base/StorageBaseService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fjhx.utils.PageUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 
 import java.util.*;
@@ -18,24 +19,14 @@ public interface StorageBaseService<T> extends IService<T> {
      * 获取分页
      */
     default Page<T> createPage(Map<String, ?> condition) {
-        return new Page<>(getCurrent(condition), getSize(condition));
+        return new Page<>(PageUtil.getCurrent(condition), PageUtil.getSize(condition));
     }
 
     /**
      * 获取分页
      */
     default Page<Map<String, Object>> createPageMap(Map<String, ?> condition) {
-        return new Page<>(getCurrent(condition), getSize(condition));
-    }
-
-    default int getCurrent(Map<String, ?> condition) {
-        Object currentObj = condition.get("pageNum");
-        return ObjectUtil.isEmpty(currentObj) ? 1 : Integer.parseInt(currentObj.toString());
-    }
-
-    default int getSize(Map<String, ?> condition) {
-        Object sizeObj = condition.get("pageSize");
-        return ObjectUtil.isEmpty(sizeObj) ? 10 : Integer.parseInt(sizeObj.toString());
+        return new Page<>(PageUtil.getCurrent(condition), PageUtil.getSize(condition));
     }
 
     /**
@@ -45,7 +36,7 @@ public interface StorageBaseService<T> extends IService<T> {
      * @param queryWrapper wrapper
      * @return 分页后的对象
      */
-    default Page<T> page(Map<String, String> condition, Wrapper<T> queryWrapper) {
+    default Page<T> page(Map<String, ?> condition, Wrapper<T> queryWrapper) {
         Page<T> page = createPage(condition);
         return page(page, queryWrapper);
     }

+ 11 - 7
hx-service-api/storage-restructure-api/src/main/java/com/fjhx/entity/contract/Contract.java

@@ -1,17 +1,15 @@
 package com.fjhx.entity.contract;
 
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.fjhx.base.StorageBaseEntity;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fjhx.base.StorageBaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * <p>
  * 采购合同
@@ -106,6 +104,12 @@ public class Contract extends StorageBaseEntity {
     private Integer payStatus;
 
     /**
+     * 已处理(10否)
+     * 此条合同不能删除
+     */
+    private Integer processed;
+
+    /**
      * 备注
      */
     private String remark;

+ 33 - 11
hx-service/storage-restructure/src/main/java/com/fjhx/controller/contract/ContractController.java

@@ -1,16 +1,17 @@
 package com.fjhx.controller.contract;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.springblade.core.tool.api.R;
-import com.fjhx.entity.contract.Contract;
+import com.fjhx.base.Condition;
 import com.fjhx.params.contract.ContractVo;
 import com.fjhx.service.contract.ContractService;
+import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -28,29 +29,50 @@ public class ContractController {
     @Autowired
     private ContractService contractService;
 
-    @PostMapping("/page")
-    public R page(@RequestBody Map<String, String> condition){
-        Page<Contract> result = contractService.getPage(condition);
-        return R.success(result);
-    }
-
     @PostMapping("/add")
-    public R add(@RequestBody ContractVo contractVo){
+    public R add(@RequestBody ContractVo contractVo) {
         contractService.add(contractVo);
         return R.success();
     }
 
     @PostMapping("/edit")
-    public R edit(@RequestBody ContractVo contractVo){
+    public R edit(@RequestBody ContractVo contractVo) {
         contractService.edit(contractVo);
         return R.success();
     }
 
     @PostMapping("/delete")
-    public R delete(@RequestBody ContractVo contractVo){
+    public R delete(@RequestBody ContractVo contractVo) {
         contractService.delete(contractVo);
         return R.success();
     }
 
+    /**
+     * 金额统计
+     */
+    @PostMapping("/amountStatistics")
+    public R amountStatistics(@RequestBody Condition condition) {
+        Map<Integer, Map<String, Object>> result = contractService.amountStatistics(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 分页
+     */
+    @PostMapping("/page")
+    public R page(@RequestBody Condition condition) {
+        Page<Map<String, Object>> result = contractService.getPage(condition);
+        return R.success(result);
+    }
+
+    /**
+     * 列表
+     */
+    @PostMapping("/list")
+    public R list(@RequestBody Condition condition) {
+        List<Map<String, Object>> result = contractService.getList(condition);
+        return R.success(result);
+    }
+
 }
 

+ 13 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.java

@@ -1,7 +1,13 @@
 package com.fjhx.mapper.contract;
 
-import com.fjhx.entity.contract.Contract;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.entity.contract.Contract;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -13,4 +19,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ContractMapper extends BaseMapper<Contract> {
 
+    List<Map<String, Object>> amountStatistics(@Param("ew") QueryWrapper<Object> wrapper);
+
+    Page<Map<String, Object>> getPage(@Param("page") Page<Object> page, @Param("ew") QueryWrapper<Object> wrapper);
+
+    List<Map<String, Object>> getList(@Param("ew") QueryWrapper<Object> wrapper);
+
 }

+ 42 - 0
hx-service/storage-restructure/src/main/java/com/fjhx/mapper/contract/ContractMapper.xml

@@ -2,4 +2,46 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mapper.contract.ContractMapper">
 
+    <select id="amountStatistics" resultType="java.util.Map">
+        select ifnull(sum(c.amount_money), 0) amountMoney,
+               m.technology_type              type
+        from contract c
+                 left join contract_details cd on c.id = cd.contract_id
+                 left join material m on cd.material_id = m.id
+                 left join supplier s on c.supplier_id = s.id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getPage" resultType="java.util.Map">
+        <include refid="select"/>
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="getList" resultType="java.util.Map">
+        <include refid="select"/>
+        ${ew.customSqlSegment}
+    </select>
+
+    <sql id="select">
+        select cd.contract_code,
+               cd.apply_purchase_code,
+               adddate(now(), interval m.safety_warn_day day) deliverTime,
+               m.code                                         materialCode,
+               m.name                                         materialName,
+               m.spec                                         materialSpec,
+               s.name                                         supplierName,
+               st.quantity                                    stockQuantity,
+               cd.quantity                                    buyQuantity,
+               cd.afloat_quantity,
+               cd.price,
+               c.amount_money,
+               c.flow_status,
+               c.processed
+        from contract c
+                 left join contract_details cd on c.id = cd.contract_id
+                 left join material m on cd.material_id = m.id
+                 left join supplier s on c.supplier_id = s.id
+                 left join stock st on m.id = st.material_id
+    </sql>
+
 </mapper>

+ 17 - 2
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/ContractService.java

@@ -1,11 +1,13 @@
 package com.fjhx.service.contract;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.base.Condition;
 import com.fjhx.base.StorageBaseService;
 import com.fjhx.entity.contract.Contract;
 import com.fjhx.params.apply.ApplyPurchaseVo;
 import com.fjhx.params.contract.ContractVo;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -18,8 +20,6 @@ import java.util.Map;
  */
 public interface ContractService extends StorageBaseService<Contract> {
 
-    Page<Contract> getPage(Map<String, String> condition);
-
     void add(ContractVo contractVo);
 
     void edit(ContractVo contractVo);
@@ -33,4 +33,19 @@ public interface ContractService extends StorageBaseService<Contract> {
      */
     void create(ApplyPurchaseVo applyVo);
 
+    /**
+     * 金额统计
+     */
+    Map<Integer, Map<String, Object>> amountStatistics(Condition condition);
+
+    /**
+     * 分页
+     */
+    Page<Map<String, Object>> getPage(Condition condition);
+
+    /**
+     * 列表
+     */
+    List<Map<String, Object>> getList(Condition condition);
+
 }

+ 96 - 17
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java

@@ -2,30 +2,30 @@ package com.fjhx.service.contract.impl;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.base.Condition;
 import com.fjhx.constants.ConfigConstant;
 import com.fjhx.entity.apply.ApplyPurchaseDetails;
 import com.fjhx.entity.contract.Contract;
 import com.fjhx.entity.contract.ContractDetails;
 import com.fjhx.enums.FlowStatusEnum;
+import com.fjhx.enums.MaterialTypeEnum;
 import com.fjhx.mapper.contract.ContractMapper;
 import com.fjhx.params.apply.ApplyPurchaseVo;
 import com.fjhx.params.contract.ContractVo;
 import com.fjhx.service.common.CommonConfigService;
 import com.fjhx.service.contract.ContractDetailsService;
 import com.fjhx.service.contract.ContractService;
-import com.fjhx.utils.WrapperUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -45,18 +45,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     private ContractDetailsService contractDetailsService;
 
     @Override
-    public Page<Contract> getPage(Map<String, String> condition) {
-
-        QueryWrapper<Contract> wrapper = Wrappers.query();
-
-        WrapperUtil.init(condition, wrapper)
-                .createTimeDesc();
-
-        Page<Contract> page = page(condition, wrapper);
-        return page;
-    }
-
-    @Override
     public void add(ContractVo contractVo) {
         save(contractVo);
     }
@@ -126,6 +114,75 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
 
     }
 
+    @Override
+    public Map<Integer, Map<String, Object>> amountStatistics(Condition condition) {
+
+        Integer flowStatus = condition.getFlowStatus();
+        String keyword = condition.getKeyword();
+
+        QueryWrapper<Object> wrapper = Wrappers.query()
+                .func(flowStatus != null, q -> {
+                    if (ObjectUtil.equals(flowStatus, 1)) {
+                        q.in("c.flow_status", 0, 1);
+                    } else {
+                        q.eq("c.flow_status", flowStatus);
+                    }
+                })
+                .and(q -> q.like("c.code", keyword)
+                        .or().like("cd.apply_purchase_code", keyword)
+                        .or().like("m.code", keyword)
+                        .or().like("m.name", keyword)
+                        .or().like("s.name", keyword)
+                )
+                .orderByAsc("m.technology_type")
+                .groupBy("m.technology_type");
+
+        List<Map<String, Object>> list = baseMapper.amountStatistics(wrapper);
+
+        Map<Integer, Map<String, Object>> result = list.stream().collect(Collectors.toMap(
+                item -> Convert.toInt(item.get("type")),
+                item -> item
+        ));
+
+
+        BigDecimal totalAmountMoney = BigDecimal.ZERO;
+        for (int i = 0; i < 5; i++) {
+
+            Map<String, Object> itemMap = result.get(i);
+
+            if (itemMap == null) {
+                itemMap = new HashMap<>();
+                itemMap.put("type", i);
+                itemMap.put("amountMoney", BigDecimal.ZERO);
+                result.put(i, itemMap);
+            }
+
+            itemMap.put("name", MaterialTypeEnum.getName(i));
+
+            totalAmountMoney = totalAmountMoney.add(Convert.toBigDecimal(itemMap.get("amountMoney")));
+        }
+
+        Map<String, Object> totalMap = new HashMap<>();
+        totalMap.put("amountMoney", totalAmountMoney);
+        totalMap.put("name", "总额");
+        result.put(5, totalMap);
+
+        return result;
+    }
+
+
+    @Override
+    public Page<Map<String, Object>> getPage(Condition condition) {
+        QueryWrapper<Object> wrapper = getWrapper(condition);
+        return baseMapper.getPage(condition.getPage(), wrapper);
+    }
+
+    @Override
+    public List<Map<String, Object>> getList(Condition condition) {
+        QueryWrapper<Object> wrapper = getWrapper(condition);
+        return baseMapper.getList(wrapper);
+    }
+
     /**
      * 获取当天合同编号前缀
      *
@@ -174,4 +231,26 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
         return codePrefix + codeSuffixStr;
     }
 
+    private QueryWrapper<Object> getWrapper(Condition condition) {
+        Integer flowStatus = condition.getFlowStatus();
+        String keyword = condition.getKeyword();
+        Integer type = condition.getType();
+
+        return Wrappers.query()
+                .func(flowStatus != null, q -> {
+                    if (ObjectUtil.equals(flowStatus, 1)) {
+                        q.in("c.flow_status", 0, 1);
+                    } else {
+                        q.eq("c.flow_status", flowStatus);
+                    }
+                })
+                .eq(type != null, "m.technology_type", type)
+                .and(q -> q.like("c.code", keyword)
+                        .or().like("cd.apply_purchase_code", keyword)
+                        .or().like("m.code", keyword)
+                        .or().like("m.name", keyword)
+                        .or().like("s.name", keyword)
+                );
+    }
+
 }

+ 0 - 1
hx-service/storage-restructure/src/main/java/com/fjhx/service/flow/InitiateApplyFlowService.java

@@ -47,7 +47,6 @@ public class InitiateApplyFlowService {
 
             // 生成合同
             contractService.create(applyVo);
-
         }
 
         @Override