Compare commits
2 Commits
5caf2e5fae
...
d2ce50896e
| Author | SHA1 | Date |
|---|---|---|
|
|
d2ce50896e | |
|
|
ccd4b5ec91 |
|
|
@ -3,6 +3,7 @@ package com.syjiaer.clinic.server.common.vo;
|
|||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
|
|
@ -13,6 +14,12 @@ public class Page<T> {
|
|||
private long total_count;
|
||||
private List<T> list;
|
||||
|
||||
public Page() {
|
||||
this.total_page = 0;
|
||||
this.total_count = 0;
|
||||
this.list = new ArrayList<>();
|
||||
}
|
||||
|
||||
public Page<T> process(Page<T> page, Function<List<T>, List<T>> processor) {
|
||||
List<T> processedList = processor.apply(page.getList());
|
||||
page.setList(processedList);
|
||||
|
|
|
|||
|
|
@ -55,10 +55,10 @@ public class GoodsController extends BaseController {
|
|||
return error("定价模式不能为空");
|
||||
}
|
||||
if (goods.getPricingModel().equals(GoodsPricingModelEnum.Bonus.getPricingModel()) && goods.getMakeUp() == null) {
|
||||
return error("加成率不能为空");
|
||||
return error("定价模式为进价加成时,加成率不能为空");
|
||||
}
|
||||
if (goods.getPricingModel().equals(GoodsPricingModelEnum.Fixed.getPricingModel()) && goods.getUnitPrice() == null) {
|
||||
return error("固定售价不能为空");
|
||||
return error("定价模式为固定售价时,售价不能为空");
|
||||
}
|
||||
if (goods.getPackagingUnit() == null){
|
||||
return error("包装单位不能为空");
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ public class InventoryCheckController extends BaseController {
|
|||
public Result save() {
|
||||
List<Map> list = parmsUtil.getList("list", Map.class);
|
||||
String remark = parmsUtil.getString("remark");
|
||||
inventoryCheckService.save(list,remark);
|
||||
Integer checkUserId = parmsUtil.getInteger("checkUserId","盘点人不能为空");
|
||||
inventoryCheckService.save(list,remark,checkUserId);
|
||||
return success();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,20 +5,20 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
/**
|
||||
* <p>
|
||||
* 库存领用表
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-17
|
||||
* @since 2025-05-15
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -34,7 +34,7 @@ public class InventoryApply implements Serializable {
|
|||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty("领用id")
|
||||
@ApiModelProperty("领用code")
|
||||
private String useCode;
|
||||
|
||||
@ApiModelProperty("领用人id")
|
||||
|
|
@ -48,4 +48,22 @@ public class InventoryApply implements Serializable {
|
|||
|
||||
@ApiModelProperty("1已完成 0未完成")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("总类目")
|
||||
private Integer kindCount;
|
||||
|
||||
@ApiModelProperty("改变数量(整量)")
|
||||
private Integer changeTotalWholeCount;
|
||||
|
||||
@ApiModelProperty("盈亏金额(进价)")
|
||||
private BigDecimal totalPurchasePrice;
|
||||
|
||||
@ApiModelProperty("盈亏金额(售价)")
|
||||
private BigDecimal totalSalePrice;
|
||||
|
||||
@ApiModelProperty("盘点人名称")
|
||||
private String applyUserName;
|
||||
|
||||
@ApiModelProperty("改变数量(分量)")
|
||||
private Integer changeTotalFragmentCount;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,20 +5,20 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
|||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
/**
|
||||
* <p>
|
||||
* 盘点主表
|
||||
* </p>
|
||||
*
|
||||
* @author NiuZiYuan
|
||||
* @since 2025-04-17
|
||||
* @since 2025-05-15
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -45,4 +45,25 @@ public class InventoryCheck implements Serializable {
|
|||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("盘点人")
|
||||
private Integer checkUserId;
|
||||
|
||||
@ApiModelProperty("总类目")
|
||||
private Integer kindCount;
|
||||
|
||||
@ApiModelProperty("改变数量(整量)")
|
||||
private Integer changeTotalWholeCount;
|
||||
|
||||
@ApiModelProperty("盈亏金额(进价)")
|
||||
private BigDecimal totalPurchasePrice;
|
||||
|
||||
@ApiModelProperty("盈亏金额(售价)")
|
||||
private BigDecimal totalSalePrice;
|
||||
|
||||
@ApiModelProperty("盘点人名称")
|
||||
private String checkUserName;
|
||||
|
||||
@ApiModelProperty("改变数量(分量)")
|
||||
private Integer changeTotalFragmentCount;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,11 +10,14 @@ import java.util.List;
|
|||
public class PurchaseOrderQuery {
|
||||
private Integer pageNum;
|
||||
private Integer pageSize;
|
||||
private Integer offset;
|
||||
private String code;
|
||||
private List<Integer> supplierIds;
|
||||
private List<Integer> managerUserIds;
|
||||
private String beginTime;
|
||||
private String endTime;
|
||||
private String goodsName;
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,12 @@ package com.syjiaer.clinic.server.mapper.inventory;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryPurchase;
|
||||
import com.syjiaer.clinic.server.entity.inventory.dto.PurchaseOrderQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
|
@ -17,5 +20,19 @@ import org.apache.ibatis.annotations.Select;
|
|||
public interface InventoryPurchaseMapper extends BaseMapper<InventoryPurchase> {
|
||||
@Select("select * from inventory_purchase where code = #{code}")
|
||||
InventoryPurchase getByCode(@Param("code") String inventoryPurchaseCode);
|
||||
|
||||
/**
|
||||
* 查询采购单号
|
||||
* @param query
|
||||
* @return
|
||||
*/
|
||||
List<String> listPurchaseCodesByGoodsName(@Param("query")PurchaseOrderQuery query);
|
||||
|
||||
/**
|
||||
* 查询符合条件的采购单数量
|
||||
* @param query
|
||||
* @return
|
||||
*/
|
||||
Long countPurchaseCodesByGoodsName(@Param("query")PurchaseOrderQuery query);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,10 +62,10 @@ public class GoodsService {
|
|||
}
|
||||
|
||||
if (goods.getPricingModel().equals(GoodsPricingModelEnum.Bonus.getPricingModel()) && goods.getMakeUp() == null) {
|
||||
throw new MessageException("售价为进价加成时,加成率不能为空");
|
||||
throw new MessageException("定价模式为进价加成时,加成率不能为空");
|
||||
}
|
||||
if (goods.getPricingModel().equals(GoodsPricingModelEnum.Fixed.getPricingModel()) && goods.getUnitPrice() == null) {
|
||||
throw new MessageException("售价为固定售价时,售价不能为空");
|
||||
throw new MessageException("定价模式为固定售价时,售价不能为空");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,19 +9,25 @@ import com.syjiaer.clinic.server.common.enums.Type;
|
|||
import com.syjiaer.clinic.server.common.exception.MessageException;
|
||||
import com.syjiaer.clinic.server.common.util.DateUtil;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.entity.goods.Goods;
|
||||
import com.syjiaer.clinic.server.entity.inventory.Inventory;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryApply;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryApplyLog;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryLog;
|
||||
import com.syjiaer.clinic.server.entity.inventory.dto.ApplyOrderQuery;
|
||||
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
|
||||
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryApplyLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryApplyMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper;
|
||||
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
|
@ -38,6 +44,12 @@ public class InventoryApplyService extends BaseService {
|
|||
private InventoryApplyMapper inventoryApplyMapper;
|
||||
@Autowired
|
||||
private InventoryApplyLogMapper inventoryApplyLogMapper;
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
@Autowired
|
||||
private InventoryMapper inventoryMapper;
|
||||
@Autowired
|
||||
private ManagerUserMapper managerUserMapper;
|
||||
/*
|
||||
* 创建领用单
|
||||
* @param mapList
|
||||
|
|
@ -45,18 +57,25 @@ public class InventoryApplyService extends BaseService {
|
|||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void create(List<Map> mapList, InventoryApply useInfo) {
|
||||
ManagerUser user = getManagerUser();
|
||||
System.out.println(mapList);
|
||||
|
||||
ManagerUser user = managerUserMapper.selectById(useInfo.getUseUserId());
|
||||
if (user == null) {
|
||||
throw new MessageException("盘点人不存在");
|
||||
}
|
||||
String applyCode = getApplyCode();
|
||||
useInfo.setUseCode(applyCode);
|
||||
useInfo.setStatus( 1);
|
||||
useInfo.setCreateDatetime(LocalDateTime.now());
|
||||
inventoryApplyMapper.insert(useInfo);
|
||||
InventoryApplyLog applyLog = new InventoryApplyLog();
|
||||
applyLog.setApplyId(useInfo.getId());
|
||||
applyLog.setData(JSONArray.toJSONString(mapList));
|
||||
inventoryApplyLogMapper.insert(applyLog);
|
||||
useInfo.setApplyUserName(user.getName());
|
||||
|
||||
Integer kindCount = 0;
|
||||
Integer changeTotalWholeCount = 0;
|
||||
Integer changeTotalFragmentCount = 0;
|
||||
BigDecimal totalPurchasePrice = new BigDecimal(0);
|
||||
BigDecimal totalSalePrice = new BigDecimal(0);
|
||||
|
||||
for (Map map : mapList){
|
||||
kindCount++;
|
||||
List<Map> children= (List) map.get("children");
|
||||
|
||||
if (children.size()==0){
|
||||
|
|
@ -79,11 +98,36 @@ public class InventoryApplyService extends BaseService {
|
|||
log.setOperateId(user.getId());
|
||||
log.setOperateName(user.getName());
|
||||
inventoryLogMapper.insert(log);
|
||||
|
||||
Inventory inventory = inventoryMapper.selectById(log.getInventoryId());
|
||||
Integer changeWholeNumber = log.getChangeWholeNumber();
|
||||
Integer changeFragmentNumber = log.getChangeFragmentNumber();
|
||||
changeTotalWholeCount += changeWholeNumber;
|
||||
changeTotalFragmentCount += changeFragmentNumber;
|
||||
BigDecimal subPurchasePrice = inventory.getPurchaseUnitPrice().multiply(new BigDecimal(changeWholeNumber))
|
||||
.add(new BigDecimal(changeFragmentNumber).multiply(inventory.getFragmentPrice()));
|
||||
totalPurchasePrice = totalPurchasePrice.add(subPurchasePrice);
|
||||
Goods goods = goodsMapper.selectById(inventory.getGoodId());
|
||||
BigDecimal subSalePrice = goods.getUnitPrice().multiply(new BigDecimal(changeWholeNumber))
|
||||
.add(new BigDecimal(changeFragmentNumber).multiply(goods.getDisassemblyPrice()));
|
||||
totalSalePrice = totalSalePrice.add(subSalePrice);
|
||||
|
||||
}else {
|
||||
throw new MessageException("领用错误,领用不能增加库存");
|
||||
}
|
||||
}
|
||||
}
|
||||
useInfo.setKindCount(kindCount);
|
||||
useInfo.setChangeTotalWholeCount(changeTotalWholeCount);
|
||||
useInfo.setChangeTotalFragmentCount(changeTotalFragmentCount);
|
||||
useInfo.setTotalPurchasePrice(totalPurchasePrice);
|
||||
useInfo.setTotalSalePrice(totalSalePrice);
|
||||
inventoryApplyMapper.insert(useInfo);
|
||||
InventoryApplyLog applyLog = new InventoryApplyLog();
|
||||
applyLog.setApplyId(useInfo.getId());
|
||||
applyLog.setData(JSONArray.toJSONString(mapList));
|
||||
inventoryApplyLogMapper.insert(applyLog);
|
||||
|
||||
}
|
||||
/*
|
||||
* 生成领用单号
|
||||
|
|
|
|||
|
|
@ -7,21 +7,28 @@ import com.syjiaer.clinic.server.common.enums.InventoryTypeEnum;
|
|||
import com.syjiaer.clinic.server.common.exception.MessageException;
|
||||
import com.syjiaer.clinic.server.common.util.DateUtil;
|
||||
import com.syjiaer.clinic.server.common.vo.Page;
|
||||
import com.syjiaer.clinic.server.entity.goods.Goods;
|
||||
import com.syjiaer.clinic.server.entity.inventory.Inventory;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryCheck;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryCheckLog;
|
||||
import com.syjiaer.clinic.server.entity.inventory.InventoryLog;
|
||||
import com.syjiaer.clinic.server.entity.inventory.dto.CheckQuery;
|
||||
import com.syjiaer.clinic.server.entity.manager.ManagerUser;
|
||||
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryCheckLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryCheckMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryLogMapper;
|
||||
import com.syjiaer.clinic.server.mapper.inventory.InventoryMapper;
|
||||
import com.syjiaer.clinic.server.mapper.manager.ManagerUserMapper;
|
||||
import com.syjiaer.clinic.server.service.BaseService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -36,8 +43,15 @@ public class InventoryCheckService extends BaseService {
|
|||
private InventoryCheckMapper inventoryCheckMapper;
|
||||
@Autowired
|
||||
private InventoryCheckLogMapper inventoryCheckLogMapper;
|
||||
@Autowired
|
||||
private ManagerUserMapper managerUserMapper;
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
@Autowired
|
||||
private InventoryMapper inventoryMapper;
|
||||
|
||||
public Page<InventoryCheck> listPage(CheckQuery query) {
|
||||
if (query == null){
|
||||
if (query == null) {
|
||||
throw new MessageException("没有带查询条件");
|
||||
}
|
||||
QueryWrapper<InventoryCheck> queryWrapper = new QueryWrapper<>();
|
||||
|
|
@ -52,10 +66,13 @@ public class InventoryCheckService extends BaseService {
|
|||
return pageHelper(query.getPageNum(), query.getPageSize(),
|
||||
queryWrapper, inventoryCheckMapper, "create_datetime", false);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void save(List<Map> list, String remark) {
|
||||
ManagerUser user = getManagerUser();
|
||||
System.out.println(remark);
|
||||
public void save(List<Map> list, String remark, Integer checkUserId) {
|
||||
ManagerUser user = managerUserMapper.selectById(checkUserId);
|
||||
if (user == null) {
|
||||
throw new MessageException("盘点人不存在");
|
||||
}
|
||||
InventoryCheck inventoryCheck = new InventoryCheck();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
String datePart = sdf.format(new Date());
|
||||
|
|
@ -64,66 +81,89 @@ public class InventoryCheckService extends BaseService {
|
|||
inventoryCheck.setCreateDatetime(LocalDateTime.now());
|
||||
inventoryCheck.setState(1);
|
||||
inventoryCheck.setRemark(remark);
|
||||
inventoryCheckMapper.insert(inventoryCheck);
|
||||
inventoryCheck.setCheckUserId(checkUserId);
|
||||
inventoryCheck.setCheckUserName(user.getName());
|
||||
|
||||
|
||||
Integer kindCount = 0;
|
||||
List<InventoryLog> inventoryLogList = new ArrayList<>();
|
||||
for (Map map : list) {
|
||||
kindCount++;
|
||||
List<Map> children = (List) map.get("children");
|
||||
if (children.isEmpty()) {
|
||||
int goodsId = (int) map.get("goodsId");
|
||||
Map<String, Integer> after = (Map<String, Integer>) map.get("after");
|
||||
List<InventoryLog> result = inventoryService.adjustNumberByGoodsId(goodsId, after.get("wholeNumber"), after.get("fragmentNumber"), "盘点");
|
||||
inventoryLogList.addAll(result);
|
||||
|
||||
} else {
|
||||
for (Map child : children) {
|
||||
int id = (int) child.get("id");
|
||||
Map<String, Integer> after = (Map<String, Integer>) child.get("after");
|
||||
Map<String, Integer> change = (Map<String, Integer>) child.get("change");
|
||||
Integer changeWholeNumber = change.get("wholeNumber");
|
||||
Integer changeFragmentNumber = change.get("fragmentNumber");
|
||||
if (changeWholeNumber == 0 && changeFragmentNumber == 0) {
|
||||
continue;
|
||||
}
|
||||
InventoryLog log = inventoryService.adjustNumber(id, after.get("wholeNumber"), after.get("fragmentNumber"), "盘点");
|
||||
inventoryLogList.add(log);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Integer changeTotalWholeCount = 0;
|
||||
Integer changeTotalFragmentCount = 0;
|
||||
BigDecimal totalPurchasePrice = new BigDecimal(0);
|
||||
BigDecimal totalSalePrice = new BigDecimal(0);
|
||||
|
||||
//记录库存变更日志
|
||||
for (InventoryLog inventoryLog : inventoryLogList) {
|
||||
if (inventoryLog.getChangeWholeNumber() < 0 || inventoryLog.getChangeFragmentNumber() < 0) {
|
||||
inventoryLog.setOperateName(user.getName());
|
||||
inventoryLog.setOperateId(user.getId());
|
||||
inventoryLog.setType(InventoryTypeEnum.CHECK_OUT.getType());
|
||||
inventoryLog.setSocialType(InventorySocialTypeEnum.INVENTORY_LOSS.getType());
|
||||
} else {
|
||||
inventoryLog.setOperateName(user.getName());
|
||||
inventoryLog.setOperateId(user.getId());
|
||||
inventoryLog.setType(InventoryTypeEnum.CHECK_IN.getType());
|
||||
inventoryLog.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType());
|
||||
}
|
||||
inventoryLogMapper.insert(inventoryLog);
|
||||
Inventory inventory = inventoryMapper.selectById(inventoryLog.getInventoryId());
|
||||
Integer changeWholeNumber = inventoryLog.getChangeWholeNumber();
|
||||
Integer changeFragmentNumber = inventoryLog.getChangeFragmentNumber();
|
||||
changeTotalWholeCount += changeWholeNumber;
|
||||
changeTotalFragmentCount += changeFragmentNumber;
|
||||
BigDecimal subPurchasePrice = inventory.getPurchaseUnitPrice().multiply(new BigDecimal(changeWholeNumber))
|
||||
.add(new BigDecimal(changeFragmentNumber).multiply(inventory.getFragmentPrice()));
|
||||
totalPurchasePrice = totalPurchasePrice.add(subPurchasePrice);
|
||||
Goods goods = goodsMapper.selectById(inventory.getGoodId());
|
||||
BigDecimal subSalePrice = goods.getUnitPrice().multiply(new BigDecimal(changeWholeNumber))
|
||||
.add(new BigDecimal(changeFragmentNumber).multiply(goods.getDisassemblyPrice()));
|
||||
totalSalePrice = totalSalePrice.add(subSalePrice);
|
||||
}
|
||||
|
||||
inventoryCheck.setKindCount(kindCount);
|
||||
inventoryCheck.setChangeTotalWholeCount(changeTotalWholeCount);
|
||||
inventoryCheck.setChangeTotalFragmentCount(changeTotalFragmentCount);
|
||||
inventoryCheck.setTotalPurchasePrice(totalPurchasePrice);
|
||||
inventoryCheck.setTotalSalePrice(totalSalePrice);
|
||||
inventoryCheckMapper.insert(inventoryCheck);
|
||||
//插入日志
|
||||
InventoryCheckLog inventoryCheckLog = new InventoryCheckLog();
|
||||
inventoryCheckLog.setData(JSONObject.toJSONString(list));
|
||||
inventoryCheckLog.setInventoryCheckId(inventoryCheck.getId());
|
||||
inventoryCheckLogMapper.insert(inventoryCheckLog);
|
||||
for (Map map : list) {
|
||||
List<Map> children= (List) map.get("children");
|
||||
if(children.size()==0){
|
||||
int goodsId= (int) map.get("goodsId");
|
||||
Map<String,Integer> after= (Map<String, Integer>) map.get("after");
|
||||
List<InventoryLog> result = inventoryService.adjustNumberByGoodsId(goodsId,after.get("wholeNumber"),after.get("fragmentNumber"),"盘点");
|
||||
for (InventoryLog inventoryLog : result){
|
||||
if (inventoryLog.getChangeWholeNumber()<0 || inventoryLog.getChangeFragmentNumber()<0){
|
||||
inventoryLog.setOperateName(user.getName());
|
||||
inventoryLog.setOperateId(user.getId());
|
||||
inventoryLog.setType(InventoryTypeEnum.CHECK_OUT.getType());
|
||||
inventoryLog.setSocialType(InventorySocialTypeEnum.INVENTORY_LOSS.getType());
|
||||
}else {
|
||||
inventoryLog.setOperateName(user.getName());
|
||||
inventoryLog.setOperateId(user.getId());
|
||||
inventoryLog.setType(InventoryTypeEnum.CHECK_IN.getType());
|
||||
inventoryLog.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType());
|
||||
}
|
||||
inventoryLogMapper.insert(inventoryLog);
|
||||
}
|
||||
}else{
|
||||
for (Map child : children) {
|
||||
int id= (int) child.get("id");
|
||||
Map<String,Integer> after= (Map<String, Integer>) child.get("after");
|
||||
Map<String,Integer> change= (Map<String, Integer>) child.get("change");
|
||||
Integer changeWholeNumber=change.get("wholeNumber");
|
||||
Integer changeFragmentNumber=change.get("fragmentNumber");
|
||||
if (changeWholeNumber==0&&changeFragmentNumber==0){
|
||||
continue;
|
||||
}
|
||||
System.out.println(id);
|
||||
System.out.println(after);
|
||||
InventoryLog log = inventoryService.adjustNumber(id,after.get("wholeNumber"),after.get("fragmentNumber"),"盘点");
|
||||
if (log.getChangeWholeNumber()<0 || log.getChangeFragmentNumber()<0){
|
||||
log.setOperateName(user.getName());
|
||||
log.setOperateId(user.getId());
|
||||
log.setType(InventoryTypeEnum.CHECK_OUT.getType());
|
||||
log.setSocialType(InventorySocialTypeEnum.INVENTORY_LOSS.getType());
|
||||
}else {
|
||||
log.setOperateName(user.getName());
|
||||
log.setOperateId(user.getId());
|
||||
log.setType(InventoryTypeEnum.CHECK_IN.getType());
|
||||
log.setSocialType(InventorySocialTypeEnum.INVENTORY_SURPLUS.getType());
|
||||
}
|
||||
inventoryLogMapper.insert(log);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取盘点单详情
|
||||
*/
|
||||
public String getCheckDetail(int checkId){
|
||||
QueryWrapper<InventoryCheckLog> queryWrapper=new QueryWrapper();
|
||||
public String getCheckDetail(int checkId) {
|
||||
QueryWrapper<InventoryCheckLog> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("inventory_check_id", checkId);
|
||||
InventoryCheckLog inventoryCheckLog = inventoryCheckLogMapper.selectOne(queryWrapper);
|
||||
return inventoryCheckLog.getData();
|
||||
|
|
|
|||
|
|
@ -276,31 +276,23 @@ public class InventoryPurchaseService extends BaseService {
|
|||
if (query.getPageSize() == null || query.getPageSize() == 0) {
|
||||
query.setPageSize(Constants.DetailPageSize);
|
||||
}
|
||||
query.setOffset((query.getPageNum() - 1) * query.getPageSize());
|
||||
Long totalCount = inventoryPurchaseMapper.countPurchaseCodesByGoodsName(query);
|
||||
if (totalCount == 0){
|
||||
return new Page<>();
|
||||
}
|
||||
|
||||
List<String> purchaseCodes = inventoryPurchaseMapper.listPurchaseCodesByGoodsName(query);
|
||||
|
||||
|
||||
|
||||
QueryWrapper<InventoryPurchase> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
if (query.getCode() != null && !query.getCode().isEmpty()) {
|
||||
queryWrapper.like("code", query.getCode().trim());
|
||||
if (purchaseCodes != null && !purchaseCodes.isEmpty()){
|
||||
queryWrapper.in("code", purchaseCodes);
|
||||
}
|
||||
if (query.getSupplierIds() != null && !query.getSupplierIds().isEmpty()) {
|
||||
queryWrapper.in("supplier_id", query.getSupplierIds());
|
||||
}
|
||||
if (query.getManagerUserIds() != null && !query.getManagerUserIds().isEmpty()) {
|
||||
queryWrapper.in("manager_user_id", query.getManagerUserIds());
|
||||
}
|
||||
if (query.getBeginTime() != null && !query.getBeginTime().isEmpty()) {
|
||||
LocalDateTime beginTime = DateUtil.getDateTime(query.getBeginTime());
|
||||
queryWrapper.ge("create_datetime", beginTime);
|
||||
}
|
||||
if (query.getEndTime() != null && !query.getEndTime().isEmpty()) {
|
||||
LocalDateTime endTime = DateUtil.getDateTime(query.getEndTime());
|
||||
queryWrapper.le("create_datetime", endTime);
|
||||
}
|
||||
Page<InventoryPurchase> page = pageHelper(query.getPageNum(), query.getPageSize(),
|
||||
queryWrapper, inventoryPurchaseMapper, "create_datetime", false);
|
||||
List<InventoryPurchase> purchaseList = inventoryPurchaseMapper.selectList(queryWrapper);
|
||||
List<InventoryPurchaseVo> voList = new ArrayList<>();
|
||||
for (InventoryPurchase inventoryPurchase : page.getList()) {
|
||||
for (InventoryPurchase inventoryPurchase : purchaseList) {
|
||||
InventoryPurchaseVo vo = new InventoryPurchaseVo();
|
||||
BeanUtils.copyProperties(inventoryPurchase, vo);
|
||||
vo.setManagerUserName(managerUserMapper.selectById(inventoryPurchase.getManagerUserId()).getName());
|
||||
|
|
@ -309,8 +301,8 @@ public class InventoryPurchaseService extends BaseService {
|
|||
}
|
||||
Page<InventoryPurchaseVo> resultPage = new Page<>();
|
||||
resultPage.setList(voList);
|
||||
resultPage.setTotal_count(page.getTotal_count());
|
||||
resultPage.setTotal_page(page.getTotal_page());
|
||||
resultPage.setTotal_count(totalCount);
|
||||
resultPage.setTotal_page((int) Math.ceil(totalCount / (double) query.getPageSize()));
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,53 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.syjiaer.clinic.server.mapper.inventory.InventoryPurchaseMapper">
|
||||
<sql id="purchaseQueryCondition">
|
||||
<where>
|
||||
<if test="query.goodsName != null and query.goodsName.trim() != ''">
|
||||
AND i.name LIKE CONCAT('%', #{query.goodsName}, '%')
|
||||
</if>
|
||||
<if test="query.code != null and query.code.trim() != ''">
|
||||
AND ip.code LIKE CONCAT('%', #{query.code}, '%')
|
||||
</if>
|
||||
<if test="query.supplierIds != null and !query.supplierIds.isEmpty()">
|
||||
AND ip.supplier_id IN
|
||||
<foreach item="id" collection="query.supplierIds" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="query.managerUserIds != null and !query.managerUserIds.isEmpty()">
|
||||
AND ip.manager_user_id IN
|
||||
<foreach item="id" collection="query.managerUserIds" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="query.beginTime != null and query.beginTime != ''">
|
||||
AND ip.create_datetime >= #{query.beginTime}
|
||||
</if>
|
||||
<if test="query.endTime != null and query.endTime != ''">
|
||||
AND ip.create_datetime <= #{query.endTime}
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
<select id="listPurchaseCodesByGoodsName" resultType="java.lang.String">
|
||||
SELECT code
|
||||
FROM "public"."inventory" as i
|
||||
Left JOIN inventory_purchase as ip ON i.inventory_purchase_code = ip.code
|
||||
<include refid="purchaseQueryCondition"/>
|
||||
GROUP BY ip.code
|
||||
ORDER BY ip.code DESC LIMIT #{query.pageSize}
|
||||
OFFSET #{query.offset}
|
||||
|
||||
</select>
|
||||
<select id="countPurchaseCodesByGoodsName" resultType="java.lang.Long">
|
||||
SELECT COUNT(*) AS total_count
|
||||
FROM (
|
||||
SELECT code
|
||||
FROM "public"."inventory" AS i
|
||||
LEFT JOIN inventory_purchase AS ip ON i.inventory_purchase_code = ip.code
|
||||
<include refid="purchaseQueryCondition"/>
|
||||
GROUP BY ip.code
|
||||
ORDER BY ip.code DESC
|
||||
) AS subquery;
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue