Browse Source

修改出库数量合法性判断

lwx_dev
erdanergou 3 years ago
parent
commit
8b61a6e558
  1. 26
      src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java
  2. 2
      src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java
  3. 12
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  4. 17
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java
  5. 68
      src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml
  6. 5
      src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java
  7. 35
      src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java
  8. 8
      src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java
  9. 109
      src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java
  10. 17
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  11. 8
      src/main/resources/templates/pages/depository/table-in.html
  12. 41
      src/test/java/com/dreamchaser/depository_manage/TestOther.java

26
src/main/java/com/dreamchaser/depository_manage/controller/DepositoryRecordController.java

@ -46,6 +46,10 @@ public class DepositoryRecordController {
private SplitUnitService splitUnitService;
@Autowired
private RoleService roleService;
@GetMapping("/myApply")
public RestResponse findDepositoryInAndOutRecordPByCondition(@RequestParam Map<String, Object> map, HttpServletRequest request) {
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
@ -356,7 +360,7 @@ public class DepositoryRecordController {
}).start();*/
// 开启一个线程开启审批
new Thread(new Runnable() {
/*new Thread(new Runnable() {
@Override
public void run() {
JSONObject jsonObject = qyWxOperationService.sendOutApprovalTemplate(crypt, userToken, ObjectFormatUtil.toInteger(id));
@ -368,7 +372,7 @@ public class DepositoryRecordController {
// 设置过期为7天
redisTemplateForHash.expire(sp_no, 7, TimeUnit.DAYS);
}
}).start();
}).start();*/
}
} else {
@ -460,11 +464,12 @@ public class DepositoryRecordController {
// 查看入库申请
@GetMapping("/applicationInView")
public RestResponse findApplicationInRecordByCondition(@RequestParam Map<String, Object> map, HttpServletRequest request) {
List<ApplicationInRecordP> list = depositoryRecordService.findApplicationInRecordPByCondition(map, request);
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
List<ApplicationInRecordP> list = depositoryRecordService.findApplicationInRecordPByUser(userToken,map);
for (ApplicationInRecordP applicationInRecordP : list) {
applicationInRecordP.setPrice(applicationInRecordP.getPrice() / 100);
}
return new RestResponse(list, depositoryRecordService.findApplicationInRecordPCountByCondition(map), 200);
return new RestResponse(list, depositoryRecordService.findApplicationInRecordPCountByUser(userToken,map), 200);
}
// 当前仓库中该用户的子订单详情
@ -596,8 +601,7 @@ public class DepositoryRecordController {
public RestResponse findApplicationOutRecordByCondition(@RequestParam Map<String, Object> map, HttpServletRequest request) {
// 获取对应主订单
List<ApplicationOutRecordP> list = depositoryRecordService.findApplicationOutRecordPByCondition(map, request);
for (int i = 0; i < list.size(); i++) {
ApplicationOutRecordP outRecordP = list.get(i);
for (ApplicationOutRecordP outRecordP : list) {
// 根据主订单获取所有子订单
List<ApplicationOutRecordMin> applicationOutMinByParentId = depositoryRecordService.findApplicationOutMinByParentId(outRecordP.getId());
StringBuilder mname = new StringBuilder();
@ -618,11 +622,11 @@ public class DepositoryRecordController {
sumQuantity += applicationOutRecordMin.getQuantity();
sumPrice += (inventory.getPrice() * applicationOutRecordMin.getQuantity());
}
list.get(i).setMcode(mcode.toString());
list.get(i).setMname(mname.toString());
list.get(i).setDepositoryName(depositoryName.toString());
list.get(i).setQuantity(sumQuantity);
list.get(i).setPrice(sumPrice);
outRecordP.setMcode(mcode.toString());
outRecordP.setMname(mname.toString());
outRecordP.setDepositoryName(depositoryName.toString());
outRecordP.setQuantity(sumQuantity);
outRecordP.setPrice(sumPrice);
}
return new RestResponse(list, depositoryRecordService.findApplicationOutRecordPCountByCondition(map), 200);
}

2
src/main/java/com/dreamchaser/depository_manage/controller/MaterialController.java

@ -614,7 +614,7 @@ public class MaterialController {
if ("-1".equals(unit)) {
// 如果是基础单位
for (InventoryP inventoryP : inventoryPList) {
Integer integer = inventoryP.getShowQuantity().get(inventoryP.getBaseUnit());
Integer integer = inventoryP.getBaseUnitQuantity();
if (quantity <= (integer - inventoryP.getNumberOfTemporary())) { // 如果当前数量合适则跳出循环
flag = true;
break;

12
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -748,8 +748,18 @@ public class PageController {
}
@GetMapping("/table_in")
public ModelAndView table_in() {
public ModelAndView table_in(HttpServletRequest request) {
ModelAndView mv = new ModelAndView();
UserByPort userToken = (UserByPort) request.getAttribute("userToken");
Integer isadmin = userToken.getIsadmin();
if (isadmin == null) {
isadmin = 1;
}
if (isadmin == 4) {
mv.addObject("display", "inline-block");
} else {
mv.addObject("display", "none");
}
mv.setViewName("pages/depository/table-in");
return mv;
}

17
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.java

@ -216,6 +216,20 @@ public interface DepositoryRecordMapper {
*/
List<ApplicationInRecordP> findApplicationInRecordPByCondition(Map<String,Object> map);
/**
* 查询当前用户入库记录及其管理仓库的入库记录
* @param map 查询条件
* @return
*/
List<ApplicationInRecordP> findApplicationInRecordPByUser(Map<String,Object> map);
/**
* 查询当前用户入库记录及其管理仓库的入库记录数目
* @param map 查询条件
* @return
*/
Integer findApplicationInRecordPCountByUser(Map<String,Object> map);
/**
* 查询当前仓库的入库记录
* @param depositoryId 待查询仓库id
@ -237,6 +251,9 @@ public interface DepositoryRecordMapper {
* @return
*/
List<ApplicationOutRecordP> findApplicationOutRecordPByCondition(Map<String,Object> map);
/**
* 根据条件查询入库记录数目
* @param map

68
src/main/java/com/dreamchaser/depository_manage/mapper/DepositoryRecordMapper.xml

@ -13,7 +13,8 @@
<result column="apply_time" property="applyTime" jdbcType="INTEGER"/>
</resultMap>
<!-- 字段映射 -->
<resultMap id="simpleApplicationOutRecordMap" type="com.dreamchaser.depository_manage.entity.SimpleApplicationOutRecord">
<resultMap id="simpleApplicationOutRecordMap"
type="com.dreamchaser.depository_manage.entity.SimpleApplicationOutRecord">
<id property="id" column="aorid" jdbcType="INTEGER"/>
<result column="applicantId" property="applicantId" jdbcType="INTEGER"/>
<result column="applicantTime" property="applicantTime" jdbcType="INTEGER"/>
@ -285,11 +286,13 @@
FROM applicationOutRecordInfo WHERE 1=1
<if test='isDone == "0"'>
and (departmentHeadTime = 0 and FIND_IN_SET(#{userId},departmenthead) != 0 and DepartmentheadPass = 3)
or (depositoryManagerTime = 0 and FIND_IN_SET(#{userId},depositoryManager) != 0 and depositoryManagerPass = 3)
or (depositoryManagerTime = 0 and FIND_IN_SET(#{userId},depositoryManager) != 0 and depositoryManagerPass =
3)
</if>
<if test='isDone == "1"'>
and (departmentHeadTime != 0 and FIND_IN_SET(#{userId},departmenthead) != 0 and DepartmentheadPass != 3)
or (depositoryManagerTime != 0 and FIND_IN_SET(#{userId},depositoryManager) != 0 and depositoryManagerPass != 3)
or (depositoryManagerTime != 0 and FIND_IN_SET(#{userId},depositoryManager) != 0 and depositoryManagerPass
!= 3)
</if>
group by aorid
ORDER BY applicantTime desc
@ -310,6 +313,56 @@
</if>
</select>
<select id="findApplicationInRecordPByUser" parameterType="map"
resultMap="applicationInRecord">
select
<include refid="ApplicationInRecordInfo"/>
from applicationInRecordInfo
where 1 = 1
<if test="depositoryIdList != null">
and did in
<foreach collection="depositoryIdList" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
<if test="applicantId != null and applicantId != ''">
or applicant_id = #{applicantId}
</if>
</if>
<if test="depositoryIdList == null">
<if test="applicantId != null and applicantId != ''">
and applicant_id = #{applicantId}
</if>
</if>
order by applicant_time desc
<if test="begin != null and size != null">
LIMIT #{begin},#{size}
</if>
</select>
<select id="findApplicationInRecordPCountByUser" parameterType="map"
resultType="int">
select
count(*)
from applicationInRecordInfo
where 1 = 1
<if test="depositoryIdList != null">
and did in
<foreach collection="depositoryIdList" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
<if test="applicantId != null and applicantId != ''">
or applicant_id = #{applicantId}
</if>
</if>
<if test="depositoryIdList == null">
<if test="applicantId != null and applicantId != ''">
and applicant_id = #{applicantId}
</if>
</if>
</select>
<!--根据条件查询入库记录-->
<select id="findApplicationInRecordPByCondition" parameterType="map" resultMap="applicationInRecord">
select
@ -325,6 +378,7 @@
<if test="depositoryId != null and depositoryId != ''">
and did = #{depositoryId}
</if>
<if test="mid != null and mid != ''">
and mid = #{mid}
</if>
@ -858,7 +912,8 @@
<insert id="insertDepositoryRecords" parameterType="list">
INSERT INTO depository_record (
id, application_id, mname, depository_id, type, quantity, price, state,
applicant_id, apply_remark, apply_time, reviewer_id, review_remark, review_time,review_pass, checker_id, check_remark,
applicant_id, apply_remark, apply_time, reviewer_id, review_remark, review_time,review_pass, checker_id,
check_remark,
check_time,check_pass
) VALUES
<foreach collection="list" index="index" item="item" separator=",">
@ -1271,6 +1326,7 @@
and dr.check_time between #{start} and #{end}
</select>
<!-- 根据主键删除数据 -->
<delete id="deleteApplicationInRecordById" parameterType="integer">
DELETE FROM application_in_record WHERE id = #{id}
@ -1298,8 +1354,4 @@
</delete>
</mapper>

5
src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java

@ -191,6 +191,11 @@ public class InventoryP {
*/
private String baseUnit;
/**
* 基础单位对应数目
*/
private Integer baseUnitQuantity;
/**
* 默认单位
*/

35
src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java

@ -87,6 +87,41 @@ public interface DepositoryRecordService {
*/
List<ApplicationInRecordP> findApplicationInRecordPByCondition(Map<String,Object> map,HttpServletRequest request);
/**
* 查询当前用户入库记录及其管理仓库的入库记录
* @param userByPort 待查询用户
* @param map 查询条件
* @return
*/
List<ApplicationInRecordP> findApplicationInRecordPByUser(UserByPort userByPort,Map<String,Object> map);
/**
* 查询当前用户入库记录及其管理仓库的入库记录数目
* @param map 查询条件
* @return
*/
Integer findApplicationInRecordPCountByUser(UserByPort userByPort,Map<String,Object> map);
/**
* 查询当前用户出库记录及其管理仓库的出库记录
* @param userByPort 待查询用户
* @param map 查询条件
* @return
*/
List<ApplicationOutRecordP> findApplicationOutRecordPByUser(UserByPort userByPort,Map<String,Object> map);
/**
* 查询当前用户出库记录及其管理仓库的出库记录数目
* @param map 查询条件
* @return
*/
Integer findApplicationOutRecordPCountByUser(UserByPort userByPort,Map<String,Object> map);
/**
* 根据条件查询出库记录同时支持分页查询
* @param map

8
src/main/java/com/dreamchaser/depository_manage/service/MaterialService.java

@ -66,6 +66,14 @@ public interface MaterialService {
List<InventoryP> findInventory(Map<String,Object> map);
/**
* 根据物料编码及所处仓库查询库存
* @param map 待查询条件
* @return
*/
List<Inventory> findInventoryByMcodeAndDepository(Map<String,Object> map);
/**
* 根据条件查询符合条件的库存
* @param map

109
src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java

@ -2887,6 +2887,115 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService {
return list;
}
/**
* 查询当前用户入库记录及其管理仓库的入库记录
* @param userByPort 待查询用户
* @param map 查询条件
* @return
*/
@Override
public List<ApplicationInRecordP> findApplicationInRecordPByUser(UserByPort userByPort, Map<String, Object> map) {
Integer size = 10, page = 1;
if (map.containsKey("size")) {
size = ObjectFormatUtil.toInteger(map.get("size"));
map.put("size", size);
}
if (map.containsKey("page")) {
page = ObjectFormatUtil.toInteger(map.get("page"));
map.put("begin", (page - 1) * size);
}
if (map.containsKey("applyTime")) {
String applyTime = (String) map.get("applyTime");
map.put("applicantTime", DateUtil.DateTimeByDayToTimeStamp(applyTime));
}
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userByPort.getId());
List<Integer> depositoryIdList = new ArrayList<>();
for (RoleAndDepository depository: depositoryAndRole
) {
depositoryIdList.add(depository.getDepositoryId());
}
if(depositoryIdList.size() == 0){
depositoryIdList = null;
}
map.put("depositoryIdList",depositoryIdList);
map.put("applicantId",userByPort.getId());
List<ApplicationInRecordP> list = depositoryRecordMapper.findApplicationInRecordPByUser(map);
for (ApplicationInRecordP applicationInRecordP : list) {
UserByPort userByPortById = LinkInterfaceUtil.FindUserById(applicationInRecordP.getApplicantId(),userByPort);
String time = DateUtil.TimeStampToDateTime(Long.valueOf(applicationInRecordP.getApplicantTime()));
applicationInRecordP.setApplicantName(userByPortById.getName());
applicationInRecordP.setApplicantTime(time);
applicationInRecordP.setApplyRemark(applicationInRecordP.getApplyRemark() == null ? "" : applicationInRecordP.getApplyRemark());
if (Integer.compare(applicationInRecordP.getFlagForGroup(), 2) == 0) {
// 如果入库的是组合
Group group = groupMapper.findGroupOnlyById(applicationInRecordP.getMid());
applicationInRecordP.setMname(group.getGname());
applicationInRecordP.setAirUnit("");
applicationInRecordP.setMcode(group.getCode());
applicationInRecordP.setMversion("组合");
}
}
return list;
}
@Override
public Integer findApplicationInRecordPCountByUser(UserByPort userByPort, Map<String, Object> map) {
if (map.containsKey("applyTime")) {
String applyTime = (String) map.get("applyTime");
map.put("applicantTime", DateUtil.DateTimeByDayToTimeStamp(applyTime));
}
List<RoleAndDepository> depositoryAndRole = roleService.findDepositoryAndRole(userByPort.getId());
List<Integer> depositoryIdList = new ArrayList<>();
for (RoleAndDepository depository: depositoryAndRole
) {
depositoryIdList.add(depository.getDepositoryId());
}
if(depositoryIdList.size() == 0){
depositoryIdList = null;
}
map.put("depositoryIdList",depositoryIdList);
map.put("applicantId",userByPort.getId());
return depositoryRecordMapper.findApplicationInRecordPCountByUser(map);
}
/**
* 查询当前用户出库记录及其管理仓库的出库记录
* @param userByPort 待查询用户
* @param map 查询条件
* @return
*/
@Override
public List<ApplicationOutRecordP> findApplicationOutRecordPByUser(UserByPort userByPort, Map<String, Object> map) {
if (map.containsKey("applyTime")) {
String applyTime = (String) map.get("applyTime");
map.put("applicantTime", DateUtil.DateTimeByDayToTimeStamp(applyTime));
}
List<ApplicationOutRecordP> list = depositoryRecordMapper.findApplicationOutRecordPByCondition(map);
for (ApplicationOutRecordP recordP : list) {
UserByPort userByPortById = LinkInterfaceUtil.FindUserById(recordP.getApplicantId(), userByPort);
String time = DateUtil.TimeStampToDateTime(Long.valueOf(recordP.getApplicantTime()));
recordP.setApplicantName(userByPortById.getName());
recordP.setApplicantTime(time);
recordP.setApplyRemark(recordP.getApplyRemark() == null ? "" : recordP.getApplyRemark());
}
return list;
}
/**
* 查询当前用户出库记录及其管理仓库的出库记录数目
* @param map 查询条件
* @return
*/
@Override
public Integer findApplicationOutRecordPCountByUser(UserByPort userByPort, Map<String, Object> map) {
return null;
}
/**
* 根据条件查询出库记录同时支持分页查询
*

17
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -299,6 +299,22 @@ public class MaterialServiceImpl implements MaterialService {
return pack(list);
}
/**
* 根据物料编码及所处仓库查询库存
* @param map 待查询条件
* @return
*/
@Override
public List<Inventory> findInventoryByMcodeAndDepository(Map<String, Object> map) {
Object state = 1;
if (map.containsKey("state")) {
state = map.get("state");
}
map.put("state", state);
List<Inventory> list = materialMapper.findInventory(map);
return list;
}
/**
* 根据条件查询符合条件的库存
*
@ -704,6 +720,7 @@ public class MaterialServiceImpl implements MaterialService {
Map<String, Integer> splitInventoryForUnit = new HashMap<>();
splitInventoryForUnit.put(inventory.getUnit(), inventory.getQuantity());
m.setBaseUnitQuantity(inventory.getQuantity());
// 定义最后展示单位及数目
String unit = inventory.getUnit();

8
src/main/resources/templates/pages/depository/table-in.html

@ -68,7 +68,7 @@
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除</button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete" th:style="'display:'+${display}"> 删除</button>
</div>
</script>
@ -76,7 +76,7 @@
<script type="text/html" id="currentTableBar">
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="detail">详情</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete" th:style="'display:'+${display}">删除</a>
</script>
</div>
@ -102,7 +102,7 @@
var parentId = parent.id;
layer.open({
type: 2,
title: '弹窗内容',
title: '仓库列表',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
@ -206,7 +206,7 @@
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { // 监听添加操作
var index = layer.open({
title: '申请提交',
title: '入库申请',
type: 2,
shade: 0.2,
maxmin: true,

41
src/test/java/com/dreamchaser/depository_manage/TestOther.java

@ -0,0 +1,41 @@
package com.dreamchaser.depository_manage;
import com.alibaba.fastjson.JSONObject;
import com.dreamchaser.depository_manage.config.PortConfig;
import com.dreamchaser.depository_manage.config.QyWxConfig;
import com.dreamchaser.depository_manage.entity.UserByPort;
import com.dreamchaser.depository_manage.entity.qywxDepartment;
import com.dreamchaser.depository_manage.mapper.DepositoryRecordMapper;
import com.dreamchaser.depository_manage.pojo.ApplicationInRecordP;
import com.dreamchaser.depository_manage.utils.LinkInterfaceUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestOther {
@Autowired
DepositoryRecordMapper depositoryRecordMapper;
@Test
public void Test(){
Map<String, Object> map = new HashMap<>();
List<Integer> depositoryRecordList = new ArrayList<>();
depositoryRecordList.add(48);
map.put("depositoryIdList",depositoryRecordList);
List<ApplicationInRecordP> applicationInRecordPByCondition = depositoryRecordMapper.findApplicationInRecordPByCondition(map);
System.out.println(applicationInRecordPByCondition);
}
}
Loading…
Cancel
Save